吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4608|回复: 51
收起左侧

[分享] 实战去除程序自校验(学习笔记)

  [复制链接]
icer233 发表于 2024-12-15 20:08
本帖最后由 icer233 于 2024-12-17 00:19 编辑

实战去除程序自校验

视频讲解

讲师:小生我怕怕

<iframe src="//player.bilibili.com/player.html?isOutside=true&aid=113084140094980&bvid=BV1SApMepEmJ&cid=25621108394&p=1&autoplay=0" allowfullscreen="allowfullscreen" width="100%" height="500" scrolling="no" frameborder="0" sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts"> </iframe>

演示程序

豪迪群发助手

image-20241214200003610

解决网络验证

  1. 将主程序qqqf.exe拖入OD并搜索字符串, 找到00541879"已注册版本"

image-20241214194355902

  1. 0054187000541877下断点, 运行程序, 点击注册, 发现断下来了。右键查找常量, 输入cmp比较的变量00579F24。将搜索出来的操作全部下断点。

image-20241214200357590

  1. 重载程序并运行, 停在00541650

    0054164C   . /EB 02         jmp short qqqf.00541650
    0054164E   > |B2 01         mov dl,0x1
    00541650   > \8815 249F5700 mov byte ptr ds:[0x579F24],dl
    00541656   .  83F8 0C       cmp eax,0xC
    00541659   .  75 48         jnz short qqqf.005416A3

    可以看到00541650是赋值变量为dl的值, 而在0054164Edl被赋值为1, 即这行代码就是给变量赋值为1

    可以猜测赋值为1是已注册, 0就是为注册, 如果后面又给这个变量赋值为0, 那我们的破解就白费了

  2. 这里给段首0054159C下断点, 重载并运行, 停下后F8单步跟

      00541640   .  83F8 18       cmp eax,0x18
      00541643   .  74 09         je short qqqf.0054164E
      00541645   .  83F8 0C       cmp eax,0xC
      00541648   .  74 04         je short qqqf.0054164E

    上面两个比较比较12(0xC)和24(0x18), 应该是在比较注册码长度, 如果长度不在范围内就会跳掉

  3. 0054164A   .  33D2          xor edx,edx
    0054164C   .  EB 02         jmp short qqqf.00541650
    0054164E   >  B2 01         mov dl,0x1
    00541650   >  8815 249F5700 mov byte ptr ds:[0x579F24],dl

    我们在00541648这里改一个jmp,让dl赋值为1

  4. 继续F8步过, 发现

    00541656   .  83F8 0C       cmp eax,0xC
    00541659   .  75 48         jnz short qqqf.005416A3

    要把00541659nop掉, 防止jnz跳过后面的赋值

  5. 继续单步, 看到

    00541687   .  E8 8430ECFF   call qqqf.00404710
    0054168C   .  75 0A         jnz short qqqf.00541698
    0054168E   .  8B07          mov eax,dword ptr ds:[edi]
    00541690   .  E8 177EFCFF   call qqqf.005094AC
    00541695   .  40            inc eax
    00541696   .  7F 04         jg short qqqf.0054169C
    00541698   >  33C0          xor eax,eax

    0054168C这个jnz也必须nop,不能让它跳过00541696这个赋值的位置。

  6. 然后我们继续来到00541696这一行,我们将它改为jmp,需要让它赋值为1

  7. 保存修改, 随便输入12位注册码, 竟然失败了

    image-20241214213236087

  8. 再次载入OD,发现破解过程应该没问题,已经赋值为1了,再次搜索字符串,发现了“正在验证”四个字,我们在这里回车进去, 找到段首005408C8直接retn使它脱离网络验证

  9. 测试一下, 随意输入, 注册成功, 可以添加表情等, 但是随机字符等功能没法使用, 出现了暗桩

    image-20241214213629619

查找自校验

  1. Winhex随意修改原主程序, 发现功能失效, 这是因为文件的md5发生了变化(可以采用补丁破解)

    image-20241214213959847

  2. 使用脚本脱壳脚本\各语言按钮事件\Delphi & VB事件断点查找脚本.osc(下载地址)

  3. 打开OD, 运行该脚本

    image-20241214214629445

  4. 这样就查找到了所有按钮事件并打上了断点

    image-20241214214709686

  5. 运行程序, 点击"插入其他", 触发断点, 先禁用这个断点, 再点击"插入其他"里的"随机数字"触发第二个断点, 记住位置, 将其他断点删除, 开始单步过

  6. 计算一下我们修改后的程序md5

    image-20241214215836703

  7. 找到这个call, F7进入

    00567F5F  |.  E8 5CAEF4FF   call qqqf3.004B2DC0
  8. 找到了这里

    004B2E3D    8B45 F0         mov eax,dword ptr ss:[ebp-0x10]
    004B2E40    8D55 F8         lea edx,dword ptr ss:[ebp-0x8]
    004B2E43    E8 ECF0FFFF     call qqqf3.004B1F34

    在数据窗口中跟随后, 发现就是我们文件的md5

    image-20241214220051344

  9. 计算原版md5为11ea70a3c3735c29b48552776756406a, 直接在数据窗口里替换

  10. 功能恢复正常!

去除自校验

  1. 找一段空的地址, 如0056B0A0

    image-20241214223518373

  2. 004B1F74改成jmp 0056B0A0

    image-20241214223655066

  3. 第一行输入pushad(堆栈平衡)

  4. 然后我们看一下,原来004B1F74那里是用ebp-0x14赋值ebx,所以这里我们要对ebp-0x14赋值

    输入mov dword ptr ss:[ebp-0x14],0x0, 在数据窗口中改为正版md5

    image-20241215193945081

  5. 再将0x0改为堆栈窗口中的0xA370EA11

    image-20241215194026069

  6. 第一个操作数每次减4,16个字节需要写入四次(我们要想写入原来的md5数据就要用这个值,数据窗口中我们看到每4个字节就要进行一次写入)

    0056B0A1  C745 EC 11EA70A3 mov dword ptr ss:[``ebp``-0x14],0xA370EA11
    0056B0A8  C745 F0 C3735C29 mov dword ptr ss:[``ebp``-0x10],0x295C73C3
    0056B0AF  C745 F4 B4855277 mov dword ptr ss:[``ebp``-0xC],0x775285B4
    0056B0B6  C745 F8 6756406A mov dword ptr ss:[``ebp``-0x8],0x6A405667
  7. 逐句将原来的代码写入

    004B1F74    8D5D EC         lea ebx,dword ptr ss:[ebp-0x14]
    004B1F77    8D55 E8         lea edx,dword ptr ss:[ebp-0x18]
    004B1F7A    33C0            xor eax,eax
    004B1F7C    8A03            mov al,byte ptr ds:[ebx]
    004B1F7E    E8 35F1FFFF     call qqqf3.004B10B8
    004B1F83    8B55 E8         mov edx,dword ptr ss:[ebp-0x18]
    004B1F86    8BC7            mov eax,edi
    004B1F88    E8 3F26F5FF     call qqqf3.004045CC
    004B1F8D    43              inc ebx
    004B1F8E    4E              dec esi
    004B1F8F  ^ 75 E6           jnz short qqqf3.004B1F77

    其中jnz short qqqf3.004B1F77要改成我们的新位置0056B0C0

    下一行输入popad堆栈平衡, 然后jmp 004B1F91跳回去!

    image-20241215195146240

  8. 至此, 破解成功!

总结

原程序逻辑

  • 按钮事件
  • 检验是否注册
  • 检验md5

破解逻辑

  • 找到注册部分并爆破
  • 去除网络验证
  • 发现md5验证
  • 查找按钮事件
  • 找到md5验证部分代码
  • 修改代码跳到空白区, 给程序一个假md5(正版md5)
  • 同时复制原来的校验代码(注意堆栈平衡)
  • 跳回去继续原流程


如果您有多余的热心值,请不要吝惜,谢谢

免费评分

参与人数 9吾爱币 +9 热心值 +5 收起 理由
jandy993 + 1 我很赞同!
GuizhenYesou + 1 + 1 谢谢@Thanks!
reveriexue + 1 + 1 谢谢@Thanks!
唐小样儿 + 1 + 1 我很赞同!
≯美心遥控门≮ + 1 谢谢@Thanks!
Toast + 1 我很赞同!
dongbin1637 + 1 + 1 谢谢@Thanks!
ma4907758 + 1 谢谢@Thanks!
woyucheng + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

dongbin1637 发表于 2024-12-16 07:47
大佬能实操下这个软件吗
批量PDF自定义提取指定区域内容重命名
百度网盘:https://pan.baidu.com/s/1FjWiKqt93ECiVqNKmeOJOA?pwd=8866
腾讯网盘:https://share.weiyun.com/yw15BsM7
 楼主| icer233 发表于 2024-12-16 22:15
dongbin1637 发表于 2024-12-16 07:47
大佬能实操下这个软件吗
批量PDF自定义提取指定区域内容重命名
百度网盘:https://pan.baidu.co ...

这不是免费软件吗。验证码也不用花钱啊。虽然写了试用版但是有效期100年,而且我也没找到哪里可以注册
laoser 发表于 2024-12-15 20:34
submariner 发表于 2024-12-15 21:22
看完这个教程,受到不小启发~!
zsy816 发表于 2024-12-16 00:11
学习一下
头像被屏蔽
pomxion 发表于 2024-12-16 01:32
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
pomxion 发表于 2024-12-16 01:34
提示: 作者被禁止或删除 内容自动屏蔽
Jone2008 发表于 2024-12-16 07:29
高端。。。小白菜看都看不懂。。。哈哈
asmprofan 发表于 2024-12-16 07:34

学习一下
70后社工 发表于 2024-12-16 07:35

学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-6-15 03:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表