安卓逆向2025 Frida学习之ollvm分析(三)

admin 2025年4月15日08:47:43评论1 views字数 3075阅读10分15秒阅读模式
接上篇
安卓逆向2025 -- Frida学习之ollvm分析(一)
安卓逆向2025 -- Frida学习之ollvm分析(二)
环境及工具

https://pan.quark.cn/s/49854369545f

安卓逆向2025  Frida学习之ollvm分析(三)
一、当前面的加密函数都找不到的时候,我们就只能从JNI_OnLoad入手了
安卓逆向2025  Frida学习之ollvm分析(三)
安卓逆向2025  Frida学习之ollvm分析(三)
二、发现里面没有RegisterNatives函数,一般v9=0LL这个变量是JNIENv类型,我们修改一下,系统就识别出来了RegisterNatives函数。
安卓逆向2025  Frida学习之ollvm分析(三)
三、hook RegisterNatives
function aiyou() {    var module_libart=Process.findModuleByName("libart.so");    var symbols=module_libart.enumerateSymbols();    //首先获取libart.so模块并枚举其中的所有符号    var addr_RegisterNatives = null;    //声明变量用于存储找到的JNI函数地址,初始化为null    for (var i = 0; i < symbols.length; i++) {            var name = symbols[i].name;        if (name.indexOf("art") >= 0) {        //检查符号名是否包含"art"(ART虚拟机相关符号)            if ((name.indexOf("CheckJNI") == -1) && (name.indexOf("JNI") >= 0)) {                //如果符号名包含"RegisterNatives",打印名称并保存地址                if (name.indexOf("RegisterNatives") >= 0) {                    console.log(name);                    addr_RegisterNatives = symbols[i].address;                }            }        }    }    if (addr_RegisterNatives) {        Interceptor.attach(addr_RegisterNatives, {            onEnterfunction (args) {                console.log("addr_RegisterNatives:"hexdump(args[2]));                //打印第三个参数                console.log("addr_RegisterNatives name:"ptr(args[2]).readPointer().readCString())                //打印第一个native方法的名称                console.log("addr_RegisterNatives sig:"ptr(args[2]).add(Process.pointerSize).readPointer().readCString());                //打印第一个native方法的签名                }, onLeavefunction (retval) {            }        });    }}aiyou()
四、在JNI_OnLoad函数里这里也是通过异或加密的字符串,我们通过hook汇编代码获取解密信息
安卓逆向2025  Frida学习之ollvm分析(三)
五、按tab切换到汇编代码
安卓逆向2025  Frida学习之ollvm分析(三)
六、hook w13的结果
function inline_hook() {    var base_hello_jni = Module.findBaseAddress("libhello-jni.so");    console.log("base_hello_jni:", base_hello_jni);    if (base_hello_jni) {        console.log(base_hello_jni);        //inline hook        var addr_07320 = base_hello_jni.add(0x07320);        Interceptor.attach(addr_07320, {            onEnterfunction (args) {                console.log("addr_07320 x13:"this.context.x13);            }, onLeavefunction (retval) {            }        });    }}function hook_dlopen() {    var dlopen = Module.findExportByName(null"dlopen");    Interceptor.attach(dlopen, {        onEnterfunction (args) {            this.call_hook = false;            var so_name = ptr(args[0]).readCString();            if (so_name.indexOf("libhello-jni.so") >= 0) {                console.log("dlopen:"ptr(args[0]).readCString());                this.call_hook = true;            }        }, onLeavefunction (retval) {            if (this.call_hook) {                inline_hook();            }        }    });    // 高版本Android系统使用android_dlopen_ext    var android_dlopen_ext = Module.findExportByName(null"android_dlopen_ext");    Interceptor.attach(android_dlopen_ext, {        onEnterfunction (args) {            this.call_hook = false;            var so_name = ptr(args[0]).readCString();            if (so_name.indexOf("libhello-jni.so") >= 0) {                console.log("android_dlopen_ext:"ptr(args[0]).readCString());                this.call_hook = true;            }        }, onLeavefunction (retval) {            if (this.call_hook) {                inline_hook();            }        }    });}hook_dlopen()
七、运行结果
安卓逆向2025  Frida学习之ollvm分析(三)
八、将x13的结果放到十六进制编辑器查看结果
安卓逆向2025  Frida学习之ollvm分析(三)

· 今 日 推 荐 ·

听歌有惊喜,包邮送书哦!!!欢迎私聊,vx:ivu123ivu

将下面地址复制到浏览器即可欣赏 

http://163cn.tv/DdLCYjl 

(来自@网易云音乐)

安卓逆向2025  Frida学习之ollvm分析(三)

本文内容来自网络,如有侵权请联系删除

原文始发于微信公众号(逆向有你):安卓逆向2025 -- Frida学习之ollvm分析(三)

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

发表评论

匿名网友 填写信息