1. opcode -> assembly
[1] 파이썬 capstone library 이용하기
http://www.capstone-engine.org/lang_python.html
예) 24Byte shellcode 명령어
from capstone import *
CODE = b"\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80"
md = Cs(CS_ARCH_X86, CS_MODE_32)
for i in md.disasm(CODE, 0x1000):
print("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))
test.py에 저장 후 실행
[2] C파일에 넣어서 컴파일
char s[]="\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80";
int main(int argc, char **argv) {
return 0;
}
컴파일 후 gdb로 확인
2. assembly -> opcode
[1] nasm 사용하기
BITS 32
xor edx, edx
push edx
push 0x68732f6e
push 0x69622f2f
mov ebx, esp
push edx
push ebx
mov ecx, esp
lea eax, [edx+0xb]
int 0x80
를 sh.S에 저장 후
nasm sh.S
[2] C의 inline assembly
int main() {
__asm__ __volatile__(
"xor %edx, %edx\n\t"
"push %edx\n\t"
"push $0x68732f6e\n\t"
"push $0x69622f2f\n\t"
"mov %esp, %ebx\n\t"
"push %edx\n\t"
"push %ebx\n\t"
"mov %esp, %ecx\n\t"
"lea 0xb(%edx), %eax\n\t"
"int $0x80\n\t"
);
}
test.c에 넣고 gcc로 컴파일
'Documents' 카테고리의 다른 글
pip install시 UnicodeDecodeError 발생할 때 (0) | 2015.11.26 |
---|---|
Core Dump 파일 생성 (0) | 2015.11.03 |
hexdump 함수 (0) | 2015.09.02 |
Using Multiple(Virtual) Desktop in Windows 10 VMware (0) | 2015.08.22 |
Windows 10에서 MS Office 에러 (0) | 2015.08.19 |