文章总结: 本文详细记录了对某网游辅助软件的逆向分析过程。作者下载了一款网游辅助软件,通过PE分析工具发现这是用易语言开发的未加壳程序。遇到反调试问题后,通过修改PEB中的BeingDebugged标志绕过了检测。随后利用易语言特征,找到登录窗口ID,使用push大法修改窗口ID,成功破解了该辅助软件的卡密验证机制。文章展示了易语言程序逆向分析的基本方法,包括反调试绕过和窗口ID修改等技术。
综合评分: 81
文章分类: 逆向分析,二进制安全,免杀
记一次某网游辅助逆向分析过程
原创
ovouec
Web安全入门
2025年11月21日 12:42
广东
初入茅庐
最近闲来无事,想起最近小表弟给我发了一个网址让我帮他看看。
我并没有回复,而是默默的点开他发的链接。
发现这是一个某网游的辅助网,共有三款软件,作为一名喜爱福老玩家,看到这行为十分的生气,而且价格也是出奇的低,出于好奇,我默默的下载了其中一个辅助……
下载之后运行程序,看看这个程序跑路了没,服务器连接成功,那应该是没问题
国际惯例步骤,先查个壳,把程序拖入到studyPE+和ExeinfoPE里,主要看PE类型、文件类型和所在区段。
这里入口区段为CODE(貌似中感染了这里先不管他,和正常的区段.test差不多),文件类型为 Borland Delphi 感觉大概率是易语言写的程序,区段也挺干净的,都属于是常见区块里的内容,初步判断这个程序应该是不带壳的,那基本上应该是属于成功一半了。
反调试绕过
那么接下来先让我们的主角x32dbg登场,然后把目标程序拖入到x32dbg中,发现这个程序拖入到x32dbg中是会闪退的。
造成这种闪退的原因大概率就是:反调试
反调试这个功能并不是都由壳导致的,部分开发人员代码能力强,懂反调试技术的话,是可以把检测调试的代码写在自己的程序中,常见的反调试函数基本上就是 isDebuggerPresent函数。
此函数是通过获取进程环境块BeingDebugged标志来检测进程是否处于调试状态。
我们这里使用手动分析绕过方法:
把目标程序启动,然后通过x32dbg进行程序附加,使用openArk工具选中目标程序查看线程
选择查看PEB,可以看到有一个名称为BeingDebugged的函数,正常来说值是为0x0的,当这里发现BeingDebugged的值为0x1,则说明检测到了调试行为
那么这时候我们就需要去绕过反调试,防止影响我们后续的分析
拖入程序到x32dbg,找到PEB 双击FS 0053
双击地址,找到30的位置,选中右键在内存窗口中转到指定DWORD到内存2进行查看。
然后在内存2中,发现BeingDebugged是 1,说明正在被调试,只需要把 01 数值改为 00 ,就可以启动程序了。
当然也有更简单的方法,直接使用x32dbg自带的隐藏调试器,把程序拖进去,选中,就会自动的把BeingDebugged的值改为0,这样程序就可以自动绕过这种简单的反调试了。
破解过程
附加程序之后直接进入主模块,明显的易语言特征 xor eax,eax ret,那就验证了前面的说法,这就是个易语言程序。
先用正常思路,常规的程序破解分析方式:
点击登录按钮,软件会进行一步判断:
1.输入卡密,会从内存中判断,有可能本地进行校验,搜字符串
2.登录按钮,找按钮的功能
3.看返回情况,常见的消息框断点 MessageBoxA/W 等消息框函数
4.易语言特殊破解方式
因为我们这里是存在易语言特征的,同时我们随机输入卡密之后并不会出现弹窗反馈卡密错误功能,所以这里先可以不用消息断点和字符串搜索来进行分析,直接使用易语言的分析方式进行初步的判断。
右键当前模块搜索匹配特征,搜索易语言的特征push 0x10001
逐个进入分析,就会发现上面有存在登录成功的提示,那么这个push大概率就是登录成功的功能窗口
004018A | 68 1E600152 | push 5201601E |
回到主模块直接搜索FF 25
这时会发现很多模块窗口,点击第一个进入地址
直接就看到了程序的入口,易语言程序入口 mov eax,6 就是程序启动之后往下执行,一直到push 52010001 执行他启动的卡密窗口id
他 push 52010001这个窗口id,之后进入call ,call函数调用的地址是412E6F 那么对应的就是载入启动窗口,这里使用push大法可以破解
前面我们分析到,登录成功功能的窗口id为 5201601E。
004018A | 681E600152 | push 5201601E
那么我们只需要把 push 52010001 改为 5201601E即可。
修改之后打补丁,这里静态补丁没问题,可以打上去。
这时候我们在打开我们修补补丁之后的程序,这时候就会发现成功的进入功能模块了,至此,到这里我们就已经成功的把该辅助破解了。
总结
这次分析的程序是没有壳的,所以难度并不大,并且程序由易语言开发,那么只需要使用常规的分析逻辑即可实现破解。
当然本图文教程也只是起到一个抛砖引玉的作用,仅供学习参考,如果有问题大家可以评论交流,切勿做违法操作,与本人无关仅供技术学习。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Web安全入门 ovouec《记一次某网游辅助逆向分析过程》