0

Я изучаю работу вредоносного ПО (Blackhole Exploit), где я извлек шеллкод из вредоносного кода. Я понял все, кроме поиска строки байтов. Может ли кто-нибудь помочь мне в этом? Почему этот шеллкод (большинство вредоносных шеллкодов) ищет эту конкретную строку? код поиска выглядит следующим образом:Шеллкод, ищущий байты String: 0C330408Bh

mov eax, 0C330408BH; 
inc esi 
cmp dword ptr [esi], eax 
jne //back to top// 

ответ

2

Если взять волшебные байты, конвертировать их в прямой порядок байтов и демонтирует, вы получите следующее:

8B 40 30 mov  eax, [eax+30h] 
C3   retn 

Итак, Шеллкод поиск для этой последовательности инструкций. Я не уверен на 100%, но я думаю, что он используется для поиска изображения kernel32 в памяти (поскольку эта последовательность обычно встречается там).

+3

Да, он используется для поиска образа kernel32 в памяти. Спасибо за разъяснения. Но все же я удивляюсь, почему автор не жестко кодирует его, а не дает поиск по байтовой строке? – Abhineet

+1

Hardcode what? kernel32 может быть где угодно с ASLR. –

3

В дополнение к ответу Игоря, я рекомендую вам прочитать эту статью http://skypher.com/index.php/2010/11/17/bypassing-eaf/. Код ищет конкретные инструкции в системных DLL, чтобы использовать их для чтения или записи данных из/в произвольные места в памяти. Поэтому для использования этого кода просто поместите (адрес-0x30) в eax и вызовите последовательность выше.