zzeus学习


VMP壳   脱壳后 自动生成文件

修复OEP

输入表 UIF 去弄

Importrec   去修复   要看准


右键-》高级-》选择区段 -》FULL DUMP -》修改这个生成的文件就行了

查看按钮事件   按钮事件入口被VMP掉了

进去看到   jmp  xxxxx    就是VMP入口

右键  ZEUS   分析  

看LOG窗口

寻找   Cpuid antidumo 的重要handler  VM_Cpuid

复制一行···········································

跳过去下断   

F9  F8```````````````````````````````````````

看到Cpuid 记录下脱壳机器的cpuid信息,也就是寄存器eax,ebx,ecx,edx的值

记录 下 cpuid 下面几行  和  寄存器值

重来 !!!!!!!!!!!!!!!!!!!!!!!!!

HOOK 它到 OEP附近

将刚才的值赋值到······寄存器  跳回原来的地址

多点几次会崩溃···································

VMP的随机检验······························

同样的方法   跑到按钮事件入口

断下   分析···································

找到   VM_Rdtsc  随机检测············

断下·········

记录检测的  eax edx  和  跳过去的 几行代码(rdtsc)

将 rdtsc 下面的call 下  跳入 空白指令处

PATCH  eax,edx ·

·····································

之后就正常运行了···················································

优化VMP CFF软件区优化

修改区段为 va 为1000    RA为 1000

对齐    重建····························


指令过程···········································································································································
脱壳后:
00403285    E8 511B0000     call UnPackMe.00404DDB
0040328A  ^ E9 19FFFFFF     jmp UnPackMe.004031A8
0040328F    8BFF            mov edi,edi                  ; this is OEP or Near OEP!
00403291    55              push ebp
00403292    8BEC            mov ebp,esp
00403294    83EC 10         sub esp,10
00403297    A1 84904000     mov eax,dword ptr ds:[409084]


生成的文件:
0058D530 >  E8 CBFBFFFF     call De_UnPac.0058D100
0058D535    B8 8F324000     mov eax,De_UnPac.0040328F
0058D53A    FFD0            call eax                 //跳转到源文件脱壳后到达的地址
0058D53C    C3              retn
0058D53D    CC              int3
0058D53E    CC              int3
0058D53F    CC              int3
0058D540    0000            add byte ptr ds:[eax],al
0058D542    0000            add byte ptr ds:[eax],al
0058D544    0000            add byte ptr ds:[eax],al

修改为:
0058D530 >  E8 CBFBFFFF     call De_UnPac.0058D100
0058D535    B8 40D55800     mov eax,De_UnPac.0058D540 //修改为到下面执行
0058D53A    FFD0            call eax
0058D53C    C3              retn
0058D53D    CC              int3
0058D53E    CC              int3
0058D53F    CC              int3
0058D540    68 5DCE4A00     push De_UnPac.004ACE5D    //这个是源文件脱壳后的一个压入堆栈的值
0058D545  - E9 455DE7FF     jmp De_UnPac.0040328F     //跳
0058D54A    0000            add byte ptr ds:[eax],al
0058D54C    0000            add byte ptr ds:[eax],al


Log data, item 212
 Address=0040B01C
 Message=2B: 522840C6 ---> 0040B01C[VM_Cpuid         


0040B5BB    0FA2            cpuid
0040B5BD    68 0D7D05AF     push AF057D0D
0040B5C2    60              pushad
0040B5C3    83ED 0C         sub ebp,0C
0040B5C6    66:0FBAE4 01    bt sp,1
0040B5CB    837D 0C 01      cmp dword ptr ss:[ebp+C],1


HOOK  掉EAX,ECX,EDX,EBX
EAX 000206A7
ECX 02982203
EDX 0FEBFBFF
EBX 00010800 UNICODE " FilesMicrosoft Visual StudioVC98lib"
ESP 0012FA34
EBP 0012FB04


rdtsc:


0040C415    9C              pushfd
0040C416    83ED 08         sub ebp,8
0040C419    885C24 04       mov byte ptr ss:[esp+4],bl
0040C41D    52              push edx
0040C41E    882C24          mov byte ptr ss:[esp],ch
0040C421    FF7424 04       push dword ptr ss:[esp+4]

HOOK掉  EAX,EDX
EAX D37FA7AB
ECX 0040BF5F offset <3.VM_Rdtsc>
EDX 00002180
EBX BA9EA8A0














原文地址:https://www.cnblogs.com/zcc1414/p/3982490.html