代码编译-反编译-解混淆

介绍

Java的字节码一般是非常容易反编译的, 而android采用java编写, 生成的apk安装文件实际上就是一个压缩包, 可以将其解压缩,
再借用其他工具就能被反编译出来. 为了能对源代码就行一些必要的保护, 我们可以对编译好的class文件进行混淆处理. ProGuard的就是一个混淆器,
混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆, 混淆后的结果是一个比较小的.apk文件,
该文件比较难进行逆向工程.

ProGuard是一个SourceForge上非常知名的开源项目. 官网网址是:http://proguard.sourceforge.net/

方法

根据 SDK 的版本不同有 2 中不同的代码混淆方式,以上的 proguard.cfg 参数详解中所涉及到的信息是在较低版本 SDK
下的混淆脚本,事实上在高版本的 SDK 下混淆的原理和参数也与低版本的相差无几,只是在不同 SDK
版本的环境下引入混淆脚本的方式有所不同。具体方法如下:

低版本 SDK 下,项目中同时包含 proguard.cfg 和 project.properties 文件,则只需在
project.properties 文件末尾添加 proguard.config=proguard.cfg 再将项目 Export 即可。

高版本 SDK 下,项目中同时包含 proguard-project.txt 和 project.properties 文件,这时需要在
proguard-project.txt 文件中进行如下信息的配置,然后再将项目 Export 即可。下面以真实的文件进行演示说明。

特殊类的混淆

解码混淆过的堆栈跟踪信息

当混淆后的代码输出一个堆栈信息时,方法名是不可识别的,这使得调试变得很困难,甚至是不可能的。幸运的是,当ProGuard运行时,它都会输出一个<project_root>/bin/proguard/mapping.txt文件,而这个文件中包含了原始的类,方法和字段名被映射成的混淆名字。

retrace.bat脚本(Window)或retrace.sh脚本(Linux,Mac OS
X)可以将一个被混淆过的堆栈跟踪信息还原成一个可读的信息。它位于<sdk_root>/tools/proguard文件夹中。执行retrace工具的语法如下:

retrace.bat|retrace.sh [-verbose] mapping.txt
[<stacktrace_file>]

例如:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

如果你没有指定<stacktrace_file>,retrace工具会从标准输入读取。

当然 你也可以使用工具 在tools/proguard/bin/ 下面 运行proguardGUI.bat 会运行一个GUI页面,操作方式很简单的
就选择这三个红款里面的东西就可以了。

来自为知笔记(Wiz)

时间: 2024-12-25 21:06:31

代码编译-反编译-解混淆的相关文章

android 如何防止代码被反编译

作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹 proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用. 在工程的"default.properties"中添加这样一句话

android反编译-反编译工具和方法

前言 开发过程中有些时候会遇到一些功能,自己不知道该怎么做,然而别的软件里面已经有了,这个时候可以采用反编译的方式,解开其他的程序,来了解一些它的做法,同时啊,还可以借鉴别人的软件结构,资源文件,等等,哈哈.那我就来讲解一些关于反编译相关的知识,主要分三篇,第一篇介绍反编译的工具和方法,第二篇,介绍smali的语法,第三篇介绍如何防止反编译,主要通过这几篇文章,了解如何去做反编译和代码加固. 工具 apktools-目前最强大的反编译工具 轻松反编译apk,解析出资源文件,xml文件,生成sma

andriod的apk文件相关的编译反编译工具

1.smali-1.2.6.jar 用途:.smali文件 转成 classes.dex文件 说明:.smali文件,类似于.class文件,可以用普通文本编辑器查看和修改. 用法举例:命令行:java -jar smali.jar classout/ -o classes.dex 下载:http://code.google.com/p/smali/downloads/list 2.baksmali-1.2.6.jar 用途:classes.dex文件 转成 .smali文件 说明:classe

【编译反编译工具使用】

apktool下载地址:http://download.csdn.net/detail/victoria_vicky/8819355 1.定位到apktool目录下 2.执行如下命令 备注: d为反编译参数,代表decode 加-r参数的原因:为了防止[报错信息could not decode arsc files,发现是无法对资源进行解码]出现,或者防止导致反编译后无法进行重编译. 3.反编译之后,则可在改目录下看到如下文件夹 4.编译打包:将反编译出来的文件夹重新打包 备注:参数b为编译参数

Android 代码混淆 防止反编译

为了防止代码被反编译,因此需要加入混淆.混淆也可以通过第三方进行apk混淆,也可以用android中的proguard进行混淆. 混淆步骤: 1.配置混淆文件,名字可以随意,在这里使用proguard-android,格式为txt. -optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassnames # 是否使用大小写混合 -dontskipnonpubliclibraryclasses # 是否混淆第三方jar -dontpreverif

实现android apk反编译后代码混淆

通常情况下我们需要对我们开发的android代码进行混淆,以免代码在反编译时暴露敏感信息及相关技术代码: 反编译测试工具:onekey-decompile-apk-1.0.1. 在高级版本的adt创建完都会有project.properties文件:开启混淆的话,需要在文件中这样做如图: 注意:混淆代码的生效时刻是在:apk签名之后. 然后在用onekey-decompile-apk-1.0.1反编译后效果如下:

Android安全攻防战,反编译与混淆技术完全解析(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值得骄傲的事情.不过单纯从技术角度上来讲,掌握反编译功能确实是一项非常有用的技能,可能平常不太会用得到,但是一旦真的需要用到的了,而你却不会的话,那就非常头疼了.另外既然别人可以反编译程序,我们当然有理由应该对程序进行一定程度的保护,因此代码混淆也是我们必须要掌握的一项技术.那么最近的两篇文章我们就围

android 反编译 混淆过程中注意事项

此文源自组内成员分享的PPT,其他成员的文档由于没有得到授权,暂不公开. 本文命令如果没有特殊注明,均为windows 7环境. 本文只涉及大概的知识点,不涉及具体的细节,需要注意. 反编译 apktool 可反编译资源文件(xml,点九图)以及代码为smali代码 使用命令:apktool d xxx.apk output_filepath dex2jar 反编译dex文件(解压apk获得的classes.dex)为jar 使用命令:dex2jar xxx.dex jd-gui 查看jar文件

(转)unity3D 如何提取游戏资源 (反编译)+代码反编译

原帖:http://bbs.9ria.com/thread-401140-1-1.html 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源.教我们初步的破解unity3d资源的基本方法附上原帖的链接:http://www.xuanyusong.com/archives/2584 下面我会从头介绍一下提取的全过程: 步骤一:首先从 https://github.com/ata4/disunity/releases 下载 DisUnity v0.3.1也可以直接用工具下载