se 2.4 path 小记。
继上次C#一波后,朋友又给我扔了一个软件,打开一看
@%#……#%@……!%
让我这种小白玩SE真的好吗。。
简直万念俱灰啊,又不想强行打脸
有气无力的拖入OD
附加
虽然早就猜到了这种结果,但还是忍不住唱一首凉凉啊
你以为我会就这么放弃了?不存在的
接下来就是一波疯狂的diss度娘
历经接近两个小时的下载删除下载删除(其实大部分时间还是在下载上,这网速%@¥!……&%@)
链接:https://pan.baidu.com/s/1Gxa3uZrdgZ5qKBLDGBLh-Q 密码:h6we
终于找到一款能够完美过检测的OD。。附上链接一枚(别人说SOD过的,然后各种版本都带SOD,且配置一致, 然而只有这一款能过)
检测过了,接下来确定一下SE版本
OK,2.4版本,问一下度娘
2.4版本度娘也不知道多少啊,这个就有点难受了,偶然看到一句话
找了一下2.3.x系列教程,感觉打开了新世界的大门
中间测试经历的艰难坎坷这里就不说了,主要记录一下正确path流程
开始正文吧
第一篇启蒙正文
https://www.xuepojie.com/thread-39131-1-1.html
本着(bao)交(da)流(tui)的心思,注册了一个论坛帐号,留下自己的问题要个联系方式
打开楼主的主题&回复,又一扇新世界的大门向我打开
跟我一样遇到同一个问题的同学,跟着他的脚步,结合他的帖子内容+大神的教程:https://www.xuepojie.com/thread-9264-1-1.html
首先Ctrl+B 二进制搜索windows api 函数 RegQueryValueEXA
两次找到了这里
由于是第一次找,先F8单步慢慢跟,看看有没有找错地方
现在jmp处下个断,F9运行到断点
跟到这寄存器处发现了关键字,鼠标放在EAX后的数据上,数据窗口跟随
中间有个小插曲,大神的视频中手动找断尾,然而我这个代码好像有自己的想法,最后发现还有一种骚操作
这下不用绕了。。
现在ret上面的popad上面的jmp处下个断,以免回来找不着
单步过ret,在下面跳转处上方下一个断点
可能是2.4的代码上跟旧版本的会有点不同,在这个地方下断后各种报内部错误
不过不影响,尽管有报错,还是能够让我们看到他出现机器码的地方
找到了机器码后,由于此处机器码已经被程序校验过了,所以我们重新运行软件,回到我们的出现关键字的popad上方的jmp处,0071ECBF . /E9 5B030000 jmp Demo.0071F01F
这个地方很重要,最好把地址保存一下,单步跟,出去
上面找机器码的时候已知,0x18E4F4+0x4=0x18E4F8
下方二进制搜索18E4F8
来到这个位置,在机器码尾部下硬件写入断点,不在头部下是因为机器码未加载完你也看不出什么花来。。
F9运行两次,可以看到我们的机器码已经出来了
直接右键二进制编辑,替换正确的机器码
把硬件断点取消,程序就完美运行,path成功。(前提需要有一个正确的key文件和机器码)
接下来就是很蛋疼的打补丁时刻,SE的补丁比较特别,自己又没有写补丁的经验。
最后还是那位大神还是熟悉的操作
本文不详细记录补丁过程,下面是补丁源码内需要修改的地方:
链接:https://pan.baidu.com/s/1XEqsAzvT-YPMNWo-x9gctA 密码:2q2o
SE_Jmp_Addr = popad上面的jmp地址
SE_Call_Addr = 下硬件断点后出现机器码地址处最近的一个jmp地址
SE_Offset = 关键字与机器码头部出现位置偏移
SE_NEW_SN = 需要替换的机器码
Install_Hook_Jmp 方法内
Origin_Jmp_Addr = SE_Jmp_Addr 地址中jmp后边tiao跳转的地址