我正在尝试使用ollydb和作弊引擎修改C ++程序。
无论出于何种原因,我想删除一个内存地址并将其替换为数字0(或以相同结果结尾的任何内容)。
我需要用0代替代码中有四个点。
这是我的问题:
CPU瘫痪 前
01411E38 |. 8BD0 MOV EDX,EAX
01411E3A 3315 0020A701 XOR EDX,DWORD PTR DS:[1A72000]
01411E40 |. 8995 B8FCFFFF MOV DWORD PTR SS:[EBP-348],EDX
更改为:
01411E38 |. 8BD0 MOV EDX,EAX
01411E3A 83F2 00 XOR EDX,00000000
01411E3D 90 NOP
01411E3E 90 NOP
01411E3F 90 NOP
01411E40 |. 8995 B8FCFFFF MOV DWORD PTR SS:[EBP-348],EDX
保存/重新加载时:
01111E38 . 8BD0 MOV EDX,EAX
01111E3A 83 DB 83
01111E3B F2 DB F2
01111E3C . 00906090 DD 90609000
01111E40 /. 8995 B8FCFFFF MOV DWORD PTR SS:[EBP-348],EDX
那么为什么要改变呢
XOR EDX,DWORD PTR DS:[1A72000]
到
XOR EDX,0
当我进行更改时工作,但是如果我保存exe并重新加载它,则修改后的程序集会被更改/破坏。
答案 0 :(得分:2)
感谢您的帮助。
因为仍有针对这些字节的修正记录。程序 图像不是二进制转储。它们要复杂得多。注意 当你修补它的位置是01411E38,但是01111E38的时候 它被重新加载。这就是为什么其中一个改为60。
- Raymond Chen
XOR EDX,DWORD PTR DS:[1A72000]
- 杰斯特
替换
JMP 01411E40
与
app.post('/keyword', isLoggedIn, function (req, res) {
User.update({_id:req.user._id},{$addToSet:{keyword:req.body.tags}},function (err, result) {
if (err) return handleError(err);
return true;
});
console.log(w);
res.json({user:req.user})
})