破解注册程序之内部注册机(在内存中找到注册码)

0x00 前言

注册机的分为内部注册机和外部注册机,本次的破解目标就为内部注册机。破解的方法名为跟踪调试法,指在调试过程中找到其中一点作为突破口,顺藤摸瓜,最终得到自己想要的数据。


0x01 超级屏幕录像专家的破解

0x10 运行程序,找关键字符

首先尝试运行程序,获取关键字符串。(这里我已经注册过了,但不影响我们破解这个程序)

image-20201122230207510

0x11 查壳 -> 无壳

然后就是使用 PE 工具查壳(查壳文件本身,而不是桌面的快捷方式):

image-20201122230344298

0x12 OD 载入,跟踪调试

无壳,老规矩,拖入 OD 直接调试,搜索字符串就直接看到了关键字符串:

image-20201122230617975

双击跳转过去,找到对应的 call,下断点,然后运行:

image-20201122230827701

软件自行打开,找到注册,随机输入账号密码点击确定,程序就在断点处停了下来:

image-20201122231121170

进 call F7 单步步入,跳 call F8 单步步过。一步一步慢慢来。

0x13 得到正确的注册码

随即就在寄存器里发现了正确的注册码:

image-20201122231323133

关闭调试程序,然后打开原程序,用户名不变,进行注册即可。

image-20201122231615630

0x02 现代汉语词典的破解

0x20 关键字符串

该程序不需要安装,点击 exe 文件即可运行:

image-20201122232417320

0x21 查壳脱壳

可以看到这个这个软件未注册,并且许多功能都未开放。先查壳,发现有壳(Aspack):

image-20201122232649430

选择手动脱壳或者自动脱壳皆可,很简单的就脱了壳。

0x22 OD 载入

拿到了程序,然后 OD 打开搜索字符串下断点:

image-20201123000027008 image-20201123000116675

发现注册失败是从 0052715B 跳转过去的,所以在它上面最近的 call 下断点即可:

image-20201123000350312

运行程序,进入注册,随机输入(这里的注册号只能输入数字),程序便停在了断点处:

image-20201123000917517

0x23 得注册码,注册成功

在寄存器里就可以看到正确的注册码和我输入的注册码。复制正确的注册码去注册即可:

image-20201123001525530

注册成功,功能全部解锁!

image-20201123002158271

0x03 总结

  • 总的来说,软件的加密保护等级不是很高(或者完全没有),可以很容易进行破解或者逆向。
  • 从破解的技术角度来说,不一定非要得到注册码,也可以暴力破解,将注册程序 nop 掉,然后生成新的可执行文件,即可免注册。当然了,也可以写对应的注册机,只要输入用户名即可得到注册码。但是这就需要 IDA 分析源码,将程序的注册码效验过程了解清楚后才能实现。这相对于跟踪调试或者暴力破解是更消耗精力和时间的。
  • 对于跟踪调试,大致步骤就是:运行程序得到关键字符串 ->(查壳 / 脱壳)->OD 载入,搜索字符串 -> 找到关键 call-> 下断点,运行调试 -> 单步跟踪,在寄存器中找到注册码。

0x04 附件下载

附件链接:https://pan.baidu.com/s/1DJt4mWpz42GuQEDhzLdBqQ

提取码:LIYZ 解压密码:Asteri5m