首页
社区
课程
招聘
[求助] APK加固SO逆向求助
发表于: 2025-6-24 17:03 1143

[求助] APK加固SO逆向求助

2025-6-24 17:03
1143

背景

      APK有so加固和dex加固。

      启动会检测环境以及反调试,然后主动crash。

     

初步分析

     根据frida启动打印的crash stackTrace和jadx分析,确认最前期的启动初始化的逻辑


     首先ProtectedAppApplication类的attachBaseContext方法里加载 xxboot.so


     然后在attachBaseContext和onCreate方法里调用3个xxboot里的native方法

     分别是 vCtFD x iwjhDgm

     

     其中检测操作以及crash操作就是在 vCtFD 方法触发

     x 方法返回一个初始化的 byte[] ,一堆操作后给 vCtFD 做参数

     iwjhDgm 感觉像最前面做初始化操作的

     

尝试方法1

    frida hook这些native方法,直接bypass掉,确实没crash,但后面会立马报错找不到一些class,说明核心类的加载逻辑和防护逻辑强关联。

    感觉这个路走不通,毕竟不可能设计的这么简单。


尝试方法2

   硬啃,争取把解密后的so dump出来,看能不能找到这几个native方法的代码。

   基于 dump_so.js 这个 dump出了xxboot.so,放到ida里看了下,和原始的比,稍微强了点,String View里能看到一些明文串,JNI_OnLoad能看到的逻辑也多了点,但没什么用,还是些sub_xxx 和看不到名字的 __fastcall 方法,全局搜索也没有和3个native函数名相关的任何东西。


  小菜安卓做的不多,请各位佬来指点下,有些什么操作可以看到这3个native方法,或者这种类型问题应该用其他的路子。



[尝试hook so动态注册的的函数]

通过hook RegisterNative 打印出6个动态注册的方法,其中有3个是可以看到名字和模块名,可以和java层的native方法对应上,还有3个匿名函数。

<libxxboot.so> method_name => void com.xxx.iwjhDgm() ,offset=> 0x7443e473d4 0x13d4 ,module_name=> libxxboot.so ,module_base=> 0x7443e46000
<libxxboot.so> method_name => byte[] com.xxx.x() ,offset=> 0x7443e4754c 0x154c ,module_name=> libxxboot.so ,module_base=> 0x7443e46000
<libxxboot.so> method_name => void com.xxx.vCtFD(java.lang.Object) ,offset=> 0x7443e475e8 0x15e8 ,module_name=> libxxboot.so ,module_base=> 0x7443e46000


<anonymous> method_name => , addr => 0x7443da67b8
<anonymous> method_name => , addr => 0x7443da6918
<anonymous> method_name => , addr => 0x7443d9010c


   奇怪的事情来了,我一开始以为这样就找到了native方法对应的地址,然后用地址去hook 方法 com.xxx.vCtFD ,同时hook对应java层的方法。


   最后日志显示 java层的vCtFD 方法被调用了,但用地址hook那个没反应。

   后面把这6个注册的方法都hook上,再次运行测试。


  确认每次执行java层的 vCtFD 方法时 ,so层 执行的是方法 0x7443da6918


  且测试多次发现这个方法的地址始终在module的base前面,且差值不是固定的,

     

    0x7443dd2918 - 0x7443eb1000 = -0xde6e8

    0x7443ddb918 - 0x7443e98000 = -0xbc6e8

    0x7443da6918 - 0x7443e46000 = -0x9f6e8


  大佬门来指点下这是什么trick,怎么搞。

     



[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

最后于 2025-6-26 16:48 被cool_kk编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1495
活跃值: (3678)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
hook RegistNative函数看函数注册地址,然后IDA分析这些代码。论坛有脚本
2025-6-25 18:53
0
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
WMBa0 hook RegistNative函数看函数注册地址,然后IDA分析这些代码。论坛有脚本

谢谢,试过了,遇到盲区了(更新在帖子末尾了),佬帮指点下。

最后于 2025-6-26 18:02 被cool_kk编辑 ,原因:
2025-6-26 16:49
0
雪    币: 167
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
现在咋样了有没有解决
2025-7-12 01:19
0
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
so dump出来了,环境检测过掉了。还有个疑似双调用反调试还要过。
2025-7-17 11:36
0
游客
登录 | 注册 方可回帖
返回