从入手到功成的取经之路——【Cheat Engine去Patreon安装验证】

查看 68|回复 9
作者:照片依旧   
从入手到功成的取经之路——【Cheat Engine去Patreon安装验证】
一、层云遮眼
从网上找到了cheat engine 7.6.2的Patreon资源,本以为是一次平常的程序安装,在我点击了next按钮,程序调用了系统默认浏览器,跳转到了Patreon验证界面。啊,这个安装程序居然需要登录验证是否捐赠。


image-20251029200653476.png (50.41 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传



image-20251029200544363.png (80.98 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传

面对程序的验证,首先想到了IDA工具,是否可以通过跳过验证,直接进入安装界面。但是,使用Patreon 作为关键词在代码和字符串中搜索,并没有得到想要的结果。第一次尝试失败。接着使用xdb调试程序,并同样使用Patreon关键词进行字符串搜索,不出意料,得到了同样的结果,在内存中没有网站的一丝痕迹。第二次尝试失败。
既然关键字找不到,那就从调用系统浏览器入手。在不知道什么函数可以调用系统的默认浏览器情况下,qwen AI给出来shell32.dll 库文件下的 ShellExecuteEx 函数 可以实现默认浏览器调用,紧接着再使用XDB工具查看符号,搜索无结果,第三次尝试失败。但此时,长时间未验证,cheat engine 给出了一个提示窗。


image-20251029201000747.png (13.65 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传

以提示窗为线索,在xdb句柄下,右击刷新,给出了两条信息,但是均不是验证弹窗。第四次尝试失败。


image-20251029203218969.png (116.37 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传

二、拨开云雾
转机发生在,给cheat engine安装程序附加的时候,附加界面显示了两个cheat engine安装程序,一个是exe结尾的正常运行程序,第二个则是tmp结尾的临时文件。我不在以第一个exe程序作为附加对象,将tmp文件附加在了调试程序上,并使用搜索→所有用户模块→字符串  Patreon关键字。结果出现了,Patreon网站的验证地址。


image-20251029203515865.png (56.38 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传



image-20251029203857853.png (173.49 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传

双击链接,进入了cpu界面,看着眼前的汇编代码,还是有些头痛,目前只是找到了验证逻辑的一部分,仅仅通过汇编代码,还是无法还原函数的逻辑。下一步就是看如何还原验证逻辑。


image-20251029204045277.png (297.86 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传

本计划使用ollydumpex工具对当前模块进行dump,然后使用ida逆向代码。点开后发现,当前的验证模块pcheck也是在tmp文件夹下。那么现在的工作就是逆向pcheck文件。


image-20251029204636837.png (45.64 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传

同样的步骤,将pcheck文件拖进IDA中,使用shift+F12 调出字符串窗口,ctrl+F 调出搜索窗口,将关键字Patreon,输进去。过滤出来的结果令人满意,同样双击进入汇编界面。鼠标右击list cross to,查看有什么代码引用了字符串,给出的结果是唯一的,再次确认后,使用F5调出反汇编界面。


image-20251029205056117.png (71.19 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传



image-20251029205238568.png (159.04 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传

关键代码段如下,判断 v7 - v19 的值是否小于等于 1296000,如果不满足条件,则执行else中的代码,也就是跳转浏览器,并进行登录验证。qwen给的没有错误,程序确实是使用了系统的ShellExecuteA函数来调用默认浏览器。现时,我们需要做的就是强制修改判断条件,即可跳过验证。
  if ( v7 - v19
原始汇编代码
cmp     eax, 13C680h
jbe     loc_10020C9E
修改后的汇编代码
cmp     eax, 13C680h
jmp     loc_10020C9E //强制跳转至代码段
修改后,我将修改补丁到了pcheck文件中,准备将修改后的文件与源文件做替换,这样可以不验证,直接跳转至后续安装界面。
我犯了错,运行中的cheat engine程序调用了pcheck模块,在程序运行过程中是无法被替换。
但是,XDB可以帮忙解决问题,将  jbe     loc_10020C9E 代码附近的字节复制,使用XDB的字节搜索工具,在所有用户模块中搜索匹配特征 7F 11 0F 8C 28 01 00 00 3D 80 C6 13 00 0F 86 1D 01 00 00 C7 45 D8 08 00 00 00。


image-20251029210723489.png (81.76 KB, 下载次数: 0)
下载附件
2025-10-29 21:20 上传

同样双击搜索到的结果,会回到汇编窗口界面,可以看到关键代码。
10020B76 | 3D 80C61300              | CMP EAX, 0x13C680                        
10020B7B | 0F86 1D010000            | JBE pcheck.10020C9E                       
使用空格快捷键,在弹出的汇编编辑窗口中,将jeb修改为jmp强制跳转。


image-20251029210756515.png (130.22 KB, 下载次数: 0)
下载附件
2025-10-29 21:21 上传

回到cheat engine程序中,再次点击next按钮,成功做到了跳过Patreon联网验证。


image-20251029211104486.png (46.05 KB, 下载次数: 0)
下载附件
2025-10-29 21:21 上传

总结:cheat engine打包后的安装程序,在运行过程中会解压出两个文件在临时文件夹中,一个是真实的安装程序,另外一个是联网验证pcheck模块,想准确破解程序,就需要找准修改对象,然后再通过关键词或者窗口提示来进行分析。

下载次数, 下载附件

ycycn   

同时我在想,能不能用CE7.5的指针dump。
第一次安装:找到失败的  dump
第二次安装:找到失败的 dump
第N此安装:加载前两次   对比失败的......
xcl   

大佬怎么在linux系统上安装ce,不用虚拟机实实在在的在linux系统上运行
leoleung   

這個方法很利害,不用ida 也能用CE 去改
sccsok100   

看楼主拆解 CE 去 Patreon 验证的过程也太有代入感了
HaHaFather   

非常厉害,学到了
fzgfx   

学习了,谢谢老师分享
Scimmia   

非常厉害,谢谢分享
wushouwen   

学习了谢谢分享
GuanCeYiHui   

有用的知识又增加了!感谢分享!
您需要登录后才可以回帖 登录 | 立即注册

返回顶部