记一次诡异的破解过程【我是航空管制官4(ATC4)游戏盗版汉化再封装安装包】
本帖最后由 firef0x 于 2018-1-17 16:03 编辑入伙申请区搬运至此。
最近在某论坛看到一个很狗血的东西,有人将“我是航空管制官4”这款游戏进行了破解汉化,然后重新打包,号称免费下载,但是安装的时候要个神马序列号,此序列号售价数十元不等。。。。
关键是这个论坛的人还有这种脑残言论:“XX是盗版下载基地的ATC4资源,我是自购正版并破解汉化的。XX是拿别人作品来卖钱的,仗着版权说事,性质不一样。XX流氓出名了。”
https://attach.52pojie.cn/forum/201801/15/162355av541k1n6dnd44vn.png
WTF。。。还有这种操作。。。。。
实在看不下去了,于是默默的摸出了很久不用的工具。。。(以前的工具在一次硬盘事故中全丢了,图方便下了个贵坛的虚拟机,一并表示感谢!)
该“盗版Plus”游戏在安装过程需要序列号,安装包只有一个exe,下载地址在此:https://pan.baidu.com/s/1qYk4Y6K,提取码4ek4
首先是分析安装包
https://attach.52pojie.cn/forum/201801/15/162354tq4ojqxloitc7zxr.png
可见是NSIS打包的安装包,游戏数据以Overlay的方式,使用7Z LZMA算法压缩保存
用通用解压工具解压报错,看来是使用修改版的NSIS制作的。
既然无法直接解压,那还是上OLLY吧
到序列号输入窗口看看,msgbox方式的提示
https://attach.52pojie.cn/forum/201801/15/162355mmoi59h440nppmpe.png
使用OllyDbg打开安装包,下断bpx MessageboxA,跑一圈下来风平浪静。。。。额,不是MessageboxA,经验主义还是要不得。
用C32ASM打开看看输入表,果然,MessageBoxIndirectA,再次下断开跑。
https://attach.52pojie.cn/forum/201801/15/162355x4vl9zfwlwmqygdm.png
断在405477,下一步就是弹出错误信息了,此时在参考中查找错误信息,发现其内存地址7BD700,在此地址加个内存写入断点,看看是什么地方修改了它,顺藤摸瓜。
https://attach.52pojie.cn/forum/201801/15/162356wfzze7oa1km7zsn1.png
https://attach.52pojie.cn/forum/201801/15/162356g4qt1g2arkwhe7q2.png
重新将程序跑起来,一路F9耐心寻找第一次写入错误信息的代码,在此过程中发现了一个有趣的现象
从7BD700这个地址看到,程序释放了一个dll到临时文件夹并加载了它:"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\nsf4.tmp\NSISdl.dll"
https://attach.52pojie.cn/forum/201801/15/162357d202268682h2qm6u.png
https://attach.52pojie.cn/forum/201801/15/162356zi7lljidq7etlzt7.png
度娘了一下,这是NSIS的下载模块,看看堆栈,调用过程中使用了参数"download_quiet",应该是程序调用这个模块下载了什么东西,这在寄存器和堆栈里面也能看到,只是没下到,结果是"HTTP/1.1 404 Not Found"。
https://attach.52pojie.cn/forum/201801/15/162357dxyw9t5twctb0gt4.png
继续观察7BD700,出现了下载地址字符串:"http://47.89.26.137:2824/ATC4nin1/V2CN/.z",看到"ATC4nin1",应该不是什么运行所需文件,难道就是验证文件?".z"是什么鬼。。。。
https://attach.52pojie.cn/forum/201801/15/162358tt0676ixeibjxj5i.png
准备再观察一遍,重置程序,下好内存断点,随便输一个序列号开跑。
hehe,果然是在这个地方验证,这种嘲讽性质的序列号当然是404 Not Found咯。
https://attach.52pojie.cn/forum/201801/15/162358qg0h1rdvhr9mx9mh.png
再看看这个地址是哪来的,从堆栈下拉往回看,第一个入栈的调用405D60炒鸡可疑,下断F9继续。
https://attach.52pojie.cn/forum/201801/15/162359c27z4xa9h4wdz1w0.png
观察两次规律之后,在程序开始使用下载地址填充7BD700之前成功断下,F8跟进,看到逐字节填充7BD700的过程。
https://attach.52pojie.cn/forum/201801/15/162359jxdkpwapxf1hjarf.png
F8继续追几步,看到从7F7CBB3开始逐字节读取地址的地方,数据窗口跟随7F7CBB3,找到定义下载地址的字符串。
可以看到下面还用了个del.php删除已用key的字符串,看来这些奇葩为了防止序列号被重复使用也是煞费苦心啊。
https://attach.52pojie.cn/forum/201801/15/162359xuvowxfnxwobdimi.png
因为是通过http协议下载的,为了继续验证,现在只能自己用绿色的服务端,随便新建一个文本文件改名叫stupid.z,内容为了好追踪,就用11223344吧,再把7F7CBB3的下载地址修改成自己的假地址,让它能下到,看程序下一步怎么操作。
https://attach.52pojie.cn/forum/201801/15/162358ckfl322yy8lj0yuh.png
https://attach.52pojie.cn/forum/201801/15/162400gurdbd6w6bluerkk.png
当我认为还要继续追踪程序下载后,要继续计算验证码的时候,验证就这么过了。。。这么过了。。。么过了。。。过了。。。了。。。。[笑哭],破解莫名其妙完成!
https://attach.52pojie.cn/forum/201801/15/162400c2j85n8m5nnbmm07.png
既然过了也就懒得研究了,注册机神马的肿么写也懒得研究了,知道原理用一些现成的工具就可以实现破解。破解方法文字版如下:
序列号验证地址为:下载"http://47.89.26.137:2824/ATC4nin1/V2CN/"+序列号+".z"
使用cheat engine搜索字符串替换为自建服务器的文件地址即可。
不过为了保险起见,自建服务器的时候文件路径根据原始地址进行调整,保持修改前后长度一致,如:
http://47.89.26.137:2824/ATC4nin1/V2CN/ 替换为
http://192.168.0.1/charpatchxxxxxxxxxx/ 保持长度一致即可。
从路径不难猜出,该站所有的安装包应该都是用的这种弱鸡的验证手法,其他安装包搜索这个IP地址转到内存地址观察后面的路径即可。
以上。
心得:
1.经验主义实在要不得
2.有些验证手段简直匪夷所思,需要在跑调试的过程中多观察,发现异常及时跟进处理,说不定就有意外收获。
看到有人在说没有注册机,可能是我没说清楚,把回帖里面的方法搬运过来,只要他们想不出别的更好的验证方式,这个方法都能变通使用。
安装程序这边,http://47.89.26.137:2824/ATC4nin1/V2CN/只是文件路径,安装程序在这个路径下面下载 序列号.z 这个文件
上面那个字符串共39个字符
按照你的IP,如"http://192.168.163.1:80/"共24个字符,也就是说山寨服务器的路径还要填充15个字符,除开分隔符"/"还差14个
所以要在山寨服务器的物理目录里面新建一个文件夹,输入14个字符,比如,假设山寨服务器根目录是D:\wwwroot,那么新建路径可以为"D:\wwwroot\xxxxxxxxxxxxxx\"(14个x)
山寨序列号也用stupid的话,再在这个文件夹里面新建文本文档改名为stupid.z,里面随意添加至少1个字节的内容(我试过空文件会报错)
然后搜索http://47.89.26.137:2824/ATC4nin1/V2CN/改为
http://192.168.163.1:80/xxxxxxxxxxxxxx/
https://attach.52pojie.cn/forum/201801/16/163039iesoi6s4begq83eq.png
安装的时候输入序列号stupid,程序自动会将下载地址填充为http://192.168.163.1:80/xxxxxxxxxxxxxx/stupid.z,验证通过。
总之就是要保证修改的山寨路径总长度为39个字符
因为验证服务器是山寨的,所以路径根据自己IP和端口自行调整到总长度39个字符
山寨服务器里面的.z文件是什么文件名序列号就是什么,不要把序列号修改到程序内存里面去了
PS:那群奇葩居然过来和我谈刑法。。。。。。我也是醉了。。。。。
本帖最后由 firef0x 于 2018-1-16 17:50 编辑
改错了也架错了
服务器端的IP地址填自己的IP“192.168.163.1”,虚拟目录这边新建名称为"/",物理路径自己指定,比如"D:\wwwroot",其他的名称可以全部删掉。
然后安装程序这边,http://47.89.26.137:2824/ATC4nin1/V2CN/只是文件路径,安装程序在这个路径下面下载 序列号.z 这个文件
上面那个字符串共39个字符
按照你的IP,"http://192.168.163.1:80/"共24个字符,也就是说山寨服务器的路径还要填充15个字符,除开分隔符"/"还差14个
所以要在山寨服务器的物理目录里面新建一个文件夹,输入14个字符(比如14个x),比如"D:\wwwroot\xxxxxxxxxxxxxx\"
山寨序列号也用stupid的话,再在这个文件夹里面新建文本文档改名为stupid.z,里面随意添加至少1个字节的内容(我试过空文件会报错)
然后搜索http://47.89.26.137:2824/ATC4nin1/V2CN/改为
http://192.168.163.1:80/xxxxxxxxxxxxxx/
安装的时候输入序列号stupid,程序自动会将下载地址填充为http://192.168.163.1:80/xxxxxxxxxxxxxx/stupid.z,验证通过。
总之就是要保证修改的山寨路径总长度为39个字符
因为验证服务器是山寨的,所以路径根据自己IP和端口自行调整到总长度39个字符
山寨服务器里面的.z文件是什么文件名序列号就是什么,不要把序列号修改到程序内存里面去了 我边看边在下游戏,等看完,最后告诉我注册机没有,我去!哭了! 你这个刚刚出来,那边马上就怂了~~~~:lol 好像有点厉害 很详细,感谢楼主 不错不错啊,不错不错不错不错不错 哈哈哈,以为大戏要开始,结果直接结束了 感谢楼主 正想玩第四代 三代都玩烂了 学习了,楼主厉害 感谢发布原创作品,吾爱破解论坛因你更精彩 学习了,楼主分析的很细致!!! 谢谢楼主,真心被他气的半死,有苦于不会破解,看到楼主把他给破了,真心爽