请问在exe里添加自己的dll,在dll里Detour注入,如何延迟修改某个地址?
有一个exe自己写了个dll用pe工具导入了这个dll。在dll里用Detour方法修改exe某个地址,现在遇到个问题,必须要等exe完全运行完毕后我才能去执行update修改exe里的内存地址,有没有什么好的延迟方法不能影响exe初始化? hook loadlibary hook一些系统函数即可 除了hook系统函数没别的办法吗?有点不明白hook系统函数和这个exe是否运行初始化完成有啥关系?exe里有很多数据初始化,必须要等他初始化完成我才可以用dll修改地址。
比如exe里有个init() 函数,我必须等他init()执行完成,我才可以修改init里地址的数据。 init()执行系统函数试试 你需要确定两个时间点,第一个时间点过去之后可以进行修改,第二个时间点过去之后修改会来不及。这段时间就是合理的修改时间。
你需要找到某个flag来判断是否处于合理修改时间内,这个flag可以是某个内存数值,也可以是某个API调用,这个需要你自己寻找。
如果flag是一个内存状态,你可以在dllmain里创建新线程,新线程中通过sleep不断检查flag直到进入合理修改时间,并进行修改。
如果flag是一个API,那就hook这个API,当你进入这个API的hook函数,你就知道现在是合理的修改时间了。 exe开始运行->系统函数A->系统函数B->系统函数A->系统函数B->系统函数C->初始化完成->系统函数A->系统函数B->系统函数D>系统函数B->...
最佳选择:Hook系统函数D,执行系统函数D时释放补丁
次选:AB,AB需要计算执行次数,避免过早释放
比如exe里有个init() 函数,我必须等他init()执行完成,我才可以修改init里地址的数据。
用 detour hook 这个 init 函数,等他执行完后执行你的逻辑,再归还程序控制权。
把你说的思路改造成代码不就成了吗 既然init初始化完成之后就可以hook,那你直接hook init 然后在这之后再进行hook就行了啊 yes2 发表于 2024-4-22 15:28
你需要确定两个时间点,第一个时间点过去之后可以进行修改,第二个时间点过去之后修改会来不及。这段时间就 ...
这样在里面创建个线程 然后判断 flag,用sleep,能不影响程序性能码? 这exe是一个service服务程序。我能单独加个延迟,比如5分钟后启用注入?
页:
[1]
2