360脱壳-native函数还原笔记-2017-06-25

原作者:欧阳锋锋


接触andorid逆向脱壳一段时间了,刚刚感觉开始入门,最开始时的过反调试,花费了大量的时间,但时间长了,汇编指令慢慢熟悉,学会了一些调

试技巧,反调试方法知道了,就那么些反调试的方法,过反调就比较顺利了,所以刚开始学逆向的同学,应该也会比较头疼的,记录下我的逆向学习之
旅,增强下记忆,记录分享也是自我提升的过程吧。轻松过掉反调试后,就能有更多的时间去研究壳本身流程和加解密操作。先前的dex加壳,不管是
内存加载(内存dump),还是类抽取(dexHunter),从内存中dump出来后,还是比较容易重打包运行的,自从出现能解释执行smali指令的壳出现后
,小伙伴都能把dex dump出来可是onCreate函数是native的,无法还原指令,dex的关键代码可以分析了,但是无法进行重打包运行,这tn就蛋疼了,
没有卵用,这些天也是一有空就看,还有点成果,手里的两个apk,只是把启动相关Activity 的onCreate进行了还原,apk能运行起来,记录分享下我
的思路。


其实也没思路了,就是跟踪汇编,看汇编指令,函数比较复杂,而且加了混淆,刚开始头都大了。


      1.apk 过反调试,360的反调试方法还是那么些,没有更新,可以看我前一篇文章。

      2.找到正确的地方下断点,因为dump出dex的onCreate函数是native的,所以肯定是需要注册的,在so中找到给其赋值RegisterNative函数,相应的参
数就是对应的jni函数, IDA 动态调试起来,下断点,迷糊的小伙伴可以翻看我前一篇文章,最后有介绍。


      3.跟踪jni函数,关键在sub_A990函数,而且函数挺长的,需要点耐心阅读



4.根据方法的索引获取方法的结构体,大致结构体如下:

            Struct NativeMethod{
                  int classIdx;
                  int dexMethodIdx;
                  int dexCodeOff;
                  int** pDexAddr; 
           }*pNativeMethod;



 5.根据结构体获取方法的相关信息



          


      6.根据方法的shorty,构建参数

         


      7.解析指令


         


      8.解密指令,获取opCode

         


      9.根据opcode进行相应的case处理,比如说一条invoke指令,就会通过,FindClass,GetMethod,CallXXXMethodA方法进行翻译  
          

 



      10.大体的流程就是这样的,每个case的流程,就不写了,因为没看,不会,只是看了用到的部分,以下是某个apk 简单onCreate的还原

       


二、总结

       360的opcode对应表不是固定的,分析了两个apk,表的对应关系是不一样的,应该是在加固过程中,动态生成的,指令加密方式也是

不一样的,尽管只是简单的异或,所以就没办法进行批处理了,只能手动分析,分析出这个apk对应的opcode表,再进行批处理操作了,反

正脱壳是越来越麻烦了,需要耐心去分析,分析用到的apk就不往论坛传了,放出去不太好,有需要的可以私我。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Frida-dexdump是一款用于Android应用程序脱壳的工具。它基于Frida框架,可以在运行时动态地注入代码,从而实现对应用程序的监控和修改。通过使用Frida-dexdump,用户可以获取应用程序的dex文件,进而进行反编译和分析。这对于安全研究人员和逆向工程师来说是非常有用的。 ### 回答2: Frida-Dexdump是一种脱壳工具,它使用Frida库提供的动态注入技术来实现脱壳。它可以帮助安全研究人员分析Android应用程序中的可执行文件(dex文件),以便他们能够防止应用程序的非法复制或修改。 Frida-Dexdump的主要优点是它不需要修改目标应用程序的源代码,因为它是通过在应用程序运行时动态注入实现的。这个过程非常简单,只需要在设备中安装Frida-server,然后运行Frida-Dexdump即可。脱壳过程中,它会将dex文件从目标内存中复制到本地磁盘,然后对该文件进行解密、反编译和分析。 此外,Frida-Dexdump还提供了一些其他有用的功能,例如提取应用程序进程的内存信息和文件系统信息,以及可以监视应用程序的API调用、函数调用和网络请求等操作,有助于发现应用程序中的漏洞和安全问题。 总之,Frida-Dexdump是一种非常有用的脱壳工具,它给安全研究人员提供了一个方便而有效的方式,来分析Android应用程序中的DEX文件,并发现和解决其中的安全问题。但需要注意的是,在使用该工具时,需要严格遵守法律法规,不得将其用于非法用途。 ### 回答3: Frida-Dexdump是一款非常强大的脱壳工具,它是基于Frida框架开发的,能够帮助开发者轻松地从安卓应用程序中提取dex文件,帮助开发者进行逆向分析,加深对程序的理解。 Frida-Dexdump的主要功能是从本地已安装的应用程序中提取dex文件,并将其保存到本地文件系统中,使其方便地进行后续分析。这个脱壳工具不仅能够脱壳Native方法,还可以有效地防止抓包等应用安全风险。 使用Frida-Dexdump非常容易,只需要在Frida Server启动的情况下,通过命令行来启动即可。可以利用命令行参数去指定你需要脱壳的应用程序包名,然后Frida-Dexdump就会自动使用Frida去hook这个被指定的应用程序,并提取它的dex文件。 Frida-Dexdump采用了一种非常高效的脱壳技术,它能够轻松地解析目标程序的内存结构,获取有关dex文件的相关信息,并且还能够将提取的dex文件保存在指定的本地文件系统中,方便开发者进行后续分析。值得一提的是,Frida-Dexdump支持多种不同的目标程序,包括应用程序、Framework、动态库等。 总的来说,Frida-Dexdump是一款非常强大的脱壳工具,可以帮助开发者轻松地进行逆向分析,深入探究Android应用的内部机制。它的强大功能和高效性使其受到广泛的关注和使用,目前已经成为许多安卓开发者逆向工程的首选工具之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值