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.返回被覆蓋的指令之後
}