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); }