zoukankan      html  css  js  c++  java
  • 破解安卓加壳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

     结束

    参考猿人学

  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/wuxianyu/p/14247813.html
Copyright © 2011-2022 走看看