1. 首页 > 快讯

《Android逆向》360度强化脱壳解析,一步步教你如何操作

首先直接看这个so库:

拖入IDA静态查看一下:发现看不到任何信息。原因很简单,因为已经加工过了;

该怎么办?使用010对so进行简单修改:

拖入IDA,使用ELF.b进行识别:

识别效果:

标题描述了有关关节的信息:

首先修改该section的偏移量:

这三个:

保存后,继续拖入IDA:没有报任何异常,可以识别出一些东西:

为什么这能成功?因为我们去掉了section相关的信息之后,它就开始解析segment信息了;

查看导出的函数列表,发现函数名也被处理了,但是仍然可以看到JNI_Load:

双击它仍然可以看到一些信息;

ctrl+S,过来看看:

点击sub_1AD8:发现没有信息~

直接F5查看JNI_Load信息:

修改参数:

如果你点进去看下面的函数,你什么也看不到;

返回装配窗口:

双击后:

继续关注:

过来后:

发现是switch环路;

按F5:

树枝很长,什么也看不见;直接动态分析;

《Android逆向》360度强化脱壳解析,一步步教你如何操作

对这个函数的分析也是在open函数下进行破解:

F9后加载这个so:

在链接器处中断:

libdvm 已损坏:

F9后,链接器断开:

F7进去没有发现什么;

继续断开F9linker,然后F7:

F7下去发现一个函数:

进入后进入libdvm.so,这是和getenv相关的;

回来后继续F7,这里有一个函数:

F7输入:如下:

过来后:

F7下来,这里有一个功能,

进去:F7往下,你发现这里有一个循环:不断比较R2和R3的值;

F4之后,再往下F7,来到跳转表:

继续F7向下,我们来到case26分支:

一直F7下去,有一个BLX功能:

F7下降,同步R1寄存器;找到关键字;

再往下是一个循环,它同时同步R3 寄存器并解密字符串:

再往下,又一个循环:通过R2寄存器

继续按F7,

继续F8 向下:来到这里:

按F7 继续;这是一个循环,不断读取并比较R0 的值;

如果这里的BEQ相等的话,就会直接跳到这里:

《Android逆向》360度强化脱壳解析,一步步教你如何操作

上面是从链接器到JNI_Load,也就是说链接器中没有进行任何操作。因此,可以改成直接在libdvm中查找JNI_onload;

复用一个方法,使用open函数,回溯;

跳转到open函数,然后F2中断,然后F9运行,然后Ctrl+F7回溯:

同步R0窗口时出现这个,说明正在遍历tracepid。

继续回溯:

继续回溯:

为什么我之前再次运行程序时会崩溃?

原因是程序中此时R1寄存器的值:

这个值是什么意思?

我们先把4A24转换成十进制:18980

执行adb命令:这是当前的as进程;这意味着它检测到我们正在调试程序;

所以我们需要摆脱这种反调试:

也就是说,case26是反调试分支;

进行修改后,继续回溯:

继续原路返回,来到这个位置;

继续回溯:

此时R0与0进行比较,R0的值仍然是as的进程号;

如果不相等则跳转到这里

点击进去发现它被kill了:

会来,p起来,它是一个函数,

进入:p:

显然这是反调试的逻辑,而且这个分支代码较多;

我们该如何修改呢?我们只需要让这个函数返回一个固定值即可;

在修改代码之前,将其设置为零;

《Android逆向》360度强化脱壳解析,一步步教你如何操作

同步反汇编窗口,点击此处显示下面对应的十六进制值:

这是手臂指令,

执行修改指令: 第1条:

选择最后8位,使用F2修改:

继续修改第二篇文章:

修改后效果:

反调试通过后,在mmap处断点:mmap末尾也有一个断点;

OK,F9运行程序:使其成为mmap处的函数段;

这里如何查看mmap?在第二级,F9运行到mmap函数的末尾,然后F7进入下一步,也就是调用不同的函数的地方。如果您遇到libdvm.so,请不要担心。直接F9继续蹲在mmap处,只观察jiagu.so;

注意mmap的操作:不能直接F9从头到尾截断。您需要一步一步地遵循它。即将进入的so也必须一步跟一半,然后F9;

如果继续执行上述操作,这里首先会出现apk信息:

继续操作,出现:

继续:dey036出现在下面的R0窗口中;

继续操作,这里出现dex相关信息:

看看他的地址,我们就得出了他的范围:

来到这里后,这些是他解密的dex

这是该dex 文件的大小:

一旦知道起始地址和大小,请使用以下脚本:

转储可能需要时间;

也就是说,当出现相关的dex文件时,如果出现的信息不多,我们可以使用ctrl+s来查看模块信息。一般会将dex相关信息放在其他区域;

一般情况下,解密后的dex是放在内存中的。例如,将其放置在调试中:

OK,找到转储的文件;

拖入jdax,这是一些相关代码;

用户评论

折木

这篇文章简直是宝藏!终于找到一篇可以完整讲解脱壳的教程了!

    有14位网友表示赞同!

花海

360度解析,看来很全面!

    有7位网友表示赞同!

陌潇潇

太赞了!这篇文章终于让我对Android逆向有了更深的理解!

    有11位网友表示赞同!

采姑娘的小蘑菇

学习脱壳,这篇文章应该能帮上大忙!

    有18位网友表示赞同!

无望的后半生

一步步操作,很适合新手入门!

    有11位网友表示赞同!

剑已封鞘

脱壳教程,收藏了!

    有6位网友表示赞同!

神经兮兮°

感觉这篇文章有点难,但我还是得认真学!

    有13位网友表示赞同!

╭摇划花蜜的午后

讲得很清晰,终于弄懂了一些概念!

    有5位网友表示赞同!

何必锁我心

这篇文章真是太好了,终于可以摆脱对脱壳的恐惧了!

    有6位网友表示赞同!

醉婉笙歌

希望能有更多这样的优质文章!

    有12位网友表示赞同!

志平

作者的讲解很细致,非常棒!

    有17位网友表示赞同!

初阳

感觉这篇文章很有深度!

    有14位网友表示赞同!

玻璃渣子

学习Android逆向,这篇文章必看!

    有20位网友表示赞同!

毒舌妖后

终于找到一篇靠谱的脱壳教程了!

    有8位网友表示赞同!

落花忆梦

看了这篇文章,感觉脱壳也没那么难!

    有15位网友表示赞同!

惯例

作者讲的太棒了!

    有6位网友表示赞同!

可儿

文章内容很实用,强烈推荐!

    有19位网友表示赞同!

恰十年

希望作者能出更多关于Android逆向的教程!

    有15位网友表示赞同!

雨后彩虹

看完这篇文章,感觉对Android逆向有了新的认识!

    有10位网友表示赞同!

陌上花

脱壳教程,强烈推荐!

    有15位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/4361.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666