UAF patch
测试用例
1 |
|
patch
找到free的地方
1 | .text:0000000000400762 mov eax, [rbp+var_74] |
可以看到free的参数是[rbp+rax*8+ptr]
ptr在main函数开头可以看见
1 | .text:00000000004006D6 var_74 = dword ptr -74h |
在eh_frame段找一个地方写上我们的汇编代码,我这里找的是0x400900
1 | call 0x400560;这里的地址是_free的地址,这里有大坑 |
然后把原函数cal _free的地方改成jmp 0x400900即可
大坑
IDA告诉你它patch完了,但是它其实patch歪了
比如这里,call 0x400560的机器码是E8 5B FC FF FF
但是它给你patch成了 E8 5B FC BF 8C
所以你得用010 editor手动改一下机器码