本教程只用于学习探讨,不允许任何人使用技术进行违法操作,阅读教程即表示同意! 什么是frida? frida是一个hook原生安卓开发app的一个框架,也不止安卓,像ios和win等,都支持,但是好像看到用的不太多。 注意,是原生,就是用Java安卓开发的app。 还有些是H5之类的,这些是hook不成的,当然,市面上最起码80的app都是原生开发,不必担心。 再说,H5开发的不是更容易破解?懂的都懂! 什么是hook? hook英文是钩子的意思,可以理解为一堆水管流水,我在某个水管中间挖一个洞,操作一波再继续流。 当然,我也可以只看看某个水管有没有水。 上述这个过程就叫做修改和验证! 创建Python虚拟环境 可以使用编写的简单Python环境管理器快速创建一个虚拟环境,可视化就是好,再也不用记该死的命令了! 相关链接:https:blog。csdn。nettianyi19articledetails121387317?spm1001。2014。3001。5501 这里已经创建完毕,虚拟环境名为fridaenv 我的环境pixel2Android8(已root)通过usb连接电脑 Magisk23。0 Xposed3。1。5 Python3。8。6 frida版本和Android系统版本和Python版本frida12。3。6Android56Python3。7 frida12。8。0Android78Python3。8 frida14Android9Python3。8 当然,这是一个差不多的参考价值,不一定准,具体情况具体分析。 frida安装 在安装frida时,尽量科学上网,因为frida好像会下载一些东西,不科学上网非常慢。。。可能会卡住很长时间! 依赖包 根据我的环境,这是我的依赖包,在虚拟环境中pip安装即可!frida14。2。18 fridatools9。2。5 验证 安装完成之后,分别执行fridaversion和导入frida,如果没有报错则表示安装成功! fridaserver安装 fridaserver下载链接:https:github。comfridafridareleases 注意事项 fridaserver版本和pip安装的frida版本要一致 平台要选对,手机是安卓还是ios?arm32还是arm64?还是模拟器? 综上所述,我pip的frida版本为14。2。18,手机是arm64,所以要下载这个! 将fridaserver推送到手机上adbpushxxfridaserver14。2。18androidarm64datalocaltmp 查看手机datalocaltmp下面的fridaserver文件 确实存在,ok。 给fridaserver文件复制权限chmod777fridaserver14。2。18androidarm64 运行fridaserver文件。fridaserver14。2。18androidarm64 这样就已经运行起来了,他是不会有提示的,是直接wait在这的! 注意啊,这个cmd窗口是不能关的,一直挂这就行! 验证 激活上述创建好的虚拟环境,执行以下命令。fridapsU 如果出现以下信息,表示正确!这是手机的一些信息,表示能获取到。 到这,pc端的frida和手机端的fridaserver就建立成功了,主要流程就是 pc端安装frida 手机端运行fridaserver 老版本注意事项 如果frida版本12,好像是要进行端口转发的adbforwardtcp:27042tcp:27042 关于frida和fridaserver的总结 pc上配置frida没什么好说的了,创建一个虚拟环境,安装frida就好了。 手机上的话,第一次需要把fridaserver拷贝到datalocaltmp下和chmod 然后运行这个fridaserver,命令总结一下大概为:adbshell su cddatalocaltmp 。fridaserver14。2。18androidarm64 下次使用直接复制就可以了! WebStorm安装 因为frida使用的是js语言,并且需要安装一个代码自动提示插件,所以WebStorm最合适,官网下载点击下一步下一步即可。 这里不做叙述。 嗯,还需要安装node,自己折腾吧! WebStormfrida配置 创建一个空项目,选择合适的目录。 打开项目,点击下面的Terminal,输入npmitypesfridagum安装frida代码自动提示。 这不,关于frida的代码就能自动提示了! 题外话 不一定非得用webStorm,主要是用npmitypesfridagum来安装代码自动提示,只要安装上,pycharm,idea,vs都可以出提示的,但是还是jetbrains公司的东西好使! 小试牛刀之某某牛流程验证apkxx牛。apk 抓包分析 通过Charlespostern进行抓包,发现登录用的接口为http:api。dodovip。comapiuserlogin 可以发现带的数据是一个{Encrypt:xxx},擦,这是什么玩意啊??? apk反编译 这个apk是没有加固的,通过反编译搜索一下userlogin试试!!! 找到了两处userlogin,其中一个是login函数! 那么,现在问题来了,到底userlogin走的是不是login?如何验证? frida辅助分析代码Java。perform(function{ console。log(开始hook); 找到要hook的类 letloginActivityJava。use(com。dodonew。online。ui。LoginActivity); 重写hook的函数 loginActivity。login。implementationfunction(userName,pwd){ console。log(login函数执行); console。log(userName:,userName); console。log(pwd:,pwd); 再执行原来的login,保证程序正常执行 returnthis。login(userName,pwd); } }) 代码解读 启动frida命令fridaUFlxx牛。js U连接USB设备 F附加到最前面的app l注入的js 示例 查看是否hook上 此时点击手机上面的登录按钮,然后看pc上控制台的输出! 确实输出了,经过验证,确实是执行了这个login。 然后你再进行一遍hook和分析即可。 下节课就来分析如何自动登录这个app! 总结 想要玩转hook,大概分为以下几步 pc创建虚拟环境,安装frida。 pushfridaserver到手机上,并且运行起来挂那。 编写hook代码。 人生没有白走的路,加油! 如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。