实战破解000- 短信轰炸机的爆破
软件截图

-
-
[找到第一个验证CALL]
-
[找到第二个验证CALL]
-
[总结两个验证CALL的作用]
-
[效果图]
-
-
爆破
X96Dbg附加上去 , 有壳子 ,转到0X401000

是易语言程序的特征 , 并且没有将代码VM , 搜索特征码FF55FC5F5E(易语言按钮事件)

E-Debug分析一下 , 单步跟踪进去

判断编辑框1是否有内容

将40B42F其改成jmp ,40B4C1是判断编辑框2是否有内容 , 也改成jmp

单步跟踪到40B59F,进入了第一个验证CALL(0040BF09) , 返回 “ 账号不能为空” ,在这下上断点,我们修改编辑框1内容

账号不为空的时候返回 eax:""签名错误""

因为我们没有正版卡密,所以无法知道这个验证CALL应该返回什么值,给验证CALL打上标签,并在验证CALL下上断点,防止第二次验证,让我们继续往下跟,发送token,我不知道token是啥,在未来的网络验证编写后,一定补上这个知识点

单步到这里 , 发现一个长跳转 , 按下G键 , 打开流程图

我们要跳转的地方,要执行的代码太少了 (我们优先让代码走更多的代码)将0040B66E NOP掉

往下单步 , 走到了 这个地方 , 0040B6A0 , 0040B6C0 , 应该是属于验证回调,EAX为回调ID
0040B691 | 8D45 FC | lea eax,dword ptr ss:[ebp-4] | [ebp-4]:"\"签名错误\""
0040B694 | 50 | push eax |
0040B695 | 8D45 F8 | lea eax,dword ptr ss:[ebp-8] | [ebp-8]:&"{(K"
0040B698 | 50 | push eax |
0040B699 | 8B0424 | mov eax,dword ptr ss:[esp] |
0040B69C | 8B00 | mov eax,dword ptr ds:[eax] |
0040B69E | 8B00 | mov eax,dword ptr ds:[eax] |
0040B6A0 | FF50 0C | call dword ptr ds:[eax+C] |
0040B6A3 | B8 EFD15600 | mov eax,短电炸死你.56D1EF | 56D1EF:"user"
0040B6A8 | 8945 F4 | mov dword ptr ss:[ebp-C],eax | [ebp-C]:"user"
0040B6AB | 8D45 F4 | lea eax,dword ptr ss:[ebp-C] | [ebp-C]:"user"
0040B6AE | 50 | push eax |
0040B6AF | 8D45 F8 | lea eax,dword ptr ss:[ebp-8] | [ebp-8]:&"{(K"
0040B6B2 | 50 | push eax |
0040B6B3 | 8B0424 | mov eax,dword ptr ss:[esp] |
0040B6B6 | 8B00 | mov eax,dword ptr ds:[eax] |
0040B6B8 | 8B00 | mov eax,dword ptr ds:[eax] |
0040B6BA | FF50 24 | call dword ptr ds:[eax+24] |
0040B6BD | 8945 F0 | mov dword ptr ss:[ebp-10],eax |
0040B6C0 | 8B5D F4 | mov ebx,dword ptr ss:[ebp-C] | [ebp-C]:"user"

继续往下跟踪 , 还会有几个进 "回调"CALL的地址 不管他们
0040B787 ->0040B828 ,一段很多参数的CALL , 很多参数一般不管他,F8步过

EAX变为了0,没啥用,给这个CALL(00407CEE)打上未知CALL , F8下去
单步走下去遇到了第二个验证 0040C265 , 返回值eax:""签名错误""

往下单步,出现文本比较,5849E0:""验证成功"" - [ebp-10]:""签名错误""

看来 0040C265 验证2CALL是关键CALL 了 , 将其修改成这样

载入功能窗口了 , F9运行起来

弹出"验证成功",看来0040C265是判断是否是VIP ,00407CEE是判断用户操作是否合法

测试功能(正常) 保存补丁

效果图

请勿用于非法用途,后果自负!