A.. 不能算 CE 啦. Windows Mobile OS ARMV4I 可能比较适合
在 Windows Mobile 6.1 下 HTC Diamond 测试..
在这里作个小修正..
因为有个需求是要 dump 某个 library funtion arguments. 但没找到一个适合的方式用..
所以就自己写了..
目前 bug & 限制还很多
1. No multithread safe
2. 无法 hook xip function (因为是从 ROM 直接执行, 唯读)
3. 如果 function 开头前三个 instruction 有 "跳转" 的话,会 data abort.
4. 有时候好像 function 被 inline 的话,会无效..
先分享出来。
原理:
替换 Function 开头,跟
http://bbs.pediy.com/showthread.php?t=16061
一样
用法:
代码:
typedef int (*pFunc1)(int);
pFunc1 g_proc;
__declspec(noinline) int Func1(int a)
{
return 10;
}
__declspec(noinline) int my_hookFunc1(int a)
{
if (g_proc)
{
// Function hooked!!
return g_proc(a);
}
return 0;
}
void hook()
{
g_proc = (pFunc1) stools::hook::HookFunction(Func1, my_hookFunc1);
int ret = Func1(10);
stools::hook::UnhookFunction(g_proc);
}