‘壹’ 求安卓逆向大神 分不是问题 求指导
内容通过网络网盘分享,
如果有帮助希望能采纳。
不懂得地方请私信
‘贰’ 如何反编译android应用以及重编译,签名和对齐优化
首先,了解一下我们为什么需要反编译apk
大部分情况下,是由于想本地化一款优秀的应用,才需要做这事儿;又或者进行少量的smali修改以达到想要的效果(如添加归属地,使3G版Nexus 7支持Wi-Fi热点)。
下面我们先准备运行环境和工具
建立工作目录,如.\workspace\apktoolbox (下面同样以此路径为例)
必不可少的JDK:Oracle java下载,安装完成后把<jdk-inst-path>\bin添加到$PATH环境变量中
反编译和重编译工具apktool:Google Code下载,按平台下载(一个apktool-install-<platform>-<ver>-tar.bz2,一个apktool<ver>.tar.bz2,下载完成后解压至.\workspace\apktoolbox\bin
密钥文件,共4组。test/shared/media/platform,从android source中获取,分别对应不同共享用户ID时签名所需(查看应用AndroidManifest.xml第二行android:sharedUserId项 ),放到.\workspace\apktoolbox\bin下
test - 无android:sharedUserId项
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
签名工具signapk.jar,放到.\workspace\apktoolbox\bin下
对齐优化工具zipalign(从android sdk中获取,在tools目录下),放到.\workspace\apktoolbox\bin下
准备工作完成
接下来我们就要开始工作了(以本地化工作为例)
把待反编译的apk放到.\workspace\apktoolbox\apks下
在命令行模式下进入.\workspace\apktoolbox\bin目录,输入以下命令进行解包(反编译)
apktool d ..\apks\<apkfile>.apk ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\res下的values目录(英文原版)和values-r<locale>目录(本地化)就是我们需要的对象。
本地化工作完成后,在命令行中输入以下命令进行重新打包(重新编译)
apktool b ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\dist目录下会生成重新打包后的apk(未签名,未对齐优化)
重新打包完成后,在命令行中输入以下命令进行签名(根据实际情况选用密钥,这里以test密钥为例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\<outdir>\dist\<apkfile>.apk ..\apks\<apkfile>_signed.apk
签名完成后,在命令行中输入以下命令进行对齐优化
zipalign -f -v 4 ..\apks\<apkfile>_signed.apk ..\apks\<apkfile>_zipaligned.apk
<apkfile>_zipaligned.apk就是我们最终需要的apk了。
完成
部分apk需要系统框架资源,没有的话在重新打包时会报错,这种情况下我们只需要先安装一下对应系统框架即可(从你目标ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中输入以下命令进行安装
apktool if ..\apks\framework-res.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完全反成一个android项目的 , 这个android逆向助手只
我可以让你看见项目的源码,但是不知道怎么才能将源码放到eclipse中进行运行!~~我试了好多次,都不成功,导入工程后总是会出错,不知道是我哪里设置的和源码中设置的不一样!~~
方法是:第一步:你先把下载的包的后缀名改成.zip
第二步:到网上搜索dex2jar,下载一个,解压到电脑磁盘中
第三步:打开你改完后缀名的.zip文件,将其中的.dex文件解压出来,拷贝到dex2jar这个文件中,和lib文件夹放在同文件下
第四步:进入cmd命令,然后用cd 命令进入到dex2jar这个文件中,我的是这样的cd C:\android反编译工具\dex2jar-0.0.9.15\dex2jar-0.0.9.15,然后在执行dex2jar classes.dex这个命令,等待一会,反编译好了后
第五步:到网上搜索jd_gui,然后下载一个解压到磁盘,打开它然后点打开文件,找到刚刚反编译好的那个文件夹,即dex2jar那个文件夹中找.jar文件,打开它就能看到源码了!~~~
其它的资源文件什么的就在刚刚你改完的那个zip文件中有。
不过你也可以将.apk文件再反编译回来,在看资源和Androidmanifest.xml文件!~~~这个用到apktool,这个用起来挺简单的,你可以到网上搜索一下!~~~
‘伍’ Android APK+Dex文件反编译及回编译工具的使用说明
本工具执行安装后,直接在【鼠标右键】生成快捷键,自动关联APK、DEX、Odex、Zip等文件。只要在电脑任意“非分区根目录”,【鼠标右键】点击相关文件,即可编译操作。如,反编译APK及DEX文件,反编译后生成可编译的同名文件夹,汉化修改完成后,对文件夹点击【鼠标右键】根据文件夹反编译前的文件类型,现在【使用 APKDB编译】即可!
同时,针对apk和zip文件增加签名操作,只要【鼠标右键】点击,选择【使用 APKDB编译】选择【[S]签名APK文件】即可!签名前无需删除原来的【META-INF】签名数据。本工具会判别apk还是zip并自动删除签名数据。
‘陆’ Android反编译(三)— 手动编译
PS: 最近没工作,没工作就没需求,没需求就没什么技术总结的灵感,那就没更新什么。但是两个月不更新了,要是三个月不更新就会出大事,所以这次打算做一件有意思又不难的事。
之前有发文章写过反编译,今天就来试试反编译之正编译,开玩笑的,就是试试手动编译的过程, 平时我们在项目中编译出包都是使用Gradle直接执行assemble任务就能解决,我打算试试手动模拟整个过程。当然我也是第一次这样搞,所以如果有写得不对的地方,还望指出。
众所周知,apk实质上就是一个压缩包。复习一下,我们写个最简单的Demo,然后打包,然解压,注意是解压,不是反编译,意义是不同的。
注意我这个Demo很简单,什么都不引入
然后我们看看整个出包的过程,随便从网上拿张图
然后这里我们用Android SDK给我们提供的工具来完成整个流程,工具在sdk文件夹下的build-tools文件夹下,有什么aapt.exe、dx.bat,用的就是这些
这步应该是整个流程最简单的吧,我感觉,所以从最简单的开始。
我们先看看生成的dex有什么
对比项目,我是一开始最基本的项目,什么都没动,所以只有一个MainActivity.clas,所以这里肯定是要先想办法得到BuildConfig.class和R.class。
输入命令:
aapt p -f -m -J <输出路径> -S <res路径> -I <android.jar路径> -M <Manifest路径>
下一步,我们需要BuildConfig.class
这个BuildConfig.java是由gradle在我们配置好gradle之后自己帮我们生成的,所以我们直接拿来用,然后再javac就得到class文件了
然后我们再编译我们的MainActivity.java并将它们放到同一个文件夹下, MainActivity因为引用了Android.jar和R文件,所以编译时注意点,我为此被动好好的复习了一遍javac,都是泪
最后一步,我们用dx工具就能打出dex文件了
然后执行命令就得到一个Dex文件,看看这个文件里面和上面直接打出的apk中的Dex文件有什么不同:
看图,我们上一步已经生成.dex了,那么我们需要和compiled Resource 还有 Other Resource 一起生成APK。
我们先来生成compiled Resource,也就是resources.arsc
发现之前使用aapt生成R文件的时候没写完整,当时可以加一个-F参数直接生成arsc和Manifest
导出的abc.zip里面就有resources.arsc和AndroidManifest.xml。
因为之前写漏了,所以肯定要重新编一次MainActivity.java和Dex
我们把刚才的dex文件和aapt生成的resources.arsc、AndroidManifest.xml和res放到一个文件夹里面。
PS:res文件夹也是上面aapt的命令生成的
然后我们对比这个文件夹和之前apk解压的文件夹
最后运行
看来是成功了。
再说说遇到的还有两个问题,并说下我解决问题的思路
(1)我把它们都放到一个文件夹之后,我压缩成压缩包,然后改后缀成.apk,然后发现安装不了,我就直接反编译,发现发编译失败,提示包有问题,以我多点玩包的经验,我感觉就是压缩工具出了问题,然后我去下个“好压”(这不是广告啊),然后就能正常反编译了。
(2)但是还是安装不了,再根据我多年的玩包经验,我感觉是签名问题,然后我随便给这个包上一个签名,就能正常安装得到上图的结果了。
总体来说,还真挺好玩的,这整个过程,就是翻车了几次。做完之后感觉非常牛逼,为什么这样说,因为我知道这整个过程,我就可以做到,我不经过gradle来打包,我自己写个python脚本来调用aapt和dx来打包也是能做到的。
当然上面纯属异想天开,因为这是个什么都没有的Demo所以觉得简单,要是一个真实的项目,我感觉肯定要有很多坑,别的先不说,一个项目那么多依赖关系,我这javac要搞死人。
最后如果有不对的地方,希望有大佬能够指出,毕竟能运行也不能证明完全没问题。然后我使用的build-tools是28的,不敢保证其它版本包括以后版本的玩法都一样。
‘柒’ 怎样用apk反编译工具破解游戏
打开Androidfby中的Android反编译工具,开始直接反编译,选中你要反编译的apk,反编译即可,这样就可以得到软件中图片,xml,dex文件,或者直接用解压文件解压,但是不能保证xml正常显示,所以我们最好是结合一起用
打开反编译之后的文件夹,找到classes.dex,将其复制到dex2jar的文件夹目录下面,与dex2jar.bat在同一目录即可。打开命令提示符,一直打开到dex2jar目录,执行以下命令dex2jar.bat classes.dex
这时会在dex2jar目录下生成一个classes_dex2jar.jar文件,这时运行jd-gui目录下的jd-gui.exe,选择File-----》Openfile------》classes_dex2jar.jar,即可查看java代码了
‘捌’ android 反编译的res怎么用
就像做菜一样,首先我们要把料备齐,三个反编译工具,apktool,dex2jar,jd-jui先下载下来,待用。还有有一个apk文件,一共四个文件。(简单介绍下三个工具的作用,apktool是用来得到Android app的资源文件的,就是res文件。dex2jar和jd-jui是查看Android app源代码的。接下来我就一步步带大家实现反编译。)
第一步,使用apktool得到 res文件。
解压缩下载上述工具中的apktool,解压得到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,
打开命令行界面(运行-CMD-回车) ,定位到apktool文件夹,(还有个简单办法,按住shift键,点击鼠标右键,在菜单中选择“此处打开命令行窗口”),输入以下命令:apktool.bat d -f Presidential.apk (Presidential.apk 是我要反编译的apk的全名,apktool的指令这里就细讲了,请同学们自己学习吧)命令行图片和生成的文件的图片如下图。res文件就我们需要的资源文件啦。
第二步,查看apk文件的源代码。首先将apk文件的后缀改为.rar或者.zip并解压,得到其中的额classes.dex文件.,将获取到的classes.dex放到之前解压出来的工具dex2jar 文件夹内,然后用同样的方法打开命令行,输入:
dex2jar.bat classes.dex 回车,效果如下:
在改目录下会生成一个classes_dex2jar.jar的文件,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了。
‘玖’ Android 如何对apk文件进行反编译以及重新
第一:使用apktool直接反编译apk
第六:把生成的hellodemo.apk安装到手机,可以看到主界面上已经显示的是hello,而不再是你好。说明反编译重新打包成功!
‘拾’ 反编译Android APK的具体步骤是怎样的
1、配置好JAVA环境变量,下载:apktool 解压的文件放在C盘根目录的apktool文件夹里(apktool文件夹自己创立)
2打开命令提示符,(开始-运行-输入cmd)
3输入:cd \apktool 系统指令到了apktool文件夹(这里就是为什么要把解压的apktool解压的文件放到apktool文件夹的原因,当然你也可以自命名文件夹的名称,那么比如arc,那么指令就变成了:cd \arc 前提是你必须把apktool解压的文件放到这个文件夹里面)
4使用RE管理器把系统里面的framework-res.apk 与 SystemUI.apk 提取出来放在apktool文件夹里面
5 如果只是想反编译framework-res.apk
输入apktool if framework-res.apk(框架的建立)
6开始最重要的反编译,输入指令,apktool d framework-res.apk
(反编辑的APK一定要用没换过图片的,否则回编辑失败)
7最后反编译完成
修改代码完成后,输入代码:apktool d framework-res 即可完成回编译
8回编译后的新的 apk在framework/dis 文件夹里面
9如果反编译的是系统文件,比如,SystemUI.apk 那么必须进行挂载框架,反编译时,必须敲入一下命令:(然后再重复7-9步骤)
apktool if framework-res.apk
apktool if SystemUI.apk
10对于三星手机(比如9100、9108/9100G),如果反编译SystemUI.apk要敲入一下命令进行框架挂载apktool if framework-res.apk
apktool if twframework-res.apk
apktool if SystemUI.apk
11回编译的命令是 apktool b XXX (没有后面的apk后缀)反编译的命令是 apktool d xxx (有后面的apk)