代码混淆
代码混淆
目的:
- JAVA编程实现Android手机代码混淆,并使用反编译查看效果
原理:
- 代码混淆(Obfuscated code)亦称花指令,是保护APP常见技术之一,方法是将程序代码转换成一种功能上等价,但是难于阅读和理解的形式,本实验介绍使用代码混淆技术对抗静态分析。混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的情况下,即使被反编译,也将难以阅读。同时混淆是不可逆的,在混淆的过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失使程序变得更加难以理解。混淆器的作用不仅仅是保护代码,它也有精简编译后程序大小的作用。由于以上介绍的缩短变量和函数名以及丢失部分信息的原因,编译后jar文件体积大约能减少25% ,这对当前费用较贵的无线网络传输是有一定意义的。
过程:
打开Eclipse,依次按照New-Project的顺序点击,然后选择 Android Application Project,新建一个可以执行的工程
添加应用名称与项目名称(name为SimpleEdu23,第一个SDK选择API14,其余默认),其他设置默认选择
点击next
选择相应位置,点击next
选择Blank Activity,点击next
输入Activity名称等信息,点击finish
打开android工程的project.properties文件
在project.properties文件中增加下面一行代码proguard.config=prouard-project.txt
在proguard-project.txt添加以下代码
1 | -libraryjars ./libs/android-support-v4.jar |
点击file,选择export
选择export android application
点击next
生成证书加密(点击browse选择路径),本实验所有密码为123456
选择Alias并输入密码,点击next
点击browse选择生成的APK保存路径
使用JD-GUI
用解压缩工具解压simpleedu23.apk,得到classes.dex
将classes.dex与dex2jar放在同一目录
Cmd执行指令d2j-dex2jar.bat classes.dex
在dex2jar目录下获得目标程序的源代码
用jd-gui打开jar包,得到反编译后的源代码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 0xchang's Blog!