Ⅰ 如何应用安卓APK文件进行解包打包和修改
不需要解包跟打包,直接修改就可以,修改的的方法。
如下参考:
1.将需要修改的apk包复制到100apktool的路径中。注意:您需要将文件名更改为123apk,如下图。
Ⅱ android 混淆 什么意思
Android代码混淆,是为了你的apk被他人反编译之后拿到源码,如果你混淆了,那反编译后的apk所有的java类都被改成了a.java/c.java之类的文件名,类里面的属性也变成abc之类的了,想拿到你的源码就不可能了,直接在gradle(app)文件的android节点下加上下边代码。
buildTypes{
release{
minifyEnabledfalse
('proguard-android.txt'),'proguard-rules.pro'
}
}
Ⅲ 如何进行APK反编译
如何进行APK反编译
我们下载到某些apk的时候,可能总想学习下别人是怎么进行程序设计的,或者怎样使用xml文件布局的,这时就想到将apk文件的后缀改为rar并解压,最终得到一些图片资源和很多打开为乱码的文件,可见这种方式不可行,这就需要使用下面的工具对apk进行反编译了。
一、工具准备:apktool、dex2jar、jd-gui
工具包也可以在这里下载。
1、dex2jar可以在这里下载,jd-gui可以在这里下载。
2、apktool,可以到Google官方下载,apktool-1.0.0.tar.bz2(里面有apktool.jar)和apktool-install-windows-2.1_r01-1.zip两个包都要下。解压apktool.jar到 C:\Windows,解压apktool-install-windows.zip到任意文件夹(例如E盘根目录)。
二、使用dex2jar + jd-gui 得到apk的java源码,步骤如下:
1、用.rar打开apk文档,将classes.dex文件解压出来,然后使用工具反编译成.jar文件。
在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、用jd-gui反编译工具将得到.jar文件反编译成.java文件。
三、使用apktool得到apk的xml文件
1、Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入命令:
apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC
2、 在解压后的文件夹中可以得到apk的xml配置文件。
四、第二步得到的程序源代码和第三步得到的xml文件组合下,就成一个android工程,即可得到完整的apk源码。
Ⅳ 手机systempatch是什么大神们帮帮忙
流氓插件。。。 反编译了一下代码看大概的功能就是通过pgv.oxoxabc.com以及wylp.oxoxabc.com下载各种软件下来强制装到你的手机上。有root权限,不知道还会做出什么其他什么更过分的事情来。 另外这东西的似乎是通过电脑浏览网页的时候,利用浏览器漏洞,自动安装到手机的。。。如果刚好这个时候你的手机连着电脑的话。。。
采纳哦
Ⅳ 如何通过反编译查询apk包名信息
首先安装java环境,然后到google code里面下载apktool1.5.2.tar.bz2和apktool-install-windows-r05-ibot.tar.bz2
从两个压缩包中解压aapt.exe、apktool.bat和apktool.jar三个文件,放在一个文件夹中(为方便命令行中使用apktool命令,可将解压到的路径放入path或者直接将这三个文件放入path路径下的文件夹,如C:\Windows)
通过cmd运行 Apktool 命令:
apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC
apktool b ABC 从文件夹ABC重建APK,输出到ABC\dist\out.apk
Ⅵ 混淆是什么意思
问题一:混淆是什么意思 混淆 hùn xiáo
1.混杂,使界限不分明
混淆黑白
2.制造混乱蒙蔽人
混淆视听
问题二:莫混淆的意思是什么 莫,别,不要;混淆,混合,混杂,搅乱。莫混淆,意思是不要搅乱,要区别清楚。
问题三:混淆的意思是什么 何谓草莓族 : 这是流行于台湾的说法,也就是生于1980年以后的新鲜人,因此80的人又称为7年级生之说,这群人的特性就是如草莓这种水果,外面光鲜夺目,却质地棉软,稍一施压就整个抵抗不住变成一团稀泥,但是它的表层也疙疙瘩瘩挺有个性,和他们相处拿捏要十分小心。
草莓族的特性 : 1 独生子,从小被父母宝贝的不得了;
2 从小不缺钱花,抗压能力低,心理承受能力低;
3 一有小挫折或是被说两句就就像草莓被碰撞到全身,被撞
烂了无法恢复;
4 一碰到压力就崩溃,就像草莓禁不起压力一压就扁。
不管是原始名称“草莓族”还是后来衍生出的“柿子族”,都泛指年轻人承受不了太多压力,就像是一压即烂的水果。
事实上,职场上有非常多的草莓族不限于六、七年级生,只要是稍一承受压力就唉唉叫的人,通常工作效能都不佳,只是六、七年级生不像以前的人明显表现出“吃苦耐劳加耐操”的样子,所以才会被冠上这样一个名词。
问题四:android 混淆 什么意思 Android代码混淆,是为了你的apk被他人反编译之后拿到源码,如果你混淆了,那反编译后的apk所有的java类都被改成了a.java/c.java之类的文件名,类里面的属性也变成abc之类的了,想拿到你的源码就不可能了,直接在gradle(app)文件的android节点下加上下边代码。
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }}
问题五:感情会有混淆的状态是什么意思 感情混乱有可能是不清楚到底是友情还是爱情;也有可能是不知道是否该付出感情还是保持现状做一般朋友。还有一种可能就是两者都有感觉,不知道该选择哪一方。不知道你的问题是属于哪一种?祝你顺心如意!
问题六:莫混淆是什么意思 指不要迷惑,不要将一样东西误认为另一样东西。
Ⅶ 我反编译JAVA文件,有一些汉字信息就变成了\u9879 了
使用 jdk 自带的 native2ascii.exe 工具,在你的 jdk文件夹/bin 下能找到。
针对你的问题,在 cmd 窗口中执行下面的命令即可(需要将 jdk文件夹/bin 加入到 path 环境变量中):
native2ascii -reverse C:\abc.java c:\abc2.java
(这里abc.java表示你的含有 \uxxxx 字符的java文件;
c:\abc2.java 表示转后后的文件)
下面附上完整的 使用方法:
------------------------------
native2ascii用法解析
native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件(比如
*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。为什么要进行转码,
原因在于程序的国际化。
Java 编译器和其它 Java 工具只能处理含有 Latin-1 和/或 Unicode 编码(\udddd 记
号)字符的文件。native2ascii 将含有其它字符编码的文件转换成含 Latin-1 和/或
Unicode 编码字符的文件。
若省略 outputfile,则使用标准输出设备输出。此外,如果也省略 inputfile,则使用
标准输入设备输入。
用法:native2ascii [-reverse] [-encoding 编码] [输入文件 [输出文件]]
-[options]:表示命令开关,有两个选项可供选择
-reverse:
执行相反的操作:将含 Latin-1 和/或 Unicode 编码字符的文件转换成含本地编码字符
的文件,不指定编码情况下,将转为本地编码。
-encoding encoding_name
指定转换过程使用的编码名称。缺省的编码从系统属性 file.encoding 中得到。
encoding_name 字符串必须是下表第一栏所示的字符串。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台
-------------------------------------------------------------
8859_1 ISO 8859-1
8859_2 ISO 8859-2
8859_3 ISO 8859-3
8859_4 ISO 8859-4
8859_5 ISO 8859-5
8859_6 ISO 8859-6
8859_7 ISO 8859-7
8859_8 ISO 8859-8
8859_9 ISO 8859-9
Big5 Big5 码,繁体中文
CNS11643 CNS 11643,繁体中文
Cp037 美国、加拿大(两种语言,法语)、荷兰、葡萄牙、巴西、澳大利亚
Cp1006 IBM AIX 巴基斯坦(乌尔都语)
Cp1025 IBM 多语种西里尔语:保加利亚、波斯尼亚 黑塞哥维那、马其顿 (FYR)
Cp1026 IBM Latin-5,土耳其
Cp1046 IBM Open Edition US EBCDIC
Cp1097 IBM 伊朗(波斯语)/波斯
Cp1098 IBM 伊朗(波斯语)/波斯 (PC)
Cp1112 IBM 拉脱维亚,立陶宛
Cp1122 IBM 爱沙尼亚
Cp1123 IBM 乌克兰
Cp1124 IBM AIX 乌克兰
Cp1125 IBM 乌克兰 (PC)
Cp1250 Windows 东欧
Cp1251 Windows 斯拉夫语
Cp1252 Windows Latin-1
Cp1253 Windows 希腊
Cp1254 Windows 土耳其
Cp1255 Windows 希伯莱
Cp1256 Windows 阿拉伯
Cp1257 Windows 波罗的语
Cp1258 Windows 越南语
Cp1381 IBM OS/2, DOS 中华人民共和国 (PRC)
Cp1383 IBM AIX 中华人民共和国 (PRC)
Cp273 IBM 奥地利、德国
Cp277 IBM 丹麦、挪威
Cp278 IBM 芬兰、瑞典
Cp280 IBM 意大利
Cp284 IBM 加泰罗尼亚语/西班牙、拉丁美洲西班牙语
Cp285 IBM 英国、爱尔兰
Cp297 IBM 法国
Cp33722 IBM-eucJP - 日语 (5050 的超集)
Cp420 IBM 阿拉伯
Cp424 IBM 希伯莱
Cp437 MS-DOS 美国、澳大利亚、新西兰、南非
Cp500 EBCDIC 500V1
Cp737 PC 希腊
Cp775 PC 波罗的语
Cp838 IBM 泰国扩展 SBCS
Cp850 MS-DOS Latin-1
Cp852 MS-DOS Latin-2
Cp855 IBM 斯拉夫语
Cp857 IBM 土耳其语
Cp860 MS-DOS 葡萄牙语
Cp861 MS-DOS 冰岛语
Cp862 PC 希伯莱
Cp863 MS-DOS 加拿大法语
Cp864 PC 阿拉伯语
Cp865 MS-DOS 日尔曼语
Cp866 MS-DOS 俄语
Cp868 MS-DOS 巴基斯坦语
Cp869 IBM 现代希腊语
Cp870 IBM 多语种 Latin-2
Cp871 IBM 冰岛语
Cp874 IBM 泰国语
Cp875 IBM 希腊语
Cp918 IBM 巴基斯坦(乌尔都语)
Cp921 IBM 拉脱维亚、立陶宛(AIX, DOS)
Cp922 IBM 爱沙尼亚 (AIX, DOS)
Cp930 与 4370 UDC 混合的日语,5026 的超集
Cp933 与 1880 UDC 混合的韩文,5029 的超集
Cp935 与 1880 UDC 混合的简体中文主机,5031 的超集
Cp937 与 6204 UDC 混合的繁体中文,5033 的超集
Cp939 与 4370 UDC 混合的日语拉丁字母,5035 的超集
Cp942 日语 (OS/2),932 的超集
Cp948 OS/2 中文(台湾),938 超集
Cp949 PC 韩文
Cp950 PC 中文(香港、台湾)
Cp964 AIX 中文(台湾)
Cp970 AIX 韩文
EUCJIS JIS, EUC 编码、日语
GB2312 GB2312, EUC 编码、简体中文
GBK GBK, 简体中文
ISO2022CN ISO 2022 CN, 中文
ISO2022CN_CNS ISO-2022-CN 形式的 CNS 11643,繁体中文
ISO2022CN_GB ISO-2022-CN 形式的 GB 2312,简体中文
ISO2022KR ISO 2022 KR, 韩文
JIS JIS, 日语
JIS0208 JIS 0208, 日语
KOI8_R KOI8-R, 俄语
KSC5601 KS C 5601, 韩文
MS874 Windows 泰国语
MacArabic Macintosh 阿拉伯语
MacCentralEurope Macintosh Latin-2
MacCroatian Macintosh 克罗地亚语
MacCyrillic Macintosh 斯拉夫语
MacDingbat Macintosh Dingbat
MacGreek Macintosh 希腊语
MacHebrew Macintosh 希伯莱语
MacIceland Macintosh 冰岛语
MacRoman Macintosh 罗马语
MacRomania Macintosh 罗马尼亚语
MacSymbol Macintosh 符号
MacThai Macintosh 泰国语
MacTurkish Macintosh 土耳其语
MacUkraine Macintosh 乌克兰语
SJIS Shift-JIS, 日语
UTF8 UTF-8
Ⅷ 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的,不敢保证其它版本包括以后版本的玩法都一样。