吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5797|回复: 15
收起左侧

[Android 原创] [学习记录]frida hook java层和native层方法

  [复制链接]
好难呀 发表于 2021-3-21 15:22
1.hook java层方法
前置的环境安装环境略过,看参考文档
代码如下,自己学习,所有就比较简单了。

hook的js代码





实际步骤:
   1.连接设备,获取对应app数据
   2.加载js代码
   3.发送代码给设备上的server端
   4.执行代码
   5.代码hook到对应函数,修改返回值
2.hook native层方法
js 代码和so文件中的函数如下
3.PNG

4.PNG

实际步骤:
    1.前面操作与java一致
    2.代码执行步骤:1.获取对应so文件对象(实际上就是获取地址)
                                 2.onEnter 是修改参数的,本次没有
                                 3.onLeave 是修改返回值,返回值是一个字符串,所以需要创建一个“字符串",这个字符串不能直接使用双引号去填写。只能使用env把字符串改变成so文件可以执行的字符串类型,或用类似方法。
                                 4.使用replace()替换字符串。
遇到的问题:
在hook native层的时候遇到了两个问题,花了很久时间(实际就是自己太菜)。
第一个问题:一直出现报错 expected a pointer
自己最开始并不知道哪里出现了问题,是查看了资料之后发现findExportByNaem参数是需要寻找SO文件地址。
于是使用Module.findBaseAddress("libjnipro.so");函数获取地址验证是否可以获取到。发现frIDA读取内存获取SO文件一直为null.
虽然找到了报错原因,但是一直不知道这么解决。
省略N个错误尝试
最后发现我使用雷电模拟器 其中使用的frida server  是x86框架编译。
而app包体只有arm编译SO文件。
于是我修改了Android Studio 上的编译框架,加入x86。
就没有出现这个问题了。
备注:demo是自己编写的是可以这样修改,若是其他人的包体,遇到这个问题,可以尝试修改server版本或者换模拟器/真机吧。

第二个问题:虽然可以读取到SO文件了,但是使用replace("123466") 替换返回值出现报错。报错信息忘了。。
上网查看了一些资料和教程,基本都是用replace替换int类型,但我需要替换字符串类型。
最后是想到了so文件数据类型和上层语音的数据类型不一致(差别很大,java,js,python与底层的类型都不一样)。
后续才查找到frida 中Java.vm.getEnv()方法。





免费评分

参与人数 4吾爱币 +10 热心值 +3 收起 理由
peterzzx + 1 + 1 我很赞同!
qtfreet00 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
杨辣子 + 1 + 1 谢谢@Thanks!
玉金 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 好难呀 发表于 2021-3-26 11:25
听风没有雨 发表于 2021-3-26 09:44
frida 实现原理是什么?

原理你得看源码了,主要看frida-server的源码,工作过程就是PC端发送js代码到设备端的server去运行。
就是一个客户端一个服务器端一样。
具体的我也不知道。帮助文档好像也没说具体的底层原理。
418 发表于 2022-12-25 15:58
jinhu702 发表于 2021-3-22 15:26
frida无法hook  so层,只能是dex的,对于x86,模拟器的 支持不了,那个大佬有解决方案么

雷电模拟器4可以,看这篇文章https://blog.csdn.net/lyshark_lyshark/article/details/125848267
 楼主| 好难呀 发表于 2021-3-21 15:25
图片没了。。。我去,不过那个部分比较简单,没了就没了。

再加一个参考文档
https://www.52pojie.cn/thread-1128884-1-1.html
jinhu702 发表于 2021-3-22 15:26
frida无法hook  so层,只能是dex的,对于x86,模拟器的 支持不了,那个大佬有解决方案么
骚断腿的王同学 发表于 2021-3-22 16:48
666666666
z55 发表于 2021-3-23 15:00
66666666666
daxiang789 发表于 2021-3-23 19:33
mark备用,感谢分享
总想搞个大新闻 发表于 2021-3-25 19:16
感谢分享,学到了
听风没有雨 发表于 2021-3-26 09:44
frida 实现原理是什么?
 楼主| 好难呀 发表于 2021-3-26 11:22
jinhu702 发表于 2021-3-22 15:26
frida无法hook  so层,只能是dex的,对于x86,模拟器的 支持不了,那个大佬有解决方案么

上面不是有说嘛。用真机呗,或者换个模拟器,我用雷电是可以使用X86的。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-19 11:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表