美文网首页
Android反编译(停止更新)

Android反编译(停止更新)

作者: Kerwin_Thomas | 来源:发表于2018-06-28 23:43 被阅读15次

    反编译

    常识

    .apk文件

    1. META-INT 签名文件
    2. res 资源文件(AXML)
    3. R 资源文件
    4. AndroidManifest.xml 配置文件
    5. classes.dex
    6. resources.arsc 二进制资源文件
    7. lib 存放用C/C++编写的,用NDK编译生成的so文件
    8. 其他文件

    .dex文件

    是一种可在Dalvik虚拟机中执行的格式,包含最终由Android运行时执行的代码。

    编译流程:.java -> .class -> .dex

    .smali文件

    Smali是Android的Dalvik虚拟机使用的一种dex格式的中间语言,是类似汇编语言的一套指令集,是Dalvik的寄存器语言

    Android的签名保护机制

    Android系统进制安装签名不一致的apk

    什么是编译

    什么是反编译

    如何进行反编译

    pic1.png

    1. 使用apktool工具反编译

    命令

    // outDir为输出文件的路径
    // 若不指定则为当前文件路径
    java -jar apktool.jar d -f xxx.apk outDir
    

    输入命令


    apktool-res.png

    反编译后目录如下


    apktool2.png

    这时已经可以获取图片和XML类型文件了,但源代码依然无法获取,现在其为smali格式


    apktool3.png

    工具

    autoSign

    签名工具

    jadx

    一款开源的Java decompiler

    Command line and GUI tools for produce Java source code from Android Dex and Apk files

    dex2jar

    用于将dex文件转换成jar

    jd-gui

    用于将jar文件转换为java代码

    apktool

    用于还原9-patch图片、布局、字符串等一系列资源

    AXMLPrinter2.jar

    将xml文件反编译

    操作

    1. 下载并解压相关工具,下载需要进行反编译的APK

    影响

    大胆一猜

    1. 获取用户名及密码
    2. 在用户不知情的情况下,控制用户的操作,向后台发送请求
    3. 恶意攻击后台,或者攻击用户,侵犯隐私及威胁数据安全

    安全

    代码混淆技术

    Proguard

    1. It makes your Java and Android applications up to 90% smaller and up to 20% faster.
    2. ProGuard also provides minimal protection against reverse engineering by obfuscating the names of classes, fields and methods.

    签名检测

    目的:防止二次重打包

    方式:
    除了在java层处理,还可以在so或服务器中校验

    应对:
    在 so 里的用 IDA 打开 so 跟踪修改,服务器验证的抓包查看

    使用C++改造底层

    .etc

    数据分拆合并

    .etc

    参考

    Dex文件格式

    Jadx使用方式

    手把手教你逆向分析Android程序

    相关文章

      网友评论

          本文标题:Android反编译(停止更新)

          本文链接:https://www.haomeiwen.com/subject/wicoyftx.html