立即注册,突破游客限制,与技术大牛交流切磋,畅享海量资源,让你的技术之路不再孤单!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
如果一个so层函数名字被抹去,你需要通过so基地址+函数偏移的方式进行hook。
其实也就是通过偏移进行hook,如下图通过偏移hook一个函数。
32位so文件:
- Java.perform(function() {
- // 在目标 Java 进程中执行一段 JavaScript 代码
-
- // 找到 "libhello.so" 这个 SO 文件的基地址
- var soAddr = Module.findBaseAddress("libhello.so");
- send("soAddr: " + soAddr);
-
- // 计算 MD5Final 函数的地址
- // 这里假设 MD5Final 函数相对于基地址的偏移是 0x1768
- // 32 位系统上,由于对齐方式的原因,需要加 1
- var MDSFinalAddr = soAddr.add(0x1768 + (Process.arch == 'arm' ? 1 : 0));
- send("MD5FinalAddr: " + MDSFinalAddr);
-
- // 拦截 MD5Final 函数
- Interceptor.attach(MDSFinalAddr, {
- // 当函数被调用时
- onEnter: function(args) {
- // 打印函数的参数
- send(args[0]);
- send(args[1]);
- },
- // 当函数返回时
- onLeave: function(retval) {
- // 打印函数的返回值
- send(retval);
- }
- });
- });
复制代码 64位so文件:
- Java.perform(function() {
- // ... 其他代码与 32 位版本类似 ...
-
- // 64 位系统,不需要加 1
- var MDSFinalAddr = soAddr.add(0x1768);
-
- // ... 其他代码 ...
- });
复制代码
|