У меня небольшой опыт работы с GDB и переполнениями. Поэтому я могу догадаться, что делает конкретный c код ассемблера.
Но теперь у меня есть шелл-код, который я хотел бы изучить.
Вывод шелл-кода из ndisasm:
00000000 31C3 xor ebx,eax
00000002 8066C2B8 and byte [esi-0x3e],0xb8
00000006 720A jc 0x12
00000008 C29931 ret 0x3199
0000000B C3 ret
0000000C 9BC2B302 wait ret 0x2b3
00000010 C3 ret
00000011 B7C3 mov bh,0xc3
00000013 B3C2 mov bl,0xc2
00000015 89C3 mov ebx,eax
00000017 8331C3 xor dword [ecx],byte -0x3d
0000001A 8040C38D add byte [eax-0x3d],0x8d
0000001E C2 db 0xc2
0000001F 80 db 0x80
Но я не знаю, как получить подсказку для конкретной функции c, например, if (read (fd, buf, 512) <= 2). </p>
shellcode = \ x31 \ xc0 \ x66 \ xb8 \ x72 \ x0a \ x99 \ x31 \ xdb \ xb3 \ x02 \ xf7 \ xf3 \ x89 \ xc3 \ x31 \ xc0 \ x40 \ xcd \ x80
С чего начать с задачи как это?