一个古老游戏,Silky's社的女系家族,谷歌是搜不到免CD补丁的,只能自己做了,但是实际操作的时候,发现过程很绕圈圈。
老规矩,转区软件打开游戏,蹦出个弹窗消息:入れてください,叫你插CD,关掉游戏。
用ollydbg打开游戏主程序mfamily.exe
把反编译内容保存为txt文件再用转区软件打开,搜索弹窗消息在Messagebox函数里看到
得到地址4035A1,如图反编译软件打开shiftjis编码的日文游戏看注释是乱码的,保存TXT后用转区软件在TXT里找文本就方便了。
找到地址就好办了,这个游戏想要免CD,就要保证这个弹窗是要百分百跳过的,免CD补丁就做出来了。
思路就是Messagebox要靠某个跳转跳过,且不能让其他断点跳转到这个断点和Messagebox之间,满足这两个条件。
所以过程就是
寻找跳过Messagebox的跳转,让其百分百跳过。
看箭头从40357E跳到4035B8,完美地跳过了Messagebox,是这个断点,没错了,把jnz(机器码75)若不相等则跳,改为jmp(机器码EB)无条件百分百跳过。
2.寻找能跳到地址40357E到40359A的Messagebox的任何跳转,将其全部掐断,不给机会。
从40357E开始往下一行一行地点过去,第二行就有一个截胡的,不给其机会,把从403553跳到这第二行的752B,这个不相等则跳,改为NOP(机器码90)抹掉这个跳转,使这个跳转无效
继续往下一行一行点,点到最后一行40359A,居然还藏了一个跳转,老长了,我往前翻,倒着箭头往前找
终于在老前面40351F翻到了
继续掐断,把jbe(机器码76)弱小于则跳改为NOP(机器码90)抹掉这个跳转,使这个跳转无效。
总共改了一个JMP,两个NOP,保存exe后打开程序
游戏能进了,没有任何逻辑上的错误,按这个逻辑能破解所有弹窗不在栈窗口的游戏。
因为这个游戏是除了要CD的,而且还要游戏主程序需要根据安装信息才能玩的
如果移动了游戏文件夹,游戏就会打不开
我顺手写了免安装补丁,破解免安装比破解免CD简单十倍,闭着眼都能手写
在ollydbg的中文搜索引擎插件里搜索ASCII字符,找到了游戏安装的注册表地址(可能与实际不符,主要拿来做参考,一般不是在HKEY_CURRENT_USER\Software里面就是在HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node里)
win键加快捷R快捷键弹出注册表,根据ollydbg刚刚给出的地址做参考,我没过多久就在HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Zeus\mfamily\1.0里翻到了
instPath里面的就是安装目录,他只认F:\mfamily这个目录,那么命令脚本就好写了。
在游戏文件夹下新建个txt,写入命令
reg add "HKLM\SOFTWARE\WOW6432Node\Zeus\mfamily\1.0" /f /v "InstPath" /t REG_SZ /d "%CD%"
reg add "HKLM\SOFTWARE\WOW6432Node\Zeus\mfamily\1.0" /f /v "InstType" /t REG_DWORD /d 1
后保存为扩展名为cmd的NT命令脚本就好了
每次移动游戏文件夹后,都先点击一下这个cmd脚本,游戏就可以运行了。
古老游戏就是麻烦,又是做免CD补丁,又是做免安装补丁的。