分析一下Demo的VM
转载 nooby 大牛的。嘎嘎 大家可以好好看看~加了个xp记事本,v了1007568的函数,来到vm入口
01007568 E8 05B60A00 call 010B2B72
010B2B72 8D6424 04 lea esp, dword ptr
010B2B76 68 2FD90900 push 0x9D92F //push pcode
010B2B7B E8 8AC3FFFF call 010AEF0A //进vm
010AEF0A 60 pushad //保存寄存器环境
010AEF0B 9C pushfd //保存符号
010AEF0C 8D6C24 2C lea ebp, dword ptr //ebp = real esp
010AEF10 896C24 10 mov dword ptr , ebp//fix esp
010AEF14 83EC 10 sub esp, 0x10//分配vm context
010AEF17 8BFC mov edi, esp//edi指向vm context
010AEF19 8B75 FC mov esi, dword ptr //取pcode
010AEF1C 81C6 00300101 add esi, 01013000//重定位
010AEF22^ E9 5FFFFFFF jmp 010AEE86
010AEE86 FC cld //清符号
010AEE87 0FB606 movzx eax, byte ptr //取pcode
010AEE8A 46 inc esi //增加vm eip
010AEE8B 80C0 00 add al, 0x0 //解码pcode
010AEE8E 8B0485 5D020B01 mov eax, dword ptr //查表
010AEE95 81C0 00300101 add eax, 01013000 //重定位
010AEE9B E9 DB110000 jmp 010B007B
010B007B 8BE7 mov esp, edi //平栈
010B007D 50 push eax //jmp eax
010B007E C3 retn
handler记录一下
GetI32 10B0718
Reloc
SetEip
GetI32 10075BA
GetI32 FFFFFFFC
GetR32 vmcontext + 0x20
Add32
SetR32 vmcontext + 0x4
SetR32 vmcontext + 0x20
GetI32 10B0FCD
Reloc
SetEip
GetI32 00000000
RmFs32
SetR32 vmcontext + 0x30
对照原版
01007568 68 BA750001 push 0x10075BA
0100756D 64:A1 00000000mov eax, dword ptr fs:
因为pcode是乱序的,非要跟了才知道往哪走,后面的没时间人肉了,我只是抛砖,等你们发挥。 这个有什么用啊,分析出来有钱吗?
页:
[1]