https://www.bilibili.com/video/av28046265/?p=19
inline patch “内嵌补丁”
指在程序文件中把补丁代码写入文件里面达到破解的目的。
例:
原程序: mov eax, dword ptr [ebp+8] 3个字节
想改为: mov eax, 4 5个字节
若如此修改,会产生溢出,覆盖了下面的指令
所以要采用内嵌补丁的方式:
1. 找程序的空白区间,写入自己需要的指令(mov eax, 4),以及会被覆盖的指令
2.将原来的指令(mov eax, dword ptr [ebp+8])改为 jmp XXXXXX(补丁的地址)
(这个操作也会覆盖后面的内容)
3.在补丁最后加上 jmp XXXXXXX(原程序后面的内容的地址),跳出补丁,返回主程序
一些其他情况:https://www.bilibili.com/video/av28046265/?p=21
例:要使用数据段
1.找到一个数据段,下硬件断点
2.然后运行一次程序,查看这个断点是否被断下(该数据段是否被使用)
3.若没有被断下,可以使用
4.再找程序的空白区间,输入程序(可以使用插件NonaWrite)
内容:
{
1.代码空间(写入的地址)
2.数据地址
3.比较
4. 为2,跳转,不为2,不跳转
5.不跳转的情况下,补充被覆盖的指令
6.返回被覆盖的指令之后
}