本帖最后由 巫人 于 2021-9-29 22:27 编辑
话说加入论坛好久了,首次加入信心满满,跟着做完第一课实战去广告之后就撇在了一边。
如今因为csdn有个悬赏,打开游戏会杀掉其他的进程,例:文件夹什么的。 我以为是游戏内置的,想着反编译一下改下代码就好了。然鹅碰到个硬茬(对萌新来说),不得已最近又捡起来()不多说了直接教程开始。
查壳就不说了,脱离了工具啥也不是,常用的几个工具因为文件太大放不进去现在就默认它无壳了,其实实际上应该也是无壳,因为修改时没碰到特殊情况。
直接上OD,根据总版主大大 @云在天 给的提示,关闭窗口一般是postmessage或者sendmessage,但实际跑了一下一直都在user32里徘徊且多次重复调用。没耐心继续了,于是发现版主给的图片里有一个GetDesktopWindow表达式,直接CTRL+G输入下断点。
直接目测的话还是在user32里,但是一路F8过去到最后retn回到了这里。
看名字就觉得特别亲切了,看上面其实还有两个表达式,看到最上面的IsWindowVisible就可以大概确定这里杀进程了(截图没截到)
在004BC304 55 push ebp函数头retn掉就可以阻止杀进程了。
其实往下翻翻看到有了中文后就可以直接搜字符串了。
修改完之后,这时从内存中查找机器码,就会发现有两条机器码在内存里。
这时候再去修改机器码已经晚了。
如果你坚持去修改的话是可以的,但是会一直弹出弹框(弹框比较烦截不到图)这时候游戏是能打开的,你点yes或no还是会杀进程(OD都给你扬咯,是的不是终止,是真的关了)
所以要在机器码生成后立刻修改。此时就要先保存再重新运行,具体保存方法可以百度搜OD怎么保存,这里就不说了。
根据@无闻无问 的回复,判断机器码就找CreateFile的表达式。CTRL+G打开表达式窗口发现有三种:CreateFile(A、W、2 最后面的字母)
这三个全部下断,然后程序跑起来。跑起来以后一路F8过来就好,跟一会看一眼内存,在内存窗口里查找一下机器码。如果跟了好久都没出就继续运行就行。
一直F8的时候有时你会发现ASCII中会闪过你的主板什么的配置信息
其实这个机器码是由主板、显卡和网卡生成的
之前的中文搜索会告诉你这是某款exe加密软件做的加密
百度找了下最新 破解版本9.1,用它生成的密码是这么一长串
不过新版的密码比这短,怀疑是在此密码基础上重新添加算法生成新的密码
运行到这里突然有点眼熟,这就是刚才中文搜索窗口中搜到的字符串之一
(偷偷告诉你机器码就藏在这两个之间,离成功不远啦)
边运行边查找,点击运行第六次后发现一次机器码
但是刚才已经找到有两个机器码在内存中,所以接着运行,先记住第几次
再次运行到第七次第二个机器码也出现了,仔细观察发现两次机器码都是CreateFileW运行完生成的,确定大概位置后取消其他断点再次重新运行。
再次运行到机器码生成的前一次,这次需要F8、F7慢慢跑。
此时机器码已经出现(F8运行到断点call时继续F8会运行而不是暂停,直接call下面打个断暂停再运行即可)
右下角窗口稍微往下翻下就出现机器码了,选中后数据窗口中跟随
然后在左面的窗口ASCII码窗口选中机器码,右键=>二进制=>编辑
如果不能修改的话请把保持大小的勾去掉
再点一次运行,到下次执行w,然后继续F7、F8大法,直到在这发现第二个机器码
手快了......直接给改了,和修改第一个机器码是一样的。
到此找机器码和手动Patch结束。
用了最小白的方法来解决的,如果有更精妙的方法欢迎评论!共学习共进步!
素材链接
链接:https://pan.baidu.com/s/1n9yV-b7Dq3vRO-Ff_R3ODQ
提取码:1tg5 默认后缀是dat的,已修改为exe,exe才可运行(不知道为什么是dat,我从别人那里拿来就是dat的,dat不可运行exe才能丢OD,请管理大大看清手下留情) |