Если есть элементарные знания PE, там ничего непонятного быть не должно. Спрашивай более конкретно, по тем пунктам, которые непонятны.
1 -- Начало Происходит загрузка в стек кода программы? ============== shell_code_start: sub esp, 500 mov ecx, CODE_LEN mov edi, esp mov esi, code_start cld rep movsb jmp esp
retro Intel® 64 and IA-32 Architectures Software Developer's Manual v.1, 6.2. Intel® 64 and IA-32 Architectures Software Developer’s Manual v.2A, p.501. И так далее =)
code_start: jmp trick_to_avoid_nulls call_back: pop esi ;-------------------- ;-------------------- trick_to_avoid_nulls: jmp pi_offset К чему эти прыжки?
retro Ну я думал что нужно знать инструкции, а пытаться разобрать код без их знания - это как читать книгу на языке майя.
Инструкции инструкциями а вот прыжки туда-сюда call_back: pop esi с восстановлением esi не зная где и почему он изменялся --- и снова нужда в комментариях!!!
Код (Text): call call_back pop esi В esi будет адрес следующего за инструкцией call_back байта. Это данные, адрес которых нужно получить.
call - помещает в стек адрес возврата pop - достает из стека адрес возврата Имхо, тебе скорее не мануалы интеля нужны а опыт программирования/отладки на асме.
после API -- invoke GetProcAddress, hAddrLib, addr FuncName call eax и после вызова я имею на вершине стека адрес возврата для ret??! И где взять первоначальные значения регистров при поступлении проги в оперативку?
Что-то я тебя слегка не понимаю. После вызова апи ты ничего не имеешь, если правильно забил агументы в стек. После Код (Text): pi_offset: call call_back Ты имеешь на вершине стека адрес следующего байта после инструкции call. В данном случае это адрес vars_start. В отладчике глянуть, к примеру. Они все равно зависят от реализации загрузчика и на них нельзя полагаться как на что-то определенное.
retro Инструкция Pop r32 извлекает из Ss:[Esp] значение в регистр r32 и выполняет инкремент Esp(+4): Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B, p.205. Учите матчасть! Там расписаны все ваши вопросы по каждой инструкции.