Супер щяс переаеду ))Добавлено (12.10.2011, 20:04)
---------------------------------------------
Привет всем ......!!!!
Сейчас я говорю со том, как сделать хороший регистратор Адди ..... так что у не придется заново искать Адди, каждое обновление ....!!!!
Это сохранение и много времени
Давайте начнем ......
-------------------------------------------------- -----------------------------------------------
ПРОГРАММЫ & ТРЕБОВАНИЯ:
Visual C + + (я использую 6.0)
Мозг
Некоторые основам C + +, знание
Через несколько минут ...
-------------------------------------------------- ------------------------------------------------
Теперь откройте новый проект "Win32 Dynamic-Link Library", назовем его именем у хочу
Теперь добавим несколько глобальных переменных:
Код:
# Включить
# Включить
# Включить
использование имен STD / / необходимо для регистрации функции
ofstream ofile / / необходимо для регистрации функции
# Определять WIN32_LEAN_AND_MEAN
символ * GetDirectoryFile (символ * имя файла); / / getdirfile для регистрации функции
add_log недействительным __cdecl (сопзЬ сЬаг * FMT, ...); / / регистрация функции
недействительным thethread (); / / основная функция
символ dlldir [320];
В нашем DllMain (HMODULE hMod, DWORD dwReason, PVOID pvReserved):
Код:
CreateThread (0, 0, (LPTHREAD_START_ROUTINE) thethread, 0, 0, 0);
GetModuleFileName (hMod, dlldir, 512);
для (Int я = StrLen (dlldir); я> 0, я -) {если (dlldir [я] == '\ \') {dlldir [я +1] = 0; перерыва;}}
ofile.open (GetDirectoryFile ("WooWMyLog.txt"), IOS:: приложение);
MessageBox (NULL, "регистратор", "Давайте журнала некоторых Адди", MB_OK); / / не нужны
Мы должны добавить эти две функции, чтобы регистратор работает правильно:
Код:
символ * GetDirectoryFile (символ * имя файла) / / получить каталог DLL
{
статических символов путь [320];
зЬгсру (путь, dlldir);
strcat (путь, имя файла);
обратный путь;
}
add_log недействительным __cdecl (сопзЬ сЬаг * FMT, ...)// добавить журнал функции
{
если (ofile! = NULL)
{
если {возвращение;} (ДРМ!)
va_list va_alist;
символ logbuf [256] = {0};
va_start (va_alist, FMT);
_vsnprintf (logbuf + StrLen (logbuf), SizeOf (logbuf) - StrLen (logbuf), FMT, va_alist);
va_end (va_alist);
ofile < }
}
Теперь мы должны добавить еще 2 функции, 2 важные функции, поиск по адресу:
Код:
Ьоо Match (сопзЬ BYTE * PDATA, сопзЬ BYTE * bMask, сопзЬ сЬаг * szMask)
{
для (*; szMask; + + szMask, + + PDATA, + + bMask)
если (* szMask == 'х' & & * PDATA! =* bMask)
вернуться ложным;
возвращение (* szMask) == NULL;
}
DWORD FindPattern (DWORD dwAddress, DWORD dwLen, BYTE * bMask, символ * szMask)
{
для (DWORD = 0; я если (Match ((BYTE *) (dwAddress + я), bMask, szMask))
возвращения (DWORD) (dwAddress + я);
возврат 0;
}
После этого мы должны поставить последнюю функцию ", thethread":
Код:
недействительным thethread ()
{
/ / Код здесь
}
-------------------------------------------------- ------------------------------------------------
Теперь базы она будет закончена, но очень интересный вопрос:
"Как я могу добавить адрес??"
Давайте предположим, что когда-то у есть понимать метод просто добавить адрес ......
у необходимо:
1) последовательность байтов Адди (обычно первая 10/15 байт), это называется "массив байт"
2) Маска (говорит функций поиска, что байт изменения и какие байты статическая)
Пример есть:
Код:
DWORD = m_dwaddy FindPattern (0x400000, 0x01400000, (неподписанные символ *) "\ xB9 \ x00 \ x00 \ x00 \ x00 \ xF3 \ xA5 \ x00", "х ххх??");
add_log ("\ nFunction% \ nAddress: 0x% 0,6 X \ п", m_dwaddy);
Это журналы-то вроде этого:
Код:
Функция
Адрес: 0x000000
-------------------------------------------------- ------------------------------------------------
Но что это за цифры?
0x400000: начальный адрес ур исследования
0x01400000: конечный адрес ур исследования
\ XB9 \ x00 \ x00 \ x00 \ x00 \ xF3 \ xA5 \ x00: массива байтов
?? х ххх: Маска
х: статический байт
? : Не статичны байт
Таким образом, первый байт статического (с х), \ x00 \ x00 \ x00 \ x00 байты не статика (с?), Последние 3 байта являются статическими (с х).
статического байт dont изменения (Dont изменится после обновления)
не статичны байт изменится после обновления
-------------------------------------------------- ------------------------------------------------
Где / Как я могу поиск байт??
U может искать байт OllyDbg, в IDA Pro или с ур любимой программы.
Как я понимаю, что байт статического и то, что Арент?
легко, копировать массив выбранных Адди.
а затем ждать, пока не будет обновлять и исследования новых Адди с тем же ассемблерный код, что и старый (внимание: и не придется искать OLD Адди после обновления, или это будет неправильно)
затем сравнить два массива .....!!!!!
КОНЕЦ TUT
Если и не хотите, чтобы это сделать, есть плагин для OllyDbg, которые делают это автоматически ....
Я думаю, что я помогал u. ..
Кредиты: Я и людей, которые сделали некоторые функции
Скачать Плагин:
http://www.ucdownloads.com/downloads...o=file&id=4137
VirusTotal:
http://www.virustotal.com/it/analisi...97d-1244574222
Новинка! Нажмите на слова вверху, чтобы увидеть альтернативный перевод. Отказаться
Использовать Переводчик Google в следующих ситуациях:Поиск
Видео
Электронная почта
Телефон
Чат
Бизнес:Инструменты переводчика
Global Market Finder
Website Translator
О Переводчике GoogleОтключить моментальный переводКонфиденциальностьСправка