记一次外挂破解

记一次外挂破解

五月 24, 2019

学校信息安全实验室招新,学长找了一个游戏的外挂给我们破解,游戏叫Risk of Rain 2。

外挂界面:

要求:

    1. 找到作者的IP;
    1. 让外挂软件可以多开;
    1. 破解外挂的付费功能,使用本来需要付费才能使用的无限跳跃。

64位程序,用x64dbg打开调试,F9一直跑,发现窗口还没打开程序就结束了,应该有反调试,去找常用反调试,可以 找到IsDebuggerPresent:

双击找到该位置下断点后重新运行,程序会停在这里,再从堆栈调用里找到函数的入口点,发现关键跳转

操作一下这个跳转就可以打开程序了,可以把上面的test改成cmp,也可以直接nop掉跳转,方法不唯一。

IP很容易找,甚至不需要调试,直接搜索所有字符串,正则表达式筛选IP的格式就能找到

破解多开我一开始是先开一个程序再用x64调试一个程序,一直单步步过,当步过一个call之后程序弹窗提示不能多开时就表示弹窗在这个call里面,于是下断点重开步入继续步过,找了很久之后找到了弹窗,往上可以找到关键跳转。

后来发现其实可以直接搜索MessageBoxW找到它再从调用堆栈找到弹窗位置:

破解付费,因为提示付费时有弹窗,所以也可以在MessageBoxW下断点然后按CTRL+1使用付费功能程序就停在断点处,从调用堆栈找到函数入口,往上找跳到这里来的关键跳转

改了之后就可以使用付费功能了,但是打了补丁之后外挂程序就不能实现开挂功能,猜想可能是开始的时候有检测程序是否被修改。