frida搭建+使用

admin 2025年1月14日23:30:30评论16 views字数 2610阅读8分42秒阅读模式

frida搭建

https://frida.re/

它主要是逆向分析安卓apk应用的,对应用有hook的需求

感觉上来看很像做pwn题的时候,那种gdb.attach()的调试阶段

分析代码逻辑,进行执行流的控制,方法调用

frida安装

pip install frida-tools
frida --version #16.6.1

模拟器安装、adb设置

模拟器开root、开发者模式、usb调试

adb connect 127.0.0.1:21503
adb devices
adb shell
#getprop ro.product.cpu.abi
#x86_64
exit

https://github.com/frida/frida/releases下载对应server版本

frida-server-<Frida版本>-android-<设备架构版本>.xz

解压缩后将文件传输过去

adb push E:xiaoyaofs /data/local/tmp

adb shell
cd /data/local/tmp
ls -la
chmod 777 fs
./fs

运行fs,此窗口不要再用,另起新窗口

#adb forward tcp:27042 tcp:27043
frida-ps -U #出现进程信息即可

安卓抓包

因为用到了模拟器,顺便记录一下抓包,用的yakit演示了,差不多

在模拟器对wifi设置代理:物理机ip+yakit端口,yakit也是同样的设置

frida搭建+使用

然后在模拟器的浏览器去访问 证书下载地址:http://mitm 安装即可

其它

https://sourceforge.net/projects/dex2jar/

http://java-decompiler.github.io/

如果是反编译源码:

d2j-dex2jar.bat "test.apk"#将apk转化为jar文件

再用jd-gui打开即可,当然了,有的进行了混淆的话,可能要尝试其它工具,比如jadx-gui、mobsf

https://github.com/skylot/jadx

这个是用于反编译apk文件的

java -jar apktool_2.9.3.jar d test.apk

参考

安装参考:
https://blog.csdn.net/qq_45429426/article/details/125187375

包括了模拟器安装(root设置、开发者模式、usb调试)+frida安装+adb安装

https://github.com/frida/frida/releases

https://sourceforge.net/projects/dex2jar/

http://java-decompiler.github.io/

模拟器:
https://www.memuplay.com/zh/download.html

frida hook:
https://blog.csdn.net/fuhanghang/article/details/139793202

https://www.freebuf.com/sectool/236911.html

frida应用

HTB_APKey

(Mobile)Easy

frida搭建+使用

登录提示 Wrong Credentia...

.dex-tools-v2.4d2j-dex2jar.bat .apkAPKey.apk
jd-gui分析jar文件

frida搭建+使用

这样的内容,嘶,是我哪一步有问题?

后面一查,就是说这种有大量字节码,且函数名不规范,是因为做了混淆

后面用了jadx-gui,它自带反混淆

frida搭建+使用源码

可以看到点击功能的代码逻辑,会检测密码是否与这个md5匹配

两种方法:

1.将源码改成,和该md5不匹配(或者改成一个可爆破的md5值),再用apktool编译成新的apk,是wp1的做法

2.frida进行hook

frida_hook

这里参考wp2用frida进行hook

https://www.cnblogs.com/codex/p/12986070.html frida hook构造

示例是这样写的:

//Java.Perform 表示 Frida 将会从这里开始执行JavaScript脚本。
Java.perform(function () {

//定义一个变量ClassName,Java.use 后面指定想要Hook的类SecondActivity
var ClassName=Java.use('com.example.SecondActivity');

//hook该类下的myFunc1方法,implementation 表示重新实现它
    MainActivity.myFunc1.implementation = function () {
        send("Hook Start...");

//调用SecondActivity类中的 calc()方法,获取返回值
varreturnValue=this.calc();
    }
});

我要的只是这一段的内容

makeText = Toast.makeText(applicationContext, b.a(g.a()), 1);
makeText.show();

根据这段代码,先找到两个类名,就是上面的b类,还有g类,a只是它们的方法

//Java.Perform 表示 Frida 将会从这里开始执行JavaScript脚本。
Java.perform(function () {

var Class1=Java.use('c.b.a.b');
var Class2=Java.use('c.b.a.g');

    console.log(Class1.a(Class2.a()));
});
frida -U -l myhook.js APKey
frida搭建+使用

总结

学到了apk反编译、frida基础使用

参考

wp1:
https://nathanule99.gitbook.io/ctf-write-ups/walk-throughs/mobile/apkey

wp2:
https://mateuszmatyska.github.io/posts/apkey.html

frida_hook构造:
https://www.cnblogs.com/codex/p/12986070.html

混淆实例:
https://blog.csdn.net/weixin_42555014/article/details/129854278

原文始发于微信公众号(羽泪云小栈):frida搭建+使用

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月14日23:30:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   frida搭建+使用https://cn-sec.com/archives/3629220.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息