我准备写个shellcode的解码程序。可怎么写都实现了不。贴出来望大家帮帮忙。我采用的编码方法是与0x61 XOR,下面两种方法都试了,都不行。我在VC下调试的时候,好像
xor byte ptr DS:[ebx + ecx], 0x61 这句不能执行,好像是因为不能对代码段进行写操作。具体原因也不知道。望高手指教~~~十分感谢~~~ -
- Void main()
- {
- __asm
- {
- lea eax,shell
- call eax
- }
- }
复制代码
这是我测试的主程序。 为了测试,我只实现这一句 mov eax,12345678h
编码例子一: -
- jmp decode_begin
- decode_start:
- pop ebx
- dec ebx
- xor ecx,ecx
- mov cl,0xff
- decode_loop:
- xor byte ptr DS:[ebx + ecx], 0x61
- loop decode_loop
- jmp decode_ok
- decode_begin:
- call decode_start
- decode_ok:
复制代码 code形式:
char shellcode[] =
\xEB\x0F\x5B\x4B\x33\xC9\xB1\xFF\x3E\x80\x34\x0B\x61\xE2\xF9\xEB\x05\xE8\xEC\xFF\xFF\xFF"
"\xD8\x19\x37\x55\x73" ;这个是经过编码的 mov eax,12345678h
编码例子二: -
- __asm
- {
- jmp decode_begin
- decode_start:
- mov esi,esp
- add esi,21h
- xor ecx,ecx
- mov ecx,0x12345601
- sub ecx,0x12345401
- decode_loop:
- xor byte ptr[esi],0x61
- inc esi
- loop decode_loop
- jmp decode_ok
- decode_begin:
- call decode_start
- decode_ok:
- }
复制代码 code形式:
char shellcode[] =
"\xEB\x1A\x8B\xF4\x83\xC6\x21\x33\xC9\xB9\x01\x55\x34\x12\x81\xE9\x01\x54\x34\x12\x80\x36\x61\x46\xE2\xFA\xEB\x05\xE8\xE1\xFF\xFF\xFF"
"\xD8\x19\x37\x55\x73"; |