首页
社区
课程
招聘
未解决 [求助]最终还是过不了VMP这一关,愁!
发表于: 2021-4-11 23:41 4647

未解决 [求助]最终还是过不了VMP这一关,愁!

2021-4-11 23:41
4647

拿一工作中常用的软件练手,非VIP账号有功能限制。点击VIP功能会随机弹出提示:

第一步,查壳:

嗯,VMP,头大,硬着头皮看看。

x64dbg载入,因为软件启动没有限制,只是VIP功能限制,所以F9让它运行起来。

随便点击一个VIP功能,看看弹出的提示,肯定不是消息,像一个窗口,用 bp CreateWindow、bp CreateWindowEx(A)下断,居然提示无效地址。

尝试用bp ShowWindow下断,居然成功。

然后F8单歩运行,软件一直在qtgui4.dll、qtcore4.dll和系统领空中转,最终回到了主程序的领空(有时候软件会异常终止,不知道咋回事,F8时不要太快):


0137FEFB | 9C                                 | pushfd                                  |

0137FEFC | 8D6424 28                    | lea esp,dword ptr ss:[esp+28]           |

0137FF00 | E9 C4DFFFFF                 | jmp cadreader.137DEC9                   |

0137FF05 | A2 A69B8B45               | mov byte ptr ds:[458B9BA6],al           |

0137FF0A | F0                                 | ???                                     |

0137FF0B | 8975 FC                        | mov dword ptr ss:[ebp-4],esi            |

0137FF0E | F0:0FC130                     | lock xadd dword ptr ds:[eax],esi        |

0137FF12 | E9 32010000                 | jmp cadreader.1380049                   |

0137FF17 | 83F8 02                         | cmp eax,2                               |           //非VIP账号,eax有时候是0,有时候是4

0137FF1A | 75 35                            | jne cadreader.137FF51                   |    //非VIP账号,这里会跳

0137FF1C | 6A 04                            | push 4                                  |

0137FF1E | E8 FD52A400                | call <JMP.&??2@YAPAXI@Z>                |

0137FF23 | C700 02000000            | mov dword ptr ds:[eax],2                |

0137FF29 | 83C4 04                        | add esp,4                               |

0137FF2C | C745 FC FFFFFFFF         | mov dword ptr ss:[ebp-4],FFFFFFFF       |

0137FF33 | 8B55 08                         | mov edx,dword ptr ss:[ebp+8]            |

0137FF36 | 8902                              | mov dword ptr ds:[edx],eax              |

0137FF38 | 8B45 F0                         | mov eax,dword ptr ss:[ebp-10]           |

0137FF3B | 83C9 FF                         | or ecx,FFFFFFFF                         |

0137FF3E | F0:0FC108                      | lock xadd dword ptr ds:[eax],ecx        |

0137FF42 | 0F85 10010000              | jne cadreader.1380058                   |

0137FF48 | 8B55 F0                          | mov edx,dword ptr ss:[ebp-10]           |

0137FF4B | 52                                  | push edx                                |

0137FF4C | E9 FE000000                  | jmp cadreader.138004F                   |

0137FF51 | 83F8 03                          | cmp eax,3                               |

0137FF54 | 75 2B                              | jne cadreader.137FF81                   |      //非VIP账号,这里会跳

0137FF56 | 6A 04                             | push 4                                  |

0137FF58 | E8 C352A400                 | call <JMP.&??2@YAPAXI@Z>                |

0137FF5D | 83C4 04                         | add esp,4                               |

0137FF60 | 837D E0 64                    | cmp dword ptr ss:[ebp-20],64            | 64:'d'

0137FF64 | C745 FC FFFFFFFF         | mov dword ptr ss:[ebp-4],FFFFFFFF       |

0137FF6B | 75 10                             | jne cadreader.137FF7D                   |

0137FF6D | 8B4D 08                        | mov ecx,dword ptr ss:[ebp+8]            |

0137FF70 | C700 03000000             | mov dword ptr ds:[eax],3                |

0137FF76 | 8901                              | mov dword ptr ds:[ecx],eax              |

0137FF78 | E9 C2000000                 | jmp cadreader.138003F                   |

0137FF7D | 8918                              | mov dword ptr ds:[eax],ebx              |

0137FF7F | EB B2                             | jmp cadreader.137FF33                   |

0137FF81 | 83F8 04                         | cmp eax,4                               |

0137FF84 | 75 2A                            | jne cadreader.137FFB0                   |

0137FF86 | 68 D0070000                | push 7D0                                |

0137FF8B | 51                                 | push ecx                                |

0137FF8C | 8BC4                             | mov eax,esp                             |

0137FF8E | 8965 D8                        | mov dword ptr ss:[ebp-28],esp           |

0137FF91 | 53                                 | push ebx                                |

0137FF92 | 68 509EFD01                | push cadreader.1FD9E50                  | 1FD9E50:"Server illegal"  //服务器未授权

0137FF97 | 50                                 | push eax                                |

0137FF98 | FF15 F02CFD01            | call dword ptr ds:[<&?tr@QObject@@SA?AV |

0137FF9E | 83C4 0C                        | add esp,C                               |

0137FFA1 | 53                                 | push ebx                                |

0137FFA2 | 8D4D BC                      | lea ecx,dword ptr ss:[ebp-44]           |

0137FFA5 | E8 B66C1500                | call cadreader.14D6C60                  |

0137FFAA | C645 FC 05                  | mov byte ptr ss:[ebp-4],5               |

0137FFAE | EB 64                            | jmp cadreader.1380014                   |

0137FFB0 | 3BC3                             | cmp eax,ebx                             |

0137FFB2 | 75 2A                            | jne cadreader.137FFDE                   |

0137FFB4 | 68 D0070000                | push 7D0                                |

0137FFB9 | 51                                 | push ecx                                |

0137FFBA | 8BD4                            | mov edx,esp                             |

0137FFBC | 8965 D8                       | mov dword ptr ss:[ebp-28],esp           |

0137FFBF | 53                                 | push ebx                                |

0137FFC0 | 68 389EFD01               | push cadreader.1FD9E38                  | 1FD9E38:"Serve Internal Error"  //服务器内部错误

0137FFC5 | 52                                 | push edx                                |

0137FFC6 | FF15 F02CFD01            | call dword ptr ds:[<&?tr@QObject@@SA?AV |

0137FFCC | 83C4 0C                       | add esp,C                               |

0137FFCF | 53                                 | push ebx                                |

0137FFD0 | 8D4D BC                      | lea ecx,dword ptr ss:[ebp-44]           |

0137FFD3 | E8 886C1500                | call cadreader.14D6C60                  |

0137FFD8 | C645 FC 06                  | mov byte ptr ss:[ebp-4],6               |

0137FFDC | EB 36                           | jmp cadreader.1380014                   |

0137FFDE | 6A 04                           | push 4                                  |

0137FFE0 | E8 3B52A400                | call <JMP.&??2@YAPAXI@Z>                |

0137FFE5 | 8918                             | mov dword ptr ds:[eax],ebx              |

0137FFE7 | E9 3DFFFFFF                 | jmp cadreader.137FF29                   |

0137FFEC | 68 D0070000               | push 7D0                                |

0137FFF1 | 51                                 | push ecx                                |

0137FFF2 | 8BC4                             | mov eax,esp                             |

0137FFF4 | 8965 D8                        | mov dword ptr ss:[ebp-28],esp           |

0137FFF7 | 53                                  | push ebx                                |

0137FFF8 | 68 0C9EFD01                | push cadreader.1FD9E0C                  | 1FD9E0C:"Network connection is failed, please retry"

0137FFFD | 50                                | push eax                                |

0137FFFE | FF15 F02CFD01            | call dword ptr ds:[<&?tr@QObject@@SA?AV |

01380004 | 83C4 0C                      | add esp,C                               |

01380007 | 53                                | push ebx                                |

01380008 | 8D4D BC                     | lea ecx,dword ptr ss:[ebp-44]           |

0138000B | E8 506C1500               | call cadreader.14D6C60                  |

01380010 | C645 FC 07                  | mov byte ptr ss:[ebp-4],7               |

01380014 | 8D4D BC                     | lea ecx,dword ptr ss:[ebp-44]           |

01380017 | E8 146C1500               | call cadreader.14D6C30                  |

0138001C | 6A 04                          | push 4                                  |           //回到这里

0138001E | E8 FD51A400              | call <JMP.&??2@YAPAXI@Z>                |

01380023 | 8B4D 08                      | mov ecx,dword ptr ss:[ebp+8]            |

01380026 | 8918                            | mov dword ptr ds:[eax],ebx              |

01380028 | 8901                            | mov dword ptr ds:[ecx],eax              |

0138002A | 83C4 04                      | add esp,4                               |

0138002D | 8D4D BC                     | lea ecx,dword ptr ss:[ebp-44]           |

01380030 | 885D FC                      | mov byte ptr ss:[ebp-4],bl              |

01380033 | E8 D86B1500              | call cadreader.14D6C10                  |

01380038 | C745 FC FFFFFFFF       | mov dword ptr ss:[ebp-4],FFFFFFFF       |

0138003F | 8B55 F0                       | mov edx,dword ptr ss:[ebp-10]           |

01380042 | 83C8 FF                       | or eax,FFFFFFFF                         |

01380045 | F0:0FC102                   | lock xadd dword ptr ds:[edx],eax        |

01380049 | 75 0D                          | jne cadreader.1380058                   |

0138004B | 8B4D F0                      | mov ecx,dword ptr ss:[ebp-10]           |

0138004E | 51                                | push ecx                                |

0138004F | FF15 202DFD01          | call dword ptr ds:[<&?free@QString@@CAX |

01380055 | 83C4 04                      | add esp,4                               |

01380058 | 8B4D F4                      | mov ecx,dword ptr ss:[ebp-C]            |

0138005B | 64:890D 00000000     | mov dword ptr fs:[0],ecx                |

01380062 | 59                       | pop ecx                                 |

01380063 | 5F                       | pop edi                                 |

01380064 | 5E                       | pop esi                                 |

01380065 | 5B                       | pop ebx                                 |

01380066 | 8BE5                     | mov esp,ebp                             |

01380068 | 5D                       | pop ebp                                 |

01380069 | C3                       | ret                                     |

代码往上看,发现了熟悉的提示信息。

在0137FF1A处,可以把跳转nop掉,但又出现了另一个问题,在调试时修改,原来的提示信息没了,继续跳出要购买VIP的窗口。但用UE修改后运行,软件会弹出丢失组件的错误信息,关闭就退出了,应该是自校验的问题。

调试时发现是动态基址,用CFF修改后运行,也会弹出丢失组件的信息,同样会自校验。

本想继续跟下这个自校验,然后就进入了VMP的伪指令中,完全摸不着头脑,就没有然后了……


有没有大神把这个VMP的壳给脱了?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 36318
活跃值: (7170)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
原先长啥样,
加壳变异后长啥样,
特征代码提出来,再试着对比改
说的容易做着难,多试才能掌握门道
2021-4-12 06:54
0
雪    币: 15031
活跃值: (6243)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

要玩破解还是要具备一些基础和常识的。
服务器校验,修改客户端是没用的。(除非有漏洞利用)

最后于 2021-4-12 07:48 被tDasm编辑 ,原因:
2021-4-12 07:47
0
雪    币: 3998
活跃值: (5131)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
vmp,盖实者实繁,克终者盖寡!
2021-4-12 10:13
1
游客
登录 | 注册 方可回帖
返回
//