‘壹’ 经过360加固的安卓程序该如何破解反编译后什么代码都找不到
1)APKtool 2)dex2jar 3)jd-gui 4)签名工具 相关技术的基本要求 1)具有一定的阅读java代码的能力 2)稍微有点android基础,越多越好 3)会用eclipse的一些Android调试的相关工具 4)了解一下smali的语法规范和字段的自定范围 5)有点应变能力思想转换能力、 6)虽然代码的修改是修改其smali文件(用到smali语法),虽然其语言是非常复杂的,但是我们能够变通就行了,但是要求了解一下smali的语法规范和字段的自定范围。 了解以上方法可以非常简单破解Android APK,破解后,应用里的页面布局、代码逻辑、结构算法等都能一目了然。所以为了避免被他人,尤其是竞争对手了解到这些,防破解和反编译尤为重要。我试过代码混淆,但是代码混淆只是对类名进行了变换,增加了破解者的阅读难度,并不能真正阻止反编译工程。下面是进行过代码混淆的APK代码结构,能看到只是对类名做了变换,变成a、b、c等这样的名称。但是仍然可以进行反编译。 后来又尝试使用360加固保对APK进行加固保护,发现原有的代码程序被隐藏起来了,没法再进行反编译工作。 所以作为移动应用开发者,适当了解一些破解和反编译工作有利于保护自己的应用安全。如果不防患于未然,一旦出现盗版情况,那么你的APP很可能从此被市场所抛弃。
‘贰’ 安卓apk文件如何反编译
安卓apk文件反编译:
一、反编译xml文件
1>
首先下载我给你们提供的文件夹apk_fanbianyi,把它放到某个盘的根目录下(为了方便输入dos命令),然后打开apktool文件夹,安装win+r键,然后输入cmd,进入dos命令行,大家别怕,不用晕,很简单的。
2>
然后在dos命令中首先输入文件夹所在盘符+“:”回车,接着再输入cd+apktool所在目录,切换dos工作空间到apktool文件夹下。
3>
接着输入
apktool.bat
d
【需反编译apk文件路径】
{【反编译文件反编译后的路径】},其中最后一部分可以省去,系统会默认把apk文件反编译到apktool目录下,例如输入
apktool.bat
d
d:/apk_fanbianyi/ttkp.apk,在apktool文件夹下就会生成一个ttpk的文件夹,所有的xml文件全部反编译成功。
二、反编译java文件
1>
首先解压需要反编译的apk文件,拷贝出里面的classes.dex文件到dex2jar文件夹(为了方便操作,省去dos命令输入路径的麻烦)
2>
把工作空间切换到dex2jar文件夹下,输入命令cd
d:/apk_fanbianyi/dex2jar回车
3>
输入命令dex2jar.bat
classes.dex回车,发现dex2jar文件夹下多了一个classes_dex2jar.jar文件,这是反编译成功的java文件
三、xml文件的打开
1>
打开apktool文件夹下的ttkp文件夹,任意找到一个xml文件,选中单击右键,选择notepad++打开(需下载),如果没有此软件,可以选择打开方式,选择记事本打开
四、java文件的打开
1>
dex2jar文件夹下的classes_dex2jar.jar拷贝到apktool文件夹的ttkp文件夹中,不能用notepad++打开,不然会乱码的
2>
启动apk_fanbianyi文件夹下的jd-gui.exe,然后点左上角file,选择open
file,找到classes_dex2jar.jar文件,可以发现有很多包,选择包下的任意一个java文件,打开不乱码了,是不是很神奇,哈哈,你学会了安卓apk文件反编译
‘叁’ 安卓4.0如何反编译resources.arsc
resources是APK中的资源文件,例如图片布局等等,android 反编译的方法,需要用到几个工具,网络一下都能找到下载地址
dex2jar JD-GUI apktool
反编译步骤:
1.反编译Apk得到Java源代码
首先要下载两个工具:dex2jar和JD-GUI
前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
具体步骤:
1.首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;
2.解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录
运行 dex2jar.bat classes.dex
生成 classes.dex.dex2jar.jar
2.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件
还是下载工具,这次用到的是apktool
具体步骤:
将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar
1.解压缩下载的两个文件包,apktool-install-windows-r04-brut1.tar解压缩后得到的包里有aapt.exe 和apktool.bat.(注意要把apktool1.4.1.tar解压后的一个.jar 文件到解压后的\apktool-install-windows-r04-brut1文件夹里)
2.特别注意:你要反编译的文件一定要放在C盘的根目录里
‘肆’ 安卓反编译出来的代码如何修改重新生成APK
反编译步骤:
下载apktool 并设置环境变量
命令行进入apk目录执行:apktool d xx.apk (如果遇到一些错误说明apk做了防破解处理)
执行成功后会生成xx文件夹,进入xx文件夹修改需要修改的内容,如果需要修改代码,进入xxsmali里面,需要懂一些smali语法
修改完后回到命令行,执行:apktool b xx ,会在xx文件夹里面生成一个dist文件夹,里面的apk就是回编译的,这个apk是没有签名的
下载网上的签名工具对apk签名,完了就可以安装了(如果你下载了源码或者sdk,里面自带一个signapk也可以签名)
‘伍’ 怎么加固安卓软件
加固安卓软件一般要达到以下效果:
1、防逆向:通过DEX 文件加壳以及DEX 虚拟化等技术,防止代码被反编译和逆向分析。
2、防篡改:通过校验 APK 开发者签名,防止被二次打包,植入广告或恶意代码。
3、防调试:防止应用被 IDA、JEB 等工具调试,动态分析代码逻辑。
VirboxProtector安卓加固的核心技术一般有:
DEX 文件加密隐藏
对 DEX 文件加壳保护,防止代码被窃取和反编译。
SO 区段压缩加密
对 SO 库中的代码段和数据段压缩并加密,防止被 IDA 等工具反编译。
单步断点检测
在混淆的指令中插入软断点检测暗桩,防止native层run trace和单步调试。
防动态调试
防止应用被 IDA、JEB 等工具调试,动态分析代码逻辑。
开发者签名校验
对 APK 中的开发者签名做启动时校验,防止被第三方破解和二次打包。
SO 内存完整性校验
在 SO 库加载时校验内存完整性,防止第三方对 SO 库打补丁。
SO 代码混淆
对 SO 库中指定的函数混淆,通过指令切片、控制流扁平化、立即加密等技术手段,将 native 指令转换为难以理解的复杂指令,无法被 IDA 反编译,并且无法被还原。
SO 代码虚拟化
对 SO 库中指定的函数虚拟化,可以将 x86、x64、arm32、arm64 架构的机器指令转换为随机自定义的虚拟机指令,安全强度极高,可通过工具自定义配置,调整性能与安全性。
DEX 虚拟机保护
对 DEX 中的 dalvik 字节码进行虚拟化,转换为自定义的虚拟机指令,最后由 native 层虚拟机解释执行,防止逆向分析。
‘陆’ 安卓app签名可以防止代码反编译吗
不可以,签名对防止反编译一点作用没有。他只能保证安装包的唯一性,相同安装包签名不同在同一台手机上安装会冲突。