【发布时间】:2012-11-17 03:46:38
【问题描述】:
问题:
我正在注入程序并修补调用,但我想知道是否有任何方法可以逐行遍历应用程序并找到特定调用。 _IE:假设程序 'Foo.exe' 在内存中的某个位置调用了 MessageBox。
如果我做了以下代码:(只是一个粗略的想法)
a = GetModuleHandle ( "<dll>" );
b = GetProcAddress ( a , "<name>" );
swap ( b , (DWORD)*fake_function );
-- 一切正常,直到您开始调用实际函数 - 这会创建一个永远持续的巨大循环(哎哟)。
现在我不确定这一点,我可能错了,但是...上面的代码是替换内存中的“Foo.exe”调用,还是用“fake_function”替换了 dll 的函数?
我对一些事情感兴趣......
A )我怎样才能在 'Foo,exe' 中找到所有调用 MessageBox 的内存位置,并将内存位置替换为调用 'fake_function'?
B) detours 是如何解决这个问题的?
【问题讨论】: