Wo不是高手 发表于 2023-12-13 17:17

一个本地验证软件算法



某网看到的一个软件,验证窗体确认后会“”拓展“”成程序窗体

验证不通过调用PostQuitMessage函数退出

跳过退出其实就可以使用功能,因为这个验证只是会触发与否退出函数

但是暴力破解会丧失程序的退出功能,所以想追出真码,图中是我找到的PUSH假码和字符串的位置,CALL也找到了

无奈水平有限,没有跟到真码,求助们帮助。

软件:https://cui.lanzouj.com/ixQrN1hqbtch

lies 发表于 2023-12-13 17:17

本帖最后由 lies 于 2023-12-14 00:20 编辑

这是 Delphi 写的程序,你要用相应的分析工具才行
找到 FormShow 的地方,往下跟就能找到启动密码框,跳过就可以了


同时,这程序每次运行都要修改分辨率,很讨厌,可以改下面代码处


这样改没有不能退出的后遗症


boot 发表于 2023-12-13 19:41

暴力破解后,可以通过动态还原功能,实现功能的完整性。

我编译了一个补丁,可以实现:

1、输入任意密码,能够正常进入软件,并且保证退出功能正常;

2、补丁支持WinXP到Win11;

3、核心代码已VM;

使用方法:

解压,将winspool.drv拷贝到软件目录,直接运行软件即可。

https://versteckt.lanzouw.com/iYA1L1hs8hda

haier8917 发表于 2023-12-13 23:14

把51128D86 与51128D98处的代码改成一样的试试

POP 发表于 2023-12-14 08:35

本帖最后由 192939 于 2023-12-14 08:41 编辑

boot 发表于 2023-12-13 19:41
暴力破解后,可以通过动态还原功能,实现功能的完整性。

我编译了一个补丁,可以实现:

内存地址也怪怪的

Rooking 发表于 2023-12-14 09:50

本帖最后由 Rooking 于 2023-12-14 11:47 编辑

算法就在 51128D98 的位置 计算 说白了就只是对比 CPUID 是否相等 相等就直接进去了 如果走到输入密码这里 无论如何都会退出 所以只需要修改 51128DA9 位置的跳转就可以正常进入使用了

Wo不是高手 发表于 2023-12-14 11:22

Rooking 发表于 2023-12-14 09:50
算法就在 511d8298 的位置 计算 说白了就只是对比 CPUID 是否相等 相等就直接进去了 如果走到输入密码这里...

兄弟,好像不同机器的地址不一样,我这511d8298是空地址

Wo不是高手 发表于 2023-12-14 11:31

lies 发表于 2023-12-14 00:10
这是 Delphi 写的程序,你要用相应的分析工具才行
找到 FormShow 的地方,往下跟就能找到启动密码框,跳过 ...

这个跳转过了3个CALL,第一个CALL我觉得是注册窗口,NOP掉确实可以直接进入主窗体,但是下面两个CALL是干什么的呢?我看了有真假码运算
但是用了你的结果成功了,很感谢你的回答!我再琢磨一下
还有你用的什么工具分析的?

Wo不是高手 发表于 2023-12-14 11:33

boot 发表于 2023-12-13 19:41
暴力破解后,可以通过动态还原功能,实现功能的完整性。

我编译了一个补丁,可以实现:


不要这么快嘛,前辈~

Rooking 发表于 2023-12-14 11:46

Wo不是高手 发表于 2023-12-14 11:22
兄弟,好像不同机器的地址不一样,我这511d8298是空地址

我把地址写错了 就是你图上的 51128d98
页: [1] 2 3
查看完整版本: 一个本地验证软件算法