能力值:
( LV2,RANK:10 )
|
-
-
51 楼
感谢楼主的汇总。hook简直是android开发必备的技术,至少得了解原理,无奈国内资料太少。
|
能力值:
( LV3,RANK:30 )
|
-
-
52 楼
收藏一份,感谢
|
能力值:
( LV2,RANK:10 )
|
-
-
54 楼
谢谢分享, 你们的编译环境是弄的, 我在ubuntu14 的ndk环境下. 编译通不过?
|
能力值:
( LV2,RANK:10 )
|
-
-
56 楼
学习一下!
|
能力值:
( LV2,RANK:10 )
|
-
-
57 楼
mark一下……
|
能力值:
( LV2,RANK:10 )
|
-
-
58 楼
用楼主的 inline hook , 发现 hook 此函数运行不正常,以下是函数开头几行汇编
.text:000317E0 PUSH.W {R4-R11,LR}
.text:000317E4 VPUSH {D8-D9}
.text:000317E8 VMOV S16, R2
.text:000317EC SUB SP, SP, #0x4C
.text:000317EE LDR R5, =(_GLOBAL_OFFSET_TABLE_ - 0x317FA)
.text:000317F0 MOV R4, R0
|
能力值:
( LV9,RANK:310 )
|
-
-
59 楼
多谢反馈!由于涉及指令众多,之前实现时只对个人认为比较常见的指令进行了处理,并未将T模式特殊的vpush vmov等指令处理,陆续加上。 就其出错原因是:这段Thumb汇编第三条指令为vmov指令占4个字节,替换时只替换了前2字节,将指令识别成了2条,故出错
|
能力值:
( LV2,RANK:10 )
|
-
-
60 楼
多谢楼主指点!
|
能力值:
( LV2,RANK:10 )
|
-
-
61 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
62 楼
楼主,有几个地方不明白,望解答!
指令替换怎么做的?
是用 shell code还是直接用二进制编码, 如果是二进制编码,怎么把汇编翻译成 二进制码?
如果是用 shell code 那么是编译成 arm 模式呢还是 thumb 模式? 据我理解, 如果被hook的函数是 thumb ,用来替换的指令应该也是thumb,但是跳到的地址应该是 arm,这个该怎么做呢?
另外 是什么指令是不是判断 指令的第 25~28位? 来决定是否是相对PC的指令?这个参考 arm 32bit 手册吗?
|
能力值:
( LV9,RANK:310 )
|
-
-
63 楼
指令替换使用指令二进制实现。
指令分为A 和 T/2模式,分情况处理。 模式切换有相应指令,参看手册即可
|
能力值:
( LV2,RANK:10 )
|
-
-
64 楼
楼主又有问题了,我在自身lib中进行如下调用,发现hook不成功,是哪里用错了吗?
HookStruct HookPara;
strncpy(HookPara.SOName, "libndktest.so", strlen("libndktest.so"));
strncpy(HookPara.FunctionName, "strlen", strlen("strlen"));
HookPara.NewFunc = (void *)my_strlen;
PTK_HookImportFunction HookImportFunction = (PTK_HookImportFunction) dlsym(handle, "TK_HookImportFunction");
int ret = HookImportFunction(&HookPara);
|
能力值:
( LV9,RANK:310 )
|
-
-
65 楼
额,我试了,没什么问题。 你再试试,还是没解决的话,你直接私信我吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
66 楼
问题解决了,另外期待楼主支持V指令的版本.
|
能力值:
( LV3,RANK:30 )
|
-
-
67 楼
感谢好文!
请教楼主个问题:
我做inline hook的时候,有时候需要插入自定义代码。PE的情况下,通过新加区段可以轻松把自己的代码插入。但是ELF我用类似的方法做,却无法成功。很多ELF的.text段并无空间。学习了ELF个时候可以知道,仅增加section似乎是不够的,因为无法被loader加载到内存。但是尝试增加segment,连so都无法正常加载了。请教楼主,怎么增加代码段以便插入代码呢?
|
能力值:
( LV3,RANK:20 )
|
-
-
68 楼
导出表hook不太清楚,比如有一个第三方的SO中的导出函数A,那么要注入哪个进程空间并对其st_value进行修改?才能达到hook住所有对函数A的调用?
|
能力值:
( LV2,RANK:10 )
|
-
-
69 楼
学习啦 !
|
能力值:
( LV2,RANK:10 )
|
-
-
70 楼
顶顶顶顶
|
能力值:
( LV2,RANK:10 )
|
-
-
71 楼
学习学习。。。。。感谢分享!
|
能力值:
( LV2,RANK:10 )
|
-
-
72 楼
楼主帮我看下,用你的动态库 inline hook 这个函数执行不正常,貌似指令没有跳回来,是不是有相对寻址?另外能看出这是arm还是thumb指令不?
.text:002025AC STMFD SP!, {R11,LR}
.text:002025B0 ADD R11, SP, #4
.text:002025B4 SUB SP, SP, #0x18
.text:002025B8 STR R0, [R11,#var_10]
.text:002025BC STR R1, [R11,#var_14]
.text:002025C0 STR R2, [R11,#var_18]
|
能力值:
( LV9,RANK:310 )
|
-
-
73 楼
ARM指令,只需替换前三条指令。 HOOK应该没什么问题,你动态调试下SO看看是哪里的问题。
还存在问题的话,你直接私信我吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
74 楼
谢谢分享。
|
能力值:
( LV2,RANK:10 )
|
-
-
75 楼
默默的赞下
|
|
|