编辑:我知道有可能使用OllyDBG,我使它工作但仍然需要运行时版本(CPP),所以我可以在那里进行跳转。
在交换机内的this函数(伪代码)中,我想修改案例115中的操作,例如:将CALL 100CE3E8更改为CALL 100CF1E9
看起来像:
(案例115)
sub_100CE3E8(a1, v19);
break;
1024185D 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
10241860 50 PUSH EAX
10241861 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
10241864 51 PUSH ECX
10241865 8B0D A0B12A10 MOV ECX,DWORD PTR DS:[102AB1A0]
1024186B E8 78CBE8FF CALL somelib.100CE3E8
我想在这种情况下替换指定的部分说明,例如1024186B
我正在使用MS Windows Detours 1.5执行此类操作,并且在大多数情况下都能正常运行。
void hSwitchFunction(int a1)
{
//So what should I put here to jump directly to 1024185D,
//and don't replace the function completely?
//I mean I want to modify just the part of this function.
}
//somewhere in the code
DetourFunction((PBYTE)0x10241630, (PBYTE)hSwitchFunction);
//somewhere in the code
答案 0 :(得分:1)
在你给出的代码中,switch的变量来自返回你需要的值的函数。正如你在代码中看到的那样。对于那个值,他们正在添加一个指针,减少值移动到v14。然后在交换机中使用它。 还要注意他们从函数中调用它。 在某些情况下,它可能很重要。 因此,您所要做的就是复制相同的更改并在交换机中使用它。