• 破解安卓加壳app,签名


    app:名称,引力波

    抓取新闻数据时发现,请求头signature一直在变化,数了一下, 32位,估计是md5加密

     首先,先把apk文件用apktool进行编译,sh apktool d lejiagu.apk

    生成如图所示文件,我们观察文件内容信息,发现tencent_stub这个文件,表示的是腾讯的乐加固,现在我们需要脱壳

    一般市场上大部分的apk都是有加固的。像腾讯,360,爱帮,很多很多

    我们没必要去破解这些加固的代码,只需要了解这个流程,hook勾住祝函数代码就可以了,

    脱壳原理:
    在壳APK解密源APK后,源APK被加载前,拦截这个过程中的系统函数 把内存中的Dex文件去 dump出来

    手动脱壳:
    通过动态调试,跟踪计算Dex源文件的内存偏移地址,从内存中Dump出Dex文件
    难度大,寄存器,汇编,反调试,反读写
    IDA
    工具脱壳:
    HOOK技术/内存特征寻找
    简单易操作
    基于xposed 脱壳工具:
    Fdex2:Hook ClassLoader loadClass方法 通用脱壳
    dumpDex:https://github.com/WrBug/dumpDex
    本次使用Fdex2

    现在root后的安卓的机子上安装xposed,安装好以后再安装fdex2,网上安装包一大堆,自己找

    安装好以后运行fdex2,点击你需要脱壳的app 会自动生成脱壳后的dex文件,如图

     从新运行此app。脱壳后的dex文件会在图片上提示的dex输出目录里,此时我们需要adb命令进入手机安卓手机(需要usb链接电脑)(虚拟机也行),abd用homebrew安装

    执行命令 adb shell进入手机端  su获取root权限 进入到/data/user/0/com.iCitySuzhou.suzhou001 里面.把文件mv到/scard里面,在使用pull命令将文件复制到电脑上

     我们发现了dex文件,现在需要把他移动到sdcard文件夹里面,不移动到里面是无法复制到电脑上到(虚拟机可直接打开文件夹复制)

    mv *.dex /sdcard dex文件就几个此处选择移动所有dex到/sdcard里面

    移动好以后,我们使用 adb pull命令进行复制

    adb pull adb pull /sdcard/ /Users/wxy/Desktop/android_section1/ (adb pull无法一起复制多个文件,只能复制文件夹,想偷懒到可以直复制文件夹,省事)

    这是复制到电脑上之后的文件

     我们将五个dex文件一一打开。找到关键的dex,一般的关键性的dex都是最大的文件,所以一般选择最大dex文件进行打开

    此时我们选择

    text_search 文本搜索

     找关键参数signature

    这时候发现很多,我们一个个的往下找

     charels抓包的时候不止signature,还有和他在一起的appversion,sysversion 我们可以找和有这两个参数在一起的

    在这里

     双击点进去

    找到signature 

     发现signature是通过m12059函数进行赋值,而m12059传入udid 和valueof() 

    udid是钉死的,valuof()是个时间戳,用法自己上百度上查

    再调用mo293a函数,双击m12059a,find useage找到m12059函数,点进去

    发现这个函数返回一个c2387.m11218a值,而"%S&&%S&&%S".format 后面的参数是str,str2,还有固定的字符串,对比前面的函数发现str 是udid str2是valueof 这函数的的参数是将str str2和固定的字符串,三个字符串拼接起来,拼接后的值传入c2387.m11218a,由此我们可以想到将c2387.m11218a函数打包编译成jar文件,用pycharm的第三方库jpype运行该jar(先决条件是此函数没有导入其他的函数,或者导入的函数较少,不然其他的包都要带入)

    双击,find useage打开此函数,  

    呃,看不懂,应该是个md5加密,没有其他的导入包,整好符合我们的条件

    我们将此函数复制放到pycharm 新建一个mysig.java

     现将java文件打包成class文件

    javac mysig.java

    生成mysig.class

    后将class文件编译成jar文件

    jar -cvf mysig.jar * 此步骤会将此目录下所有class文件编译成jar

    编译完成后我们新建一个python文件,思路:调用jar文件。将三个字符串拼接的值放入传入jar

     结束

    参考猿人学

  • 相关阅读:
    python的虚拟环境管理
    树的转换
    表达式·表达式树·表达式求值
    找和为K的两个元素
    最大奇数与最小偶数之差的绝对值
    L1-026 I Love GPLT (5分)
    L1-025 正整数A+B (15分)
    L1-024 后天 (5分)
    L1-023 输出GPLT (20分)
    L1-022 奇偶分家 (10分)
  • 原文地址:https://www.cnblogs.com/wuxianyu/p/14247813.html
Copyright © 2020-2023  润新知