IDA6.8 爱加密脱壳简单示例

第一步:将手机的 /system/lib/libart.so 文件拷贝出来.

注:↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

5.0以下的系统是/system/lib/libdvm.so

5.0级5.0以上的是/system/lib/libart.so

adb pull /system/lib/libart.so C:\Users\Administrator\Desktop

第二步:使用IDA静态分析libart.so文件,找到进入JNI_OnLoad上函数的汇编代码

(1) 

(2)

(3)

(4)JNIO_OnLoad地址值给了R12,接下来紧盯R12即可(dlsym是安卓系统函数,返回的是JNI_OnLoad的地址,各系统版本源码略有差异,具体参考安卓系统源码)

此时,记住BLX R12这个汇编代码的地址: 24A61E ,然后回到LoadNativeLibrary这个函数的起始位置,获取它的起始地址(上述的汇编代码均是这个LoadNativeLibrary函数的内容)

(5) 取得这两个地址后,计算偏移: 24A61E - 24A188 = 0x496

 

 

第三步:使用IDA动态调试启动APP,通过偏移得到进入JNI_OnLoad函数的位置

(1)

(2)

(3)

(4)设置断点

(5)当运行到断点这个位置是,F7进入便可看到JNI_OnLoad函数,能看到OnLoad函数即表示dex文件已加载完毕

(6)dex文件加载完毕后,我们可通过OpenMemory..设断读取dump出dex

(7)

(8) Shift + F2打开执行脚本界面,输入脚本

static main(void)
{
    auto fp, dexAddress, end, size;
    dexAddress = 0xB3AA11F0;
    size = 0x4F0;
    end = dexAddress + size;
    fp = fopen("C:\\Users\\Administrator\\Desktop\\1.so", "wb");
    for ( ; dexAddress < end; dexAddress++ )
    fputc(Byte(dexAddress), fp);
}

 完!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值