一个本地验证软件算法
某网看到的一个软件,验证窗体确认后会“”拓展“”成程序窗体
验证不通过调用PostQuitMessage函数退出
跳过退出其实就可以使用功能,因为这个验证只是会触发与否退出函数
但是暴力破解会丧失程序的退出功能,所以想追出真码,图中是我找到的PUSH假码和字符串的位置,CALL也找到了
无奈水平有限,没有跟到真码,求助们帮助。
软件:https://cui.lanzouj.com/ixQrN1hqbtch
本帖最后由 lies 于 2023-12-14 00:20 编辑
这是 Delphi 写的程序,你要用相应的分析工具才行
找到 FormShow 的地方,往下跟就能找到启动密码框,跳过就可以了
同时,这程序每次运行都要修改分辨率,很讨厌,可以改下面代码处
这样改没有不能退出的后遗症
暴力破解后,可以通过动态还原功能,实现功能的完整性。
我编译了一个补丁,可以实现:
1、输入任意密码,能够正常进入软件,并且保证退出功能正常;
2、补丁支持WinXP到Win11;
3、核心代码已VM;
使用方法:
解压,将winspool.drv拷贝到软件目录,直接运行软件即可。
https://versteckt.lanzouw.com/iYA1L1hs8hda 把51128D86 与51128D98处的代码改成一样的试试 本帖最后由 192939 于 2023-12-14 08:41 编辑
boot 发表于 2023-12-13 19:41
暴力破解后,可以通过动态还原功能,实现功能的完整性。
我编译了一个补丁,可以实现:
内存地址也怪怪的 本帖最后由 Rooking 于 2023-12-14 11:47 编辑
算法就在 51128D98 的位置 计算 说白了就只是对比 CPUID 是否相等 相等就直接进去了 如果走到输入密码这里 无论如何都会退出 所以只需要修改 51128DA9 位置的跳转就可以正常进入使用了 Rooking 发表于 2023-12-14 09:50
算法就在 511d8298 的位置 计算 说白了就只是对比 CPUID 是否相等 相等就直接进去了 如果走到输入密码这里...
兄弟,好像不同机器的地址不一样,我这511d8298是空地址 lies 发表于 2023-12-14 00:10
这是 Delphi 写的程序,你要用相应的分析工具才行
找到 FormShow 的地方,往下跟就能找到启动密码框,跳过 ...
这个跳转过了3个CALL,第一个CALL我觉得是注册窗口,NOP掉确实可以直接进入主窗体,但是下面两个CALL是干什么的呢?我看了有真假码运算
但是用了你的结果成功了,很感谢你的回答!我再琢磨一下
还有你用的什么工具分析的? boot 发表于 2023-12-13 19:41
暴力破解后,可以通过动态还原功能,实现功能的完整性。
我编译了一个补丁,可以实现:
不要这么快嘛,前辈~ Wo不是高手 发表于 2023-12-14 11:22
兄弟,好像不同机器的地址不一样,我这511d8298是空地址
我把地址写错了 就是你图上的 51128d98