一.看android的源代码 1)将Apkd.apk 用zip解压后,出现了一个classes.dex文件 2014/02/19 19:42 . 2014/02/19 19:42 .. 2014/02/19 15:35 1,656 AndroidManifest.xml 2014/02/19 15:35 687,024 classes.dex 2014/02/19 15:49 META-INF 2014/02/19 15:49 res 2014/02/19 15:35 2,200 resources.arsc 2)进入到dex2jar目录中,运行情况如下: D:\developer\tools\test_apk\dex2jar-0.0.9.15>dex2jar.bat "..\Apkd(d2j)\classes.d ex" this cmd is deprecated, use the d2j-dex2jar if possible dex2jar version: translator-0.0.9.15 dex2jar ..\Apkd(d2j)\classes.dex -> ..\Apkd(d2j)\classes_dex2jar.jar Done. 在apk所在的目录会出现 classes_dex2jar.jar 文件。 3) 用JD-GUI对jar包进行查看,可以查看源文件 二.反编译apk 1.在下载APKTOOL中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压缩到你的Windows安装目录下,以方便使用Dos命令. 2012/12/06 11:44 854,016 aapt.exe 2014/02/19 17:15 277,372 Apkd.apk//示例用apk文件 2012/12/23 23:39 92 apktool.bat 2013/02/03 02:37 2,655,843 apktool.jar 2.进入到apktool.bat所在的目录,运行: apktool d Apkd.apk decode_dir 反编译后,decode_dir目录下的内容如下: 2014/02/19 17:16 716 AndroidManifest.xml 2014/02/19 17:16 237 apktool.yml 2014/02/19 17:18 build 2014/02/19 17:16 res 2014/02/19 17:16 smali 此时我可以查看原文件AndroidManifest.xml了,也是查看smali源文件(是用smali语言写的,可以对照java看)。 三.APKTOOL的使用 1).decode 该命令用于进行反编译apk文件,一般用法为 apktool d 代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk 代表了反编译后的文件的存储位置,比如C:\MusicPlayer 如果你给定的已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令 apktool d –f 这样就会强行覆盖已经存在的文件 2).build 该命令用于编译修改好的文件,一般用法为 apktool b 这里的 就是刚才你反编译时输入的 (如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。 3).install-framework 该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。具体情况请看常见问题 四.smali与java源码对照,并做出相应的修改 java源代码: import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.*; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView a = (TextView)this.findViewById(R.id.test) ; a.setText("raoliang"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 对应的smali源代码: .class public Lali/text/apkd/MainActivity; .super Landroid/app/Activity; .source "MainActivity.java" # direct methods .method public constructor ()V .locals 0 .prologue .line 8 invoke-direct {p0}, Landroid/app/Activity;->()V return-void .end method # virtual methods .method protected onCreate(Landroid/os/Bundle;)V .locals 2 .parameter "savedInstanceState" .prologue .line 12 invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V .line 13 const/high16 v1, 0x7f03 invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->setContentView(I)V .line 14 const/high16 v1, 0x7f08 invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->findViewById(I)Landroid/view/View; move-result-object v0 check-cast v0, Landroid/widget/TextView; .line 15 .local v0, a:Landroid/widget/TextView; const-string v1, "raoliang" invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V .line 16 return-void .end method .method public onCreateOptionsMenu(Landroid/view/Menu;)Z .locals 2 .parameter "menu" .prologue .line 21 invoke-virtual {p0}, Lali/text/apkd/MainActivity;->getMenuInflater()Landroid/view/MenuInflater; move-result-object v0 const/high16 v1, 0x7f07 invoke-virtual {v0, v1, p1}, Landroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V .line 22 const/4 v0, 0x1 return v0 .end method 通过对比可以看到,常量是没有必变的,可以根据的smali的语法,进行相应的修改 五.3、打包、签名和安装修改后的apk 修改完了,就可以打包回apk了。执行以下命令: apktool b decode_dir 在mygame目录下的dist在会看到打包好的apk。 当然,现在一般是无法安装的,因为apk还没有签名。下面就来签名。签名需要keystore文件,我已经有专用的keystore了,如果还没有,请参阅这里进行生成。 执行以下命令为重新编译的my_game.apk签名: jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore 最后,在安装到手机前,需要把手机中的已有版本先卸载,因为如果签名不同,是不能覆盖安装的,会提示“应用程序未安装”错误。 完整的运行情况如下: D:\developer\tools\test_apk\new\decode\dist>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore 输入keystore密码: 再次输入新密码: 您的名字与姓氏是什么? [Unknown]: rao 您的组织单位名称是什么? [Unknown]: rao 您的组织名称是什么? [Unknown]: 您所在的城市或区域名称是什么? [Unknown]: 您所在的州或省份名称是什么? [Unknown]: 该单位的两字母国家代码是什么 [Unknown]: CN=rao, OU=rao, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 正确吗? [否]: y 输入的主密码 (如果和 keystore 密码相同,按回车): D:\developer\tools\test_apk\new\decode\dist>jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore 输入密钥库的口令短语: 正在添加: META-INF/MANIFEST.MF 正在添加: META-INF/DEMO_KEY.SF 正在添加: META-INF/DEMO_KEY.RSA 正在签名: res/drawable-hdpi/ic_launcher.png 正在签名: res/drawable-mdpi/ic_launcher.png 正在签名: res/drawable-xhdpi/ic_launcher.png 正在签名: res/drawable-xxhdpi/ic_launcher.png 正在签名: res/layout/activity_main.xml 正在签名: res/menu/main.xml 正在签名: AndroidManifest.xml 正在签名: classes.dex 正在签名: resources.arsc D:\developer\tools\test_apk\new\decode\dist> 到此为止,修改后的apk可以正常的安装了,不过,在安装之前,必须要先卸载以前的apk,不能直接替换(因为签名不一样)
2. 求安卓软件反编译修改教程
1、baksmali:classes.dex反编译为smali格式
(smali:smali格式编译打包为classes.dex,但由于smali格式类似汇编,比较难阅读,所以用dex2jar进行辅助 )
2、dex2jar:classes.dex转为jar包
3、jdgui:jar反编译并阅读
操作顺序:
apk用zip解开,里面的classes.dex分别用baksmali处理为smali,用dex2jar处理成jar,然后用jdgui看代码,找好java文件中要改的位置后,在smali里找对应的位置修改,改完了用smali再编译为classes.dex,覆盖原来apk里的同名文件,最后重新签名。注意安装时要先删除原来手机里的版本,因为签名不同。
3. apk反编译工具怎么使用
反编译apk工具使用最广泛的就是apktool,这里先说一下整个流程用到的工具有:
1.apktool,下载后拿到apktool.bat和apktool.jar,然后把这两个工具放到C:Windows底下。这个工具的作用主要是得到apk的资源文件和配置文件
2.dex2jar 下载这个工具解压后放到任意盘都可以,后面主要用这个根据apk的classes.dev文件生成供jd-gui工具解析的jar。
3.jd-gui上一步提到其作用,和2一样,也是下载后放到任意盘即可,到时候只要运行jd-gui.exe打开上一步生成的jar即可查看源码,下面对这个工具不再赘述
下面详细说一下前面两个工具类的详细用法:
先说apktool的用法:
1.下载后拿到apktool.bat和apktool.jar,然后把这两个工具放到C:Windows底下
2.cmd打开后默认是你的计算机,默认的不用改,直接输入apktool,如果出现如下图的效果,即表示准备已就绪
4. 怎么反编译settings.apk
事项:
1.反编译系统文件必须是从官方提取的.APK文件。(因为APK只能实现一次反编译,就是说如果这个文件已经反编译过了,就不能再次反编译,就算你反编译了也不能回编译。)
2.编译工具论坛上很多可以自己搜索下载,存放的位置文件夹最好不带中文。
3.覆盖原文件时一定要切记,先移动到系统文件夹下,然后修改权限,然后在覆盖原来APK(不然会怎么样,我相信大家懂的{:soso_e144:} )
4.就算附件中有反编译工具也要自己搭建好java环境(因为一切反编译的工具都是建立在JAVA环境的基础上的)
开始教程:
1.关于JAVA、环境变量,请搜索教程帖
2.环境变量设置成功后,就是提取你手机上的Settings.apk。
3.进行反编译,(我想有一定美化基础的应该很会简单的),反编译后得到Settings文件夹打开然后\res\values-zh-rCN\找到strings文件,右键打开,打开方式选择看你习惯。
修改好以后选择保存,回编译。
回编译好的APK用鼠标右键单击 选择用好压打开然后将resources.arsc 拖拽出来。然后在把JU1.1的Settings.APK提取出来也用好压打开,将刚才拖拽的resources.arsc 文件在拖拽到JU得APK中。然后点覆盖。然后在将其移动到SYSTEM\APP里 就OK了(记得修改权限)
这个需要在手机上操作
打开RE管理器,打开里面的system,找到build.prop.长按弹出对话框,选择:使用文本编辑器打开(右上角要改为读写哦)
第四行的:ro.build.display.id= 等号后面就是你想要输入的不要过长哦~
第八行的:ro.build.version.release= 同上
修改完成后,点击左虚拟键,也就是设置键,选择:保存并退出。
你会在build.prop下面发现它的备份文件,删除,重启,OK~全部完成~
5. 如何反编译系统的apk
1
下载apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、apktool-install-windows-r05-ibot.tar.bz2 (windows系统)
2
解压刚刚下载的文件,并将解压的文件放入C:\Windows目录下
3
启动控制台,输入apktool,回车可查看到apktool工具常用指令
4
新建一个文件夹,用于存放apk及待解压的文件,这里笔者将文件夹建在D:\apk目录,同时放入用于测试的android app包(test.apk)
5
控制台输入:apktool d D:\apk\test.apk D:\apk\test 进行反编译操作
中句话中“D:\apk\test.apk”指apk存放位置,“D:\apk\test”指反编译后文件存放的位置
6
反编译成功之后,进入D:\apk\test文件目录可以查看到反编译后的文件
6. android studio 如何回编译一个APP
android studio中不能编译反编译出来的文件,android studio只能编译源代码。
1.反编译Apk得到Java源代码
首先要下载两个工具:dex2jar和JD-GUI
前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
具体步骤:
首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;
解压下载的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盘的根目录里
7. 如何将e4a写的app反编译成源码
public String Getgtk(String skey) {
String Getgtk = "";
int hash = 5381;
for (int i = 0; i <= IntegerVariant.getIntegerVariant(文本操作.取文本长度(skey)).sub(ByteVariant.getByteVariant((byte) 1)).getInteger(); i++) {
hash = (位运算.位左移(hash, 5) + hash) + 转换操作.字符转代码(文本操作.取文本中间(skey, i, 1));
}
return 转换操作.整数到文本(位运算.位与(hash, (int) 转换操作.到十进制("7fffffff")));
}
8. apk怎么反编译换图标比较简单的方法
一、准备工作
1、下载安装java jdk
2、配置java环境
3、下载apktools反编译工具包
二、具体操作
1、将下载来的apktools工具包解压至c:\目录下,然后将需要反编译(修改)的apk文件放入解压文件夹内。今天就用一键锁屏来做试验吧。
2、打开一键apktools.exe工具,因为不是系统文件所以就直接反编译,不需要安装环境!选择2,然后选择文件名。这里我们是lockscreen.apk所以我们选2!
3、等待解压完成,我们在lockscreen文件夹内的res目录里去修改 程序名称和程序图标。程序名称的文件路径为 lockscreen\res\values-zh-rCN\strings.xml 我们使用记事本打开 找到app_name 在 两个>< 修改自己需要显示的程序名称,我们就把 一键锁屏改为 锁屏,修改好以后保存即可~
4、然后在 lockscreen\res\drawable-hdpi 文件夹内替换图标。先找到现在的程图标,因为一键锁屏很简单,所以只有一个图标。我们记下图标的名字 lock.png 然后删除它,将我们准备好的图标放入目录下,改名为刚才的名字 lock.png。
5、然后返回到apktools解压文件夹,编译后的文件在 回编apk生成目录 下,我们将其签名,然后安装即可。
9. 如何使用apktool反编译apk
1.下载apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、apktool-install-windows-r05-ibot.tar.bz2 (windows系统)
2.解压刚刚下载的文件,并将解压的文件放入C:\Windows目录下
3.启动控制台,输入apktool,回车可查看到apktool工具常用指令
4.新建一个文件夹,用于存放apk及待解压的文件,这里笔者将文件夹建在D:\apk目录,同时放入用于测试的android app包(test.apk)
5.控制台输入:apktool d D:\apk\test.apk D:\apk\test 进行反编译操作
中句话中“D:\apk\test.apk”指apk存放位置,“D:\apk\test”指反编译后文件存放的位置
6.反编译成功之后,进入D:\apk\test文件目录可以查看到反编译后的文件
10. apk反编译/回编译
再次记录一次apk反编译/回编译过程,链接失效请留言,会及时更新。
参考博客: https://blog.csdn.net/w327918069/article/details/82761437
首先,我们需要一个apk,下图是Android Studio编写并打包的一个apk。
其实apk就相当于一个zip压缩包,通过 WinRar 工具可以对其解压缩,像这样:
此时,祭出我们的神器----> apktool ,当当当当~~~~~~~。
一行命令进行apk反编译:
apktool d -r app-debug.apk 一定要加入参数 -r ,不然后面回编译回报错。
apk反编译到此结束。
回编译就是通过 apk反编译 生成的目录文件转换成一个apk。
十分简单的一行命令:
apktool b app-debug
此时安装apk到手机无法安装成功,还需要对apk进行签名才能安装。
1.生成key.keystore
keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore
可以看到key.keystore已经生成。
2.对apk进行签名
可用于没有签名和已经签名的apk,再次签名。
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]
命令格式及参数意义:
-verbose -> 输出签名过程的详细信息
-keystore [keystorePath] -> 密钥的库的位置
-signedjar [apkOut] -> 签名后的输出文件名
[apkin] -> 待签名的文件名
[alias] -> 证书别名
jarsigner -verbose -keystore key.keystore -signedjar app-debug_signed.apk app-debug.apk key.keystore
回编译完成。