Apk反编译及签名工具使用
- 格式:doc
- 大小:22.00 KB
- 文档页数:2
反编译去签名大全
反编译去签名是指将已经过签名的应用程序进行反编译,并移除其中的签名信息,从而达到绕过验证的目的。
以下是一些常见的反编译去签名的工具和方法:
1. 工具类:
- ApkTool:一个常用的反编译工具,可以将已签名的应用反编译成Smali代码,并通过修改Smali代码达到去除签名的目的。
- Jadx:一款用于反编译Android应用的工具,可以将已签名的APK文件反编译成Java代码,并通过修改Java代码去掉签名相关的代码。
- JADX-GUI:Jadx的图形化界面,可以方便地查看反编译结果并进行相关操作。
2. 方法:
- 反编译:使用上述工具对已签名的应用进行反编译,获取其中的源代码和资源文件。
- 修改:对反编译得到的源代码进行修改,删除与签名相关的代码片段,如验证签名、证书等相关代码。
- 重新编译:将修改后的源代码重新编译成APK文件。
- 重新签名:使用自己的证书对重新编译得到的APK文件进行签名,生成一个新的已签名APK文件。
需要注意的是,反编译去签名是一种绕过验证的行为,是违反软件开发者的授权行为。
在未获得合法授权的情况下进行此类
操作可能涉及版权侵权和违反法律法规等问题,请遵守相关规定并遵循合法途径。
如何反编译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.sharedmedia - android:sharedUserId=android.uid.mediaplatform - android:sharedUserId=android.uid.system特例:部分系统应用就算没有android:sharedUserId也是需要用platform组key进行签名,如SystemUI.apk签名工具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\<apkfile>.\workspace\apktoolbox\apks\<apkfile>\res下的values目录(英文原版)和values-r<locale>目录(本地化)就是我们需要的对象。
一、相关工具(针对windows系统)JDK:/technetwork/java/javase/downloads/index.html 下载windows安装版的程序,安装后不用管它了。
Apktool:/p/android-apktool/下载apktool-install-windows-2.2_r01-3.tar.bz2和apktool1.3.2.tar.bz2,用winrar 解压后把解压出来的文件都放在一个目录下,比如:E:/apktool/ 下(为简单起见,下文都用这个路径为apktool工作目录)。
Auto-Sign签名工具:N/A二、反编译说要把apk“装冰箱(反编译)”分三步走:第一步:先把apk程序(这里用ThinkingSpacePro.apk)程序放到 E:/apktool/ 下。
第二步:启动windows的cmd.exe,用命令行cd到 E:/apktool 目录下。
第三步:键入命令apktool d ThinkingSpacePro.apk这个命令的格式是:apktool d xxx.apk output其中 d 参数用来指示工具要进行反编译操作,xxx.apk是要反编译的程序,output 源码输出的路径。
如果最后不指定输出的路径,默认是放在同目录下的xxx 文件夹下(即apk程序名称去掉.apk后的名称)。
如果你的apk文件名称中有空格,那键入命令时用双引号引起来,不过为方便起见,反编译之前把apk 文件名中的空格都去掉先。
运行反编译命令后会在同级目录下得到一个 ThinkingSpacePro 文件夹,源文件都在里面了。
三、汉化汉化这个比较简单,在反编译apk程序得到源码后,一般程序的文档都放在res目录下,都是些xml文档,用记事本之类的打开查看一下,一般都会比较容易看出来哪些是可以汉化的文本。
这个就不去弄它了。
可能不同程序还有不一样的,反正英语差点,汉化这种事我也不去深究了。
AndroidAPK反编译apktool使⽤教程2017年棋牌游戏突然就⽕了,正所谓春江⽔暖鸭先知本猿处在软件⾏业中就能清晰的感受到市场的变化,最近⽼家那边也是玩的风⽣⽔起,于是最近闲暇时光想到反编译下这些棋牌软件,看看代码实现的思路(注:反编译不是让各位开发者去对⼀个应⽤破解搞重装什么的,主要⽬的是为了促进开发者学习,借鉴好的代码,提升⾃我开发⽔平。
)⼯具介绍:apktool作⽤:主要查看res⽂件下xml⽂件、AndroidManifest.xml和图⽚。
(注意:如果直接解压.apk⽂件,xml⽂件打开全部是乱码)dex2jar作⽤:将apk反编译成Java源码(classes.dex转化成jar⽂件)jd-gui作⽤:⽤来查看APK中classes.dex转化成出的jar⽂件,即源码⽂件2017年12⽉1⽇新版本apktool⽤法:1.下载两个⽂件apktool.bat和apktool.jar(这个如果你下载的⽂件有版本号,⽐如apktool_2.3.0.jar,就要改名字为apktool.jar),这⾥我已经打包好了传到了我的CSDN(),直接下载就OK了;2.然后把上⾯两个⽂件解压放到C:\Windows下⾯,放到这⾥是可以全局进⾏使⽤(我是windows系统,其他系统按照⾃⼰的来)如下图:3.使⽤⽅法把要解压的apk⽂件放在⾃⼰任意⼀个盘的⽬录下,在apk的⽬录下,按住shift+⿏标右键打开cmd⿊窗⼝如下图:接下来输⼊官⽅给的命令//当输⼊完这两个命令后apktool d test.apkapktool b test//出现如下图⼀样的说明就反编译成功了,在他的同级⽬录下就多出了⼀个⽂件夹,⾥⾯就是反编译出来的源码,具体有啥我就不细说了哈,⾃⼰慢慢研究吧!4.Apk反编译得到Java源代码下载上述⼯具中的dex2jar() 和 jd-gui() ,解压将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex⽂件(它就是java⽂件编译再通过dx⼯具打包⽽成的),将获取到的classes.dex放到之前解压出来的⼯具dex2jar-2.0⽂件夹内,在命令⾏下定位到d2j-dex2jar.bat所在⽬录(现在这个⽬录增加了许多命令,⼀定要看清楚哦),输⼊d2j-dex2jar.bat classes.dex效果如下:说明就成功了会看到同级⽬录下会⽣成⼀个classes_dex2jar.jar的⽂件,然后打开⼯具jd-gui⽂件夹⾥的jd-gui.exe,之后⽤该⼯具打开之前⽣成的classes_dex2jar.jar⽂件,便可以看到源码了,效果如下:通过反编译,你可以获知该应⽤⽤到了什么第3⽅的库⽂件,它的代码是如何编写的等等。
APK反编译过程及用到的工具(转)2010-11-19 11:21:19| 分类:android技术| 标签:|字号大中小订阅一、用.rar打开apk文档,得到文档结构图如下所示二、将classes.dex文件解压出来,然后使用工具反编译成.jar文件,再进一步反编译出java文件1.在cmd下进入dex2jar.bat所在路径,然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk 中的classes.dex文件所在路径及名称,比如:我的dex2jar.bat在D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路径下, classes.dex在D:\Android下,所以:你进入dex2jar.bat路径下后,输入dex2jar.bat D:\Android\classes.dex,这样会生成一个jar文件。
2.用rar解压出jar文件中的class文件,然后用jad或DJ Java Decompiler反编译工具将.class文件反编译成.java文件3.不解压出jar中的class文件,直接用JD GUI工具打开jar文件4.步骤2和3选择其中一个即可,建议用步骤2,步骤3可能出现乱码三、上面操作只能得到class文件,下面利用Google提供的apktool得到xml文件1. 下载apktool,可以去Google的官方下载,地址:/p/android-apktool/得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。
解压apktool.jar到C:\Windows ,解压apktool-install-windows.zip到任意文件夹(例如E盘根目录)。
2. Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。
如何使用apk签名命令给Android应用签名在Android开发过程中,应用的签名是非常重要的一个环节。
签名可以确保应用的身份和完整性,使得用户能够信任应用并安心使用。
在发布应用之前,我们必须为应用签名,否则应用将无法被正常安装和运行。
本篇文章将会介绍如何使用apk签名命令来给Android 应用签名。
1. 准备工作在开始签名应用之前,我们需要进行一些准备工作。
首先,我们需要获取Android SDK,并确保在电脑上正确安装并配置好了Java Development Kit(JDK)。
我们还需要生成一个Keystore文件,这个文件是用来保护你的应用的私钥,确保别人不能对你的应用进行篡改。
可以通过以下步骤生成Keystore文件:a. 打开命令行窗口或终端。
b. 进入到Java JDK的bin文件夹下,输入以下命令:keytool -genkey -v -keystore mykeystore.keystore -alias mykeyalias -keyalg RSA -keysize 2048 -validity 10000c. 按照提示输入信息,包括密码、姓名、组织名称和国家/地区代码等。
2. 执行签名命令准备好Keystore文件后,我们可以使用apk签名命令来为应用签名了。
依次输入以下命令:a. 打开命令行窗口或终端,并进入到Android SDK的bin文件夹下。
通常这个文件夹路径是:sdk/platform-tools。
b. 执行以下命令:apksigner sign --ks mykeystore.keystore --out myapp_signed.apk myapp_unsigned.apkc. 替换mykeystore.keystore和myapp_unsigned.apk为你自己的文件名。
d. 如果签名成功,你应该会在终端看到签名成功的消息。
3. 验证签名为了确保应用签名成功,我们可以使用“jarsigner”命令来验证签名。
Unity3D对apk反编译、重编译、重签名⼯具Java环境Apktool(这玩意有些坑爹,不是官⽹最新的就好,找到⼀个好⽤的版本号能少⾮常多坑)ApktoolJarsigner反编译var argList = ProcessHelper.CreateArgumentsContainer();argList.Add("java -jar");argList.Add(ApkToolPath);argList.Add("d");argList.Add(pathToBuildProject);argList.Add("-o");argList.Add(GetDecodeApkFolder(pathToBuildProject));var p = ProcessHelper.Start(ProcessHelper.CreateStartInfo());ProcessHelper.WriteLine(p, ProcessHelper.CreateArguments(argList));var result = p.StandardOutput.ReadToEnd();var error = p.StandardError.ReadToEnd();p.WaitForExit();p.Close();Debug.Log(result);Debug.Log(error);- 反编译之后的图如上(unknown是没有的)- 反编译之后能够做⼀些改动。
通常会改动AndroidMainifest.xml- ⽜逼⼀点的。
能够改动smali,⽐如前⾯提及到的重编译var unsignedApk = GetUnSignedApkPath(pathToBuildProject);FileHelper.DeleteFile(unsignedApk);var argList = ProcessHelper.CreateArgumentsContainer();argList.Add("java -jar");argList.Add(ApkToolPath);argList.Add("b");argList.Add(GetDecodeApkFolder(pathToBuildProject));argList.Add("-o");argList.Add(unsignedApk);var cmd = string.Join(" ", argList.ToArray());var p = ProcessHelper.Start(ProcessHelper.CreateStartInfo());ProcessHelper.WriteLine(p, ProcessHelper.CreateArguments(argList));var result = p.StandardOutput.ReadToEnd();var error = p.StandardError.ReadToEnd();p.WaitForExit();p.Close();Debug.Log(result);Debug.LogError(error);重签名var unsignedApk = GetUnSignedApkPath(pathToBuildProject);var finalApk = GetFinalApkPath(pathToBuildProject);FileHelper.DeleteFile(finalApk);var argList = ProcessHelper.CreateArgumentsContainer();argList.Add("jarsigner");argList.Add("-keystore 路径");argList.Add("-storepass password");argList.Add("-signedjar");argList.Add(finalApk);argList.Add(unsignedApk);argList.Add("别名");var p = ProcessHelper.Start(ProcessHelper.CreateStartInfo());ProcessHelper.WriteLine(p, ProcessHelper.CreateArguments(argList));var result = p.StandardOutput.ReadToEnd();var error = p.StandardError.ReadToEnd();p.WaitForExit();p.Close();Debug.Log(result);Debug.LogError(error);⼀个Keystore能够相应多个Key假设Key的password不⼀样,还得另外输⼊Key的password。
AndroidApk的破解:反编译、修改资源代码、重新打包、签名⼯具准备apktool附上Mac安装说明:Download Mac (Right click, Save Link As apktool)Download apktool-2 ()Rename downloaded jar to apktool.jarMove both files (apktool.jar & apktool) to /usr/local/bin (root needed)Make sure both files are executable (chmod +x)Try running apktool via cli问题:⽣成的都是smail ⽂件,JD-GUI能查看jar⽂件。
dex2jarTools to work with android .dex and java .class filesJD-GUIJava Decompiler实验步骤提取资源$apktool d xxx.apk提取jar将xxx.apk改名成xxx.apk.zip,⽤压缩⼯具解压⽂件,得到classes.dex⽂件。
运⾏d2j-dex2jar.sh classes.dex, 得到classes-dex2jar.jar$cd dex2jar-2.0/$chmod u+x *.sh$cd ../xxx.apk/$../dex2jar-2.0/d2j-dex2jar.sh classes.dex查看java代码使⽤JD-GUI打开classes-dex2jar.jar,界⾯中选择class⽂件即可查看java代码。
修改代码注意,修改代码及资源,最好的⽅式是修改apktool反编译后的资源级smali代码。
JD-GUI查看的java代码不适宜修改,因为修改后还需要重新转换成smali,才能重新编译打包会apk。
⾄于smali的修改,则要学习smali语⾔的语法了,smali是⼀种类似汇编语⾔的语⾔,具体语法可⾃⾏上⽹学习。
打开“命令提示符”,方法:“开始--所有程序--附件--命令提示符”,或者快捷键“Win+R”,输入cmd,回车依次输入下面的代码1. D:2. cd apktool3. apktool if f.apk4. apktool d f.apk f复制代码PS:d 是反编译命令后面的f表示生成文件名为f的文件夹PS:“命令提示符”先不用关闭,往后还会用到此时:D:\apktool目录下就会多出一个名为f的文件夹,里面放着就是反编译出来的文件了下面开始就是重点与难点了!因为,为了此教程能有具有更通用性,所以,下面所说得会有点抽象,不过大家只要用心去看,是必定能学会的!好了,上面已经反编译好了,具体要修改些什么内容,如何去修改,此教程暂且不涉及,学懂了这套修改方法,以后的一切都是浮云!!往后的日子,我也会在这教程的基础上,开贴教大家如何进行一系列的修改!!但这个是基础,所以必须先学会跑题了,马上回到正式教程当你已经在这里修改好想要修改的东西以后,接下来就要进行编译回去了!!“命令提示符”上输入:1.apktool b f复制代码成功编译之后,f文件夹就会多了个dist的文件夹,里面放的就是编译好的文件,同样命名为f.apk的,我们为了区分,先把他重命名为f2.apk好了,重中之重就在下面了!不要以为编译好了就可以把这文件放回手机,还不可以的。
先搞清楚,我们现在有两个apk文件,一个是编译前的f.apk,一个是编译后的f2.apk。
用压缩软件同时打开f.apk,f2.apk,是打开,而不是解压细心观察,会发现编译后的f2,少了一个META-INF的文件夹,这个其实就是apk包的签名所在,但是这框架文件是不能签名的,所以,我们才要进行下面的步骤我们需要把两类文件从f2.apk拉到f.apk中替换,第一类是:刚才反编译后,你所替换过,或者修改过的所有文件第二类是:resources.arsc这一个文件所有文件一个都不能替换少了PS:记得要放到相同的目录下哦!!PSP:我们最后要的是f.apk这个文件!!!替换好后,我们可以把f.apk重新命名为“framework-res.apk”,然后放回到内存卡上。
手机,电脑反编译apk教程电脑端反编译教程:用apktool反编译工具1.Windows徽标键+R 弹出运行对话框输入cmd ,回车;会弹出命令提示符窗口2.输入:“E:”回车(其中E为盘符,apktool在哪个盘就输入哪个盘的盘符)3.输入:“cd apktool”回车(其中apktool为反编译工具所在文件夹)4.提取手机framework文件夹里面的framework-res.apk和mediatek-res.apk放到apktool文件夹中去5.输入命令:“apktool if framework-res.apk”回车;等他结束后继续输入:“apktool if mediatek-res.apk”同样回车6.进入正题!反编译命令:“apktool d 程序名.apk” 例如:apktool d Settings.apk为反编译Settings.apk回编译命令:“apktool b 要回编译的文件夹” 例如:apktool b Settings为回编译Settings文件夹为apk安装包文件7.反编译工具下载地址:/s/1mUjFY下载后解压缩,有文件夹apktool 直接放到本地硬盘里面,例如E 盘的根目录若把apktool文件夹放到了文件夹里面,那么在cmd窗口里时输命令就要多增加一步cd到文件夹的步骤教程到此结束!手机端反编译教程工具:apktool3.2操作步骤:1.下载工具,地址:/s/1cVHA解压缩“手机apktool3.2.7z”把里面的apktool文件夹直接放到手机内存卡的根目录2.在手机上打开刚刚的apktool文件夹,安装里面的Apktool3.2.apk3.用re管理器把system\framework\framework-res.apk复制到刚刚的apktool文件夹中重命名为framework.apk4.打开手机菜单,点击运行安装好的Apktool进入到内存卡的apktool文件夹中,按下菜单键,有个“安装framework”,点击它!会弹出一些帮助信息,在此不介绍了,按照它说的做5.可以正式开始反编译了!把要反编译的apk放到apktool目录下,运行Aapktool软件,进入apktool目录,单击欲反编译的那个apk 安装包,选择反编译全部,然后就等他搞定!6.搞定后会生成一个文件夹,名称格式为“被反编译的文件名_src”例如:Settings_src 这个文件夹就是被反编译后的apk的目录7.回编译的话你就点击“被反编译的文件名_src”例如:Settings_src ,点击后有一个“编译”选项,点击它!等待回编译结束。
APK反编译过程
一、用.rar打开apk文档,得到文档结构图如下所示
二、将classes.dex文件解压出来,然后使用工具反编译成.jar文件,再进一步
反编译出java文件
1.在cmd下进入dex2jar.bat所在路径,然后输入“dex2jar.bat XXX”,XXX
指的是你要反编译的apk中的classes.dex文件所在路径及名称,比如:
我的dex2jar.bat在D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路径
下, classes.dex在D:\Android下,所以:你进入dex2jar.bat路径下后,
输入dex2jar.bat D:\Android\classes.dex,这样会生成一个jar文件。
2.用rar解压出jar文件中的class文件,然后用jad或DJ Java Decompiler
反编译工具将.class文件反编译成.java文件
3.不解压出jar中的class文件,直接用JD GUI工具打开jar文件
4.步骤2和3选择其中一个即可,建议用步骤2,步骤3可能出现乱码
三、AndroidManifest.xml等xml文件直接打开也是乱码,完全看不懂,想看看别人是怎么布局的都不容易。
首先下载AXMLPrinter2.jar工具,把下下来的工具和xml文件放到同一个文件夹下,然后在DOS命令下,进入到AXMLPrinter2.jar的目录下,使用命令:java -jar AXMLPrinter2.jar AndroidManifest.xml
即可看到代码。
四、图片可以直接从步骤一中解压出来
五、OK!。
APK Multi-Tool强大的APK反编译工具终极教程Manction1APK Multi-Tool介绍APK Multi-Tool 是APK Manager的升级版,是一个强大的APK反编译工具,集多种功能于一身,是居家必备、做ROM必选的工具!这是一个比较方便的适合非开发者的小工具,可以对一些APK程序做自己喜欢的修改!目前官方最新版是APK Multi-Tool 1.0.3 ,官方网站是:2汉化说明此版本基于官方APK Multi-Tool 1.0.3 (05/17/2012) 汉化,完全尊重原版,但去除了在线更新功能。
官方英文原版每次执行脚本的时候都会先在线检查更新,这可能因为网络问题导致长久等待,而且在线更新将会覆盖汉化脚本,使汉化失效。
此版本为绿色版,免安装,解压后双击Script.bat就能直接运行,不会对注册表进行任何操作。
如果你不再使用此软件,直接从计算机删除程序目录即可,不会留任何垃圾。
此汉化版本仅供学习交流之用,请不要用于商业目的。
鉴于本人英语水平有限,不足之处还望指出!汉化: Manction主页: /manction微博: /manction邮箱: manction@日期: 2012年5月28日3前提条件要正常使用APK Multi-Tool ,您的计算机必须满足以下两个条件:1.JDK (Java Development Kit)2.Adb (Android SDK tools And platform-tools)3.1JDK的安装及环境变量的配置1.去Oracle官方网站下载并安装JDK,下载地址:/technetwork/java/javase/downloads注意是下载JDK,而不是JREJDK (Java Development Kit,Java开发工具包)JRE (Java Runtime Environment,Java运行环境)你也可以点击以下链接直接下载JDK:32位:/otn-pub/java/jdk/6u32-b05/jdk-6u32-windows-i586.exe 64位:/otn-pub/java/jdk/6u32-b05/jdk-6u32-windows-x64.exe2.配置环境变量下载并安装JDK之后,你需要在计算机的“系统属性”里配置以下环境变量:(步骤:在计算机的桌面上右击“我的电脑”,点击“属性”-“高级”-“环境变量”)变量名:JAVA_HOME变量值:D:\java\jdk1.6.0_32 (JDK安装目录)3.测试JDK是否安装成功在计算机的“运行”(Win+R)里打开CMD输入java – version 命令,如果出现以下提示,表示JDK安装成功!C:\Documents and Settings\Administrator>java -versionjava version "1.6.0_20"Java(TM) SE Runtime Environment (build 1.6.0_20-b02)Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode)3.2ADB的安装及环境变量的配置1.首先要去Google官方下载Android SDK,下载地址是:/sdk/index.html你也可以点击以下链接直接下载Android SDK:/android/installer_r18-windows.exe2.下载并安装Android SDK之后,打开SDK Manager,勾选Packages下面的Tools,只需要下载Android SDK Tools和Android SDK Platform-tools,大小为78MB,其他的不用下载。
Android apktool 工具使用apktool可以将apk反编译为smail格式的汇编语言代码, 也可重新编译 smail为dex文件,进而打包为apk,通过signapk工具签名.一. apktool 工具提供的命令1. 反编译.apktool d [decode] <apk-file> [apk文件] outdir [输出目录]2. 回编译apktool b [build] <apk-file> <out-path>二. ddx.jar 实现.dex反汇编java -jar ddx.jar -d [反编译后的文件输出目录] <dex文件路径>eg:java -jar ddx.jar -d ddxout Hello.dex三. smali 和 baksmali 相关命令1. 将.dex文件反汇编为smali语言格式java -jar baksmali.jar -o [编译后的smali文件输入目录] <dex文件路径>eg:java -jar baksmali.jar -oF:\Workspace\CWorkspace\ReverseDemo01\bin\baksmaliF:\Workspace\CWorkspace\ReverseDemo01\bin\classes.dex具体:.class public LHelloReverse;.super Ljava/lang/Object;.source "HelloReverse.java"# direct methods.method public constructor <init>()V.registers 1.prologue.line 2invoke-direct {p0}, Ljava/lang/Object;-><init>()Vreturn-void.end method.method public static main([Ljava/lang/String;)V.registers 5.prologue.line 5new-instance v0, LHelloReverse;invoke-direct {v0}, LHelloReverse;-><init>()V.line 6const/4 v1, 0x5const/4 v2, 0x3invoke-virtual {v0, v1, v2}, LHelloReverse;->foo(II)Imove-result v0.line 7sget-object v1, Ljava/lang/System;->err:Ljava/io/PrintStream; new-instance v2, Ljava/lang/StringBuilder;invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()Vconst-string v3, "foo: "invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;move-result-object v2invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;move-result-object v0invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;move-result-object v0invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V.line 8return-void.end method# virtual methods.method public foo(II)I.registers 5.prologue.line 11add-int v0, p1, p2sub-int v1, p1, p2mul-int/2addr v0, v1return v0.end method。
|棕发|之Sophone教程ID:919247600下面我们说一说怎么简单的反编译一个apk软件:
我们需要的软件有:
电脑中必须安装java(这个上网下载就行)
APK反编译及编译工具v132签名版.exe(这个我上传了,下载地址:
开始反编译:
将需要编译的软件与APK反编译及编译工具v132签名版.exe放在同一个文件夹下面,将软件重新命名为124.apk,双击APK反编译及编译工具v132签名版.exe,点击安装。
完成后,APK反编译及编译工具v132签名版.exe会在同一目录下面生成一个APK的文件夹,apk解压下来的东西都在这个文件夹里面:
下面我们开始处理:
①我们可以替换图标/图片:
(最好保持与原包里面的photo大小格式一样,格式必须一致)
②修改软件的内容:
这时候,我们就用到Notepad++这个软件了:如图:
我们修改软件的显示文字:
如果我们修改好了之后,我们还是运行APK反编译及编译工具v132
在APK这个文件夹下面就会出现一个build的文件夹:
里面有两个apk,一个是授权后的,一个是未授权的;
文件的话,未授权的就足以。
【提示说明:如果是安装修改后的软件,请你卸载已经安装在手机的软件,否则会出现无法安装的问题】。
前提条件:JDK已经安装并可正常运行APKTool反编译工具安装操作指南1.Apktoos.jar与apktool/aapt.exe放入同一个文件夹下,如下图2.运行cmd,cd apktool文件夹目录如:cd D:\CNR-央广视讯\Tools\Android_apktool反编译\Apktools 3.输入apktool,检查是否成功,如下图表示成功APKTool使用指南:1.将apk反编译至当前文件夹下,命令:apktool d xxx.apk如下图:2.将已反编译apk包重建,并输出至该文件夹下/dist/out.apk Apktool b当前要重建apk文件夹路径;例如:apktool b C:\Users\qjy\Desktop\apkTools\MyWeiXinAPK签名大体可以分为三个步骤:1.使用keytool工具生成一个密钥,文件名为xxxx.keystore(如:mcking.keystore)2.使用jarsigner工具对未签名的APK签名3.使用jarsigner工具验证APK是否签名成功1.生成密钥具体操作如下:1.开始->运行输入“cmd”回车,如图2.输入命令行:keytool-genkey-keystore C:\Users\qjy\Desktop\QJY\qjytest2.keystore-alias qjytest02-keyalg RSA-validity20000keytool-genkey-keystore C:\Users\qjy\Desktop\QJY\qjytest2.keystore-alias qjytest02-keyalg RSA-validity20000keytool密钥生成工具-genkey生成一个密钥-keystore密钥存储(这里为C:\Users\qjy\Desktop\QJY\qjytest2.keystore)-alias密钥别名(qjytest02)-keyalg加密方式(使用RSA)-validity密钥有效时间(这里为20000)完成后,在C:\Users\qjy\Desktop\QJY目录下生成如下keystore文件其中:输入keystore密码:是keysore文件的密码Re-enter new password:再次输入密码您的名字与姓氏是什么?:输入你的名字您的组织单位名称是什么?:输入单位名字您的组织名称是什么?:输入组织名称您所在的城市或区域名称是什么?:输入城市名称您所在的州或省份名称是什么?:输入省份名称CN=mcking,OU=,O=,L=sz,ST=gd,C=cn 正确吗?[否]:y(确认输入信息Y回车,修改直接回车)输入<mcking>的主密码(如果和keystore密码相同,按回车):二、用密钥签名APK1输入命令行:jarsigner-verbose-keystore D:\mcking.keystore-signedjarC:\Users\McKing\Desktop\test_signed.apk C:\Users\McKing\Desktop\test.apk mckingjarsigner为Java签名工具-verbose签名时输出信息-keystore签名的密钥(这里在d盘根目录的mcking.keystore)-signedjar签名后的apk位置(这里为C:\Users\McKing\Desktop\test_signed.apk)C:\Users\McKing\Desktop\test.apk(为需要签名的apk文件)mcking(密钥的别名)举例:jarsigner-verbose-keystore C:\Users\qjy\Desktop\QJY\qjytest2.keystore -signedjar C:\Users\qjy\Desktop\CNRL010051.apk C:\Users\qjy\Desktop\QJY\CNRL010051.apk qjytest02签名完成后,如下图:在C:\Users\qjy\Desktop\路径下自动生成已签名的文件:3.判断apk签名是否成功输入命令行:jarsigner-verify C:\Users\qjy\Desktop\CNRL010051.apk回车如若出现:jar已验证则签名成功其中命令行-verify输出验证信息C:\Users\qjy\Desktop\CNRL010051.apk(为要验证的apk路径)。
Apktool(3)——Apktool的使⽤⼀.apktool的作⽤安卓应⽤apk⽂件不仅仅是包含有resource和编译的java代码的zip⽂件,如果你尝试⽤解压⼯具(如好压)解压后,你将会获得classes.dex 和resource.arsc等⽂件。
但这些⽂件对我们来说⼀⽆⽤处。
你可以尝试打开AndroidManifest.xml:如果我们有了apktool:输⼊apktool d testapp.apk再打开AndroidManifest.xml:除了这些,我们还获得了该apk的其他有⽤资源。
⼆.apktool命令相关选项(options)说明1.概要使⽤:apktool(1)-version,--version查看apktool版本号。
(2)-v,--verbose使⽤apktool命令时输出详细内容,该参数必须作为第⼀个参数。
(3)-q,--quiet隐藏输出(quiet output),即输出是不显⽰详细信息,该参数必须作为第⼀个参数。
(4)-advance,--advances输出更详细的信息。
2.反编译(decode)使⽤:apktool d testapp.apk(1)--api产⽣smail⽂件的api等级。
(??)(2)-b,--no-debug-info阻⽌baksmail写出debug信息。
(3)-d,--debug在debug模式下decode apk。
(4)--debug-line-prefix在debug模式下decode时,smali中有⾏号前缀。
(5)-f,--force强制删除⽬标⽬录,如在再次decode时,删除已经存在的⽂件夹。
强制覆盖存在。
(6)--keep-broken-res如果存在类似这样的错误:Invalid Config Flags Detected. Dropping Resouerces…,如果加上该选项,则仍然能够通过decode,但需要⼿动修改⽂件夹中报错的问题。
gapktool.jar的使用方法1.简介g a p k t o o l.j a r在移动互联网时代,A ndr o id应用的开发与发布变得越来越普遍。
而对于A nd ro id开发者来说,为了保护其应用的安全性和版权,经常需要对AP K文件进行反编译、修改或重签名等操作。
在这些操作中,一个非常重要的工具就是。
2.安装g a pk to ol.j ar是一款基于J av a的工具,因此在使用之前需要确保您的电脑已经安装了Ja v aD ev el op me nt Kit(JD K)。
您可以从J av a官方网站下载并安装最新的J DK。
安装完成后,您只需将g ap kt oo l.ja r文件下载到本地,并确保将其路径添加到系统的环境变量中,这样就可以在任何地方通过命令行使用g a pk to ol.j ar了。
3.使用步骤为了方便理解和操作,下面我们将详细介绍g ap kt oo l.ja r的使用方法。
3.1反编译A P K文件要对AP K文件进行反编译,您可以使用以下命令:```j a va-j ar ga pk to ol.j ar da pp.a pk-o out p ut_d ir ec to ry```其中,`ap p.ap k`是您要反编译的AP K文件的路径,`o ut pu t_d i re ct ory`是您希望输出反编译文件的目录。
执行该命令后,g a pk to ol.j ar将会将A PK文件解析成一系列的Sm al i代码文件和资源文件。
3.2修改A P K文件在反编译完成后,您可以对S ma li代码文件进行修改。
例如,您可以修改其中的逻辑、界面等内容,以满足自己的需求。
3.3重打包A P K文件完成对S ma li代码文件的修改后,您可以使用以下命令将其重新打包成A PK文件:```j a va-j ar ga pk to ol.j ar bo ut pu t_di rec t or y-on ew_a pp.ap k```其中,`ou tp ut_d ir e ct or y`是您修改后的Sm al i代码文件所在的目录,`n ew_a pp.a pk`是您希望生成的新AP K文件的路径。
市面上比较常用的反编译工具有:dex2jar,jd-gui,apktool,IDA等等。
这里我简单的说一下dex2jar这个常用反编译工具的使用。
在下载到了dex2jar和jd-gui这两个工具之后。
1.将要反编译的APK后缀名改为.rar或 .zip,并解压
-------------------------------------------------------------
2.得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内
-------------------------------------------------------------
3.在命令行下定位到dex2jar.bat所在目录,输入
dex2jar.bat classes.dex。
效果如下:
在该目录下会生成一个classes_dex2jar.jar的文件,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了,效果如下:
被混淆过的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名):
没有经过处理或者只是简单的混淆过的APP其代码的反编译的比较容易的。
你的代码经过上面那三步已经暴露出来了。
在下面提供的更多的途径来给各位学习反编译。
(以上资料由爱加密从网上收集整理)。
Apktool 语法Apktool 是一款用于反编译和重新打包 Android APK 文件的工具。
它可以帮助您查看APK 文件的内容,修改其中的资源文件,并在重新打包后运行 APK 文件。
Apktool 的语法非常简单,主要由以下几个部分组成:命令: Apktool 命令用于指定要执行的操作。
最常见的命令是 d(反编译)、b(重新打包)和 i(查看信息)。
参数:参数用于指定命令的具体选项。
例如,-f 参数用于指定要反编译的 APK 文件,-o 参数用于指定反编译后的输出目录。
文件路径:文件路径用于指定要操作的文件。
例如,d myapp.apk 命令将反编译 myapp.apk 文件,b myapp 命令将重新打包 myapp 目录下的文件。
Apktool 命令Apktool 最常用的命令如下:d:反编译 APK 文件。
b:重新打包 APK 文件。
i:查看 APK 文件的信息。
help:显示帮助信息。
Apktool 参数Apktool 的参数非常丰富,可以满足各种不同的需求。
最常用的参数如下:-f:指定要反编译/重新打包的 APK 文件。
-o:指定反编译后的输出目录/重新打包后的 APK 文件。
-p:指定 APK 文件的签名密钥。
-v:显示详细的输出信息。
-s:静默模式,不显示任何输出信息。
Apktool 文件路径Apktool 的文件路径可以是绝对路径,也可以是相对路径。
相对路径是相对于当前目录的路径。
例如,d myapp.apk 命令将反编译当前目录下的 myapp.apk 文件,b myapp 命令将重新打包当前目录下的 myapp 目录下的文件。
Apktool 示例以下是一些 Apktool 的使用示例:反编译 myapp.apk 文件:d myapp.apk重新打包 myapp 目录下的文件:b myapp查看 myapp.apk 文件的信息:i myapp.apk显示帮助信息:helpApktool 常见问题Apktool 最常见的几个问题如下:反编译后的文件无法重新打包:这是因为反编译后的文件缺少签名密钥。
系统APK的编译和反编译主要使用工具为apktool和压缩软件,WINRAR/7Z/好压均可。
在这我们主要讲系统APK的反编译和编译。
其实系统APK的反编译和编译和apk的区别不大,主要区别在于,系统APK涉及共享签名的问题,还有就是在反编译和编译前需要将两个依赖项进行IF命令操作,也可以理解为安装。
一、依赖项的IF命令:1、提取你系统的system\framework下面的com.htc.resources.apk 和framework-res.apk(原则上每个不同的系统都提取一次;注意修改过的这两个文件反编译或编译可能会失败);2、将上面两项放入C盘根目录下,这个随便你放,只要在命令输入时路径相同就可以;3、打开CMD或命令提示符,即DOS窗口;4、在DOS窗口输入:apktool if C:\com.htc.resources.apk 输入完成后回车键回车apktool if C:\framework-res.apk 输入完成后回车键回车5、这样IF命令和安装已经结束,这是系统APK编译必须的二、反编译系统APK所谓反编译系统APK就是将系统APK分解,让不可以识别的XML文件变为可以识别。
将需要反编译的系统APK放入C盘,我个人喜欢放C盘,个人自己去体会。
以framework-res.apk这个反编译为例:命令:apktool d C:\framework-res.apk C:\framework-res回车完成后会在C盘出现一个framework-res名称的文件夹。
请注意,反编译完成总共只有5-6行,多出就是错误了。
但是不是完全的错误,这个需要实际去查看错误原因了。
三、编译系统APK编译系统APK就是将修改后的系统文件合成。
以上面反编译系统APK继续:命令:apktool b C:\framework-res回车完成后会在framework-res文件夹内build文件夹或dist文件夹内生成一个新的APK文件,这就是修改后的合成的新的APK文件。
Apk反编译及签名工具使用
1) APKtool软件包及签名tool
APKtool软件包有2个程序组成:apktool.jar 和aapt.exe
另外提供一个批处理文件:apktool.bat,其内容为:
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
运行apktools.jar需要java环境(1.6.0版本以上)。
apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。
signapk.jar 用于签名。
2) APK文件的解包
下面以解开Contacts.apk为例。
首先把Contacts.apk Copy到当前工作目录下(例:Test)。
在DOS下打入命令
apktool d Contacts.apk ABC
这里“d”表示要解码。
Contacts.apk是要解包的APK文件。
ABC是子目录名。
所有解包的文件都会放在这个子目录内。
3) APK文件的打包
在DOS下打入命令
apktool b ABC New-Contacts.apk
这里“b”表示要打包
ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。
New-Contacts.apk是打包后产生的新的APK文件。
4) 签名,不签名安装时可能提示如下错误:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] --- 没有签名,可以尝试test证书;签名方法见下面。
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] ---- 已存在签名,但使用证书不对,可以尝试使用其他证书签名。
签名方法:到目录android\build\target\product\security找到证书文件,这里可能会有几种证书,
test/shared/platform/media,各种证书使用场景不同,可以自己google一下,因为签名很快而且可任意后续更改签名,可以自己尝试各种不同签名;
这个命令行是使用test证书的例子:java -jar signapk.jar testkey.x509.pem testkey.pk8 YOURAPK.apk YOURAPK_signed.apk
YOURAPK_signed.apk就是签完名的apk,去测试一下您重新打包的apk吧。