首页
社区
课程
招聘
[分享]静态分析-IDA绕过so层root检测
发表于: 2022-2-2 15:32 7113

[分享]静态分析-IDA绕过so层root检测

2022-2-2 15:32
7113

  1.介绍

在安卓开发中,有些功能是通过C/C++实现的,编译之后为so结尾的可执行文件,放在apk的lib目录中,通过android killer反编译之后只能看到java代码,要分析so的逻辑,需要通过ida对其反编译。

  1.介绍

JNI是Java Native Interface的缩写,通过使用Java本地接口编写C/C++代码,可以确保代码在不同的平台上移植,对逆向工程师来说,逆向so的难度要高于逆向java。

  1.介绍

1)静态分析可执行文件(pe, elf, so, MachO)

2)动态调试可执行文件

  1.把程序实例拖进Androidkiller工具,打开AndroidManifest.xml文件,找界面入口点:

  2.找到com.kanxue.kctfso包下面的MainActivity文件,打开smali文件

似乎进行了root检测,但是定义了native关键字,一个Native Method就是一个java调用非java代码的接口,上下翻动,看不到if指令,这种就没办法从java层绕过了。

  3.将apk文件后缀名改成zip,用压缩软件打开,找到lib目录,以为模拟器是x86,32位的,所以去对应的目录下找到so文件,然后使用IDA加载。

  4.找到java开头的,这个通常就是JNI函数,打开后是汇编代码,看不懂不要紧,F5反编译一下,就能看到伪代码了,还是回到反汇编模式,按一下空格键,查看函数流程图。

  5.这里的cmp,jz对应的就是if指令,点edit,patch,Assemblem Instruction,修改jz为jnz,逻辑反转,改完之后再点edit,patch,apply patch保存一下。

  6.关掉IDA,改后的so文件放回去,然后打开AndroidManifest.xml,找到android:extractNativeLibs="false",将false改成true,编译的时候才会加载我们本地的so文件,重新打包编译一下,重新安装,打开app。

  7.app成功打开,可以看到已经绕过root检测了。

 
 
 
 
<activity android:name="com.kanxue.kctfso.MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 4
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//