조립품에 코드를 작성하지 않고 쉘 코드를 만들 수 있습니까? ,조립하지 않고 쉘 코드 구성
(gdb) x/15i main
0x400506 <main>: push %rbp
0x400507 <main+1>: mov %rsp,%rbp
=> 0x40050a <main+4>: sub $0x20,%rsp
0x40050e <main+8>: mov %edi,-0x14(%rbp)
0x400511 <main+11>: mov %rsi,-0x20(%rbp)
0x400515 <main+15>: movq $0x4005d4,-0x10(%rbp)
0x40051d <main+23>: movq $0x0,-0x8(%rbp)
0x400525 <main+31>: lea -0x10(%rbp),%rax
0x400529 <main+35>: mov $0x0,%edx
0x40052e <main+40>: mov %rax,%rsi
0x400531 <main+43>: mov $0x4005de,%edi
0x400536 <main+48>: callq 0x4003f0 <[email protected]>
0x40053b <main+53>: mov $0x0,%eax
0x400540 <main+58>: leaveq
0x400541 <main+59>: retq
불행하게도 나는이 쉘 코드를 생성하는 데 사용할 수 없습니다 다음 얻을
#include <stdlib.h>
int main(int argc, char** argv)
{
char* args[] = { "/bin/bash", NULL };
execve("bin/bash", &args, NULL);
return 0;
}
그럼 난 그것을 컴파일하고 gdb를 사용 :
나는 다음과 같은 간단한 응용 프로그램을 컴파일하려고 전역 옵셋 테이블 [main + 48]을 사용하기 때문에.
어셈블리로 돌아 가지 않고 쉘 코드를 생성하려면 어떻게해야합니까?
쉘 코드로 직접 사용될 수 있습니다. – fuz