admin管理员组文章数量:1533915
2024年1月10日发(作者:)
2.手把手教你配置java环境变量
难度系数:1
失败概率:3
危险系数:0
(满分为5)
本帖隐藏的内容
这一步比较简单,基本度娘可以帮你解决一切,但是要求细心。新手配置的时候很可能会失败的,所以失败概率为3。
至于java环境配置的意义,我想也不用多说了。安卓是基于java语言的,因此apk需要在java环境里头进行编译跟反编译。所以,配置好java环境变量是所有工作的第一步。
配置步骤(win7,32位为例):
第一步,下载jdk1.7 ,我网盘里头提供下载。
第二步,然后安装,建议默认目录,当然也可以自己选择,安装后要记住安装的路径。
第三步,安装成功之后可以进行配置,右键我的计算机-属性-高级系统选项,如图:
第四步,点开环境变量选项卡
新建变量
1.变量名:JAVA_HOME 值:C:Program FilesJavajdk1.7.0 (以你安装目录为准,确认里面有bin和lib,jre等多个文件夹)
2.变量名:CLASSPATH 值:.;%JAVA_HOME%lib;%JAVA_HOME%;(千万别漏了开
头的小点)
如果变量目录下没有PATH这个变量,还需要新建一个
3.变量名:PATH 值:%JAVA_HOME%bin;%JAVA_HOME%jrebin;
如果已经存在PATH,就在值前面加上面的一段路径就可以了,末尾有;隔开。
用表格表示可能会比较清晰...
变量名称 值
C:Program FilesJavajdk1.7.0(即安装目JAVA_HOME
录)
CLASSPATH .;%JAVA_HOME%lib;%JAVA_HOME%;
PATH
JAVA环境变量到此配置完成,结果只有两个,成功,与失败。
下面是检验方法:打开开始菜单,输入cmd,输入javac
如果出现以下中文提示,恭喜你,你成功了。如果你失败了,从新检查环境变量的值。很容易错的。
%JAVA_HOME%bin;%JAVA_HOME%jrebin;
第一章到此完结。
第二章:从解包说起
本帖隐藏的内容
一、解包sbf详解
大家一直用sbf刷底包,相信对sbf也不会太陌生。其实sbf就是一个经过签名的压缩文件而已。让我们把它拆开看看。
a.下载我提供的解包工具并解压,得到三个文件,其中MotoAndroidDepacker就是专门解包sbf的文件。
打开看到全英的界面:
点击open From File 打开固件,为方便起见,建议把sbf放在同一目录下。并改一个比较短的名字,否则容易出错。
打开固件后按split to folder自动解压,直到提示splited解包成功。得到如下文件夹。
下面是两个重要文件的说明。其中CG35是内核文件,CG39是系统文件。
打开explore2fs,选择CG39文件打开,又看到我们熟悉的系统文件夹的结构。
这一步可以直接提取你需要的文件,按文件夹或者文件右键就可以解压了。
b.提取内核
进入刚才解包所得的文件夹,把以CG开头的文件删除,只留下CG35即内核文件。
再次打开MotoAndroidDepacker,按Open Files 选取所得文件夹。
点击compile file 即打包内核。
最后得到一个的文件,可以直接用RSD刷入。这就是所谓的替换内核了。
本小节结束。
二、DIY自己的ROM(以修改V大的ROM为例)
本帖隐藏的内容
众多rom中,V大的rom最为简单,结构简明易懂,下面以新中欧179纯净版1.0为例进行讲解。
打开zip文件看到结构如下:
a.打开脚本文件夹看到update-script文件
并把update-script用notepad++打开
代码如下:
1. show_progress 0.1 0
2. copy_dir PACKAGE:system SYSTEM:
3. run_program PACKAGE:
4. show_progress 0.2 0
5.
6.
7.
复制代码
如果你懂一点点英文的,其实很简单。
第二行开始,每一行的意思是
2.复制system文件夹并合并
3.运行外置脚本
两个意思...
这个copy_dir PACKAGE:system SYSTEM: 是覆盖的意思,在我们打补丁的时候经常用到。
同样办法,拆开我出的美化包,提取升级脚本,得到代码如下:
1. show_progress 0.1 0
2. delete_recursive SYSTEM:app
3. delete_recursive SYSTEM:framework
4. copy_dir PACKAGE:system SYSTEM:
5. show_progress 0.2 0
6.
7.
8.
复制代码
其中多了一句代码delete_recursive SYSTEM:app 这就是删除的意思了。
一般rom的制作,只需要用到这两句命令,覆盖跟删除。不过删除要用得谨慎。因为这是一个文件夹删除的。
b.懂了升级脚本之后,再看外置脚本,
1. #!/sbin/sh
2.
3.
4. rm /system/app/
5. rm /system/app/
6. rm
/system/app/esmusica_2_0_0012_embed_Signed_2010-04-13_
7. rm /system/app/
8. rm /system/app/
9. rm /system/app/GOTV_
10. rm /system/app/
11. rm
/system/app/hiphopofficial_2_0_0012_embed_Signed_2010-04-13_
12. rm /system/app/
13. rm /system/app/
14. rm /system/app/Quickoffice_BasicViewer_
15. rm
/system/app/revolver_2_0_0012_embed_Signed_2010-04-13_
16. rm /system/app/
17. rm /system/app/
18. rm
/system/app/truecountry_2_0_0012_embed_Signed_2010-04-13_
19. rm /system/app/
20. rm /system/app/
21. rm /system/lib/
22.
复制代码
显然,这是一个精简的脚本,rm 就是删除的意思...大家可以参考这个脚本,制作出自己需要的精简脚本...
最新发现,sh脚本是支持支持通配符*的!!!,大家可以试一试...精简需谨慎!
c.最后再看系统文件夹~
如同上一节所讲的system结构一模一样,不再累述,同样可以提取跟精简app文件夹已达到精简的目的...还可以把apk复制到app这个文件夹,达到绑定应用程序的目的...
学会以上,你已经是一个Rom的修改者了!!
与edify
本帖隐藏的内容
上一节说到,V大的包包结构,是rom中最简单的,为amend脚本。然而最近新出的recovery都只支持edify脚本,而CM7以及O大的包包都是edify脚本。有什么办法让所有recovery支持你的rom呢?
这一节将会向你讲述amend与edify异同以及一键转化的方法。
首先是学会鉴别两种脚本,如果你打开脚本文件夹发现update-binary文件,证明这个脚本是edify,否则为amend。
学会简单判别之后,看上一节所说的amend脚本
1. show_progress 0.1 0
2. delete_recursive SYSTEM:app
3. delete_recursive SYSTEM:framework
4. copy_dir PACKAGE:system SYSTEM:
5. show_progress 0.2 0
复制代码
只有几行,把它转化为edify之后
1. ui_print("Script generated by amend2edify v1.0.1.0.");
2. ui_print("***********************************************");
3. ui_print("");
4. ui_print("Mounting ");
5. run_program("/sbin/mount", "/dev/block/stl9", "/system");
6. run_program("/sbin/mount", "/dev/block/stl10", "/data");
7. run_program("/sbin/mount", "/dev/block/stl11", "/cache");
8. show_progress(0.1, 0);
9. delete_recursive("/system/app");
10. delete_recursive("/system/framework");
11. package_extract_dir("system", "/system");
12. show_progress(0.2, 0);
13. ui_print("Unmounting ");
14. run_program("/sbin/umount", "/system");
15. run_program("/sbin/umount", "/data");
16. run_program("/sbin/umount", "/cache");
17. ui_print("Update Complete.");
复制代码
其中ui_print部分只是控制屏幕输出,可以忽略,甚至可以删除。
就这段脚本而言,其实就分别添加了加载,和卸载分区两段命令。
显然edify结构要比amend复杂,但是子要你细心比对,就能把他们联系上。不过这一贴的重点,不是讲述他们的异同,教大家转化脚本。
这里要感谢XDA的大神做出了一键转化的工具,我搬运到此并以此牟利。。。嘿嘿。。。3个金币。。。让所有recovery支持V大的包包。亲测可行。但并不对此造成的后果负责。
amend2edify_(877.06 KB, 下载次数: 1261, 售价: 3 金币)
这个软件的使用方法非常简单。
打开文件之后可以直接转化,按save即将完成自动转化,然后你可以用最新的recovery升级V大的包包了~
注意!!!
如果点上签名选项可以直接制作升级包。
假设转换之后的包包不能修改了...提示压缩包损坏
的话...先把所有文件解压出来,重新打包成zip文件,然后用本软件的签名功能签名...之后就随意修改了...(签名后脚本文件处会多出个updater-script文件)
谢谢大家!撒花~!
第3章 deodex
第1节 deodex的一般步骤
本帖隐藏的内容
这一章内容还是比较简单,但是操作需要谨慎。如果手贱,变砖是很容易的。例子就不举了,怕真有人手贱。
本章内容大多数取自eric8810大大的deodex教程,写在这里只是想形成一个完整的知识体系。另外有若干个小提醒小经验是本人总结的。注意这些细节会让你事半功倍!
进入正题,deodex大家应该都不陌生了,一部分apk是odex样式的,odex是整个apk的核心部分,负责功能实现,deodex就是把odex文件以的形式和apk整合成一个文件。以方便编译与反编译。jar的deodex原理也一样。
下面章节教的所有美化知识,都要在deodex的条件下完成,因此,这一步是所有美化的初步。
如何deodex,这本来应该是个繁琐的工作,但只要工具要到位了,就变得很简单。下载第一章提供的xultimate,并解压到一个相对简单的目录里面,方便使用。以下是deodex的一般步骤:
手机,打开usb调试并连接
2.打开工具目录中的得到如下界面,升级选no。
3.进入到程序主界面
解释一下上面各个选项:
1.把手机中的system/app目录复制到该目录下并保存为origi_app 2.复制framework目录并保存为origi_frame目录 origi_app 目录中的所有文件并保存为done_app
origi_frame 目录中的所有文件并保存为done_frame 5.1-4依次完成1次
一般而言,选5没问题,遇到特殊情况下面会讲述如何处理。
4.点5后,或者点deodex的选项后会出现如下界面,这期间你基本不用想做什么了,乖乖等吧。logo自动弹出
5.如果平安无事,就会出现成功的提示
6.但是也会出现失败的情况,如图
遇到这种情况,把其他deodex完回来单独deodex,如果还是不行,唯有从其他包包中提取该文件。
7.假设如果已经完全deodex无意外,你会得到以done开头的两个文件夹,把它们复制到sd卡根目录处。分别是done_app与done_frame。
8.然后打开cmd输入如下命令:
如图,根据注解进入adb shell 之后依次输入以下命令:
1. su
2.
3.
4.
5.
stop
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
cp /sdcard/done_app/* /system/app/
cp /sdcard/done_frame/* /system/framework/
6. rm /system/app/*.odex
7. rm /system/framework/*.odex
8. mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
9. reboot
复制代码
第一条输入后,手机端会提示root权限获取,点允许才可以继续。stop是冻结屏幕,之后就不能对屏幕进行任何操作了。
倒数第二步经常会提示没有回响,直接跳到reboot,没有任何影响。
reboot之后你的手机已经成功deodex了,第一次启动需要很长很长很长的时间。请耐心等候。
如果上面那步出现了错误,会造成无限重启。如果出现这种情况,建议重刷底包了。可以用bootmenu解决,但是难度貌似比较大。不适合菜鸟折腾。
重要提示:
A.一定要确保你deodex之后的文件是齐全的,不然很可能卡M。具体只要中途不提示错误,就不会有问题了。一定不要忘了把两个done文件夹(done_app与done_frame)复制到sd卡根目录
B.遇到错误时可以把错误的文件单独保存好,另外把已经deodex的apk/jar文件也存到另外的地方,因为再次deodex会清空done文件夹。
C.再次deodex的时候可以把已经deodex的文件删除,这样可以加快速度,当然,上述B步骤要做好。
D.常见会deodex失败的文件有MyPhonebook和SyncMLTmo,当然不排除有特例。比方说,刚才deodex的UK177的gallery3D就deodex失败了。这时候需要到其他相近的包包里面提取,再deodex。祝你好运!
第一小节更新完毕。
第2节 免刷底包deodex技巧
本帖隐藏的内容
这一小节几行字就能完事儿了,按照以上deodex的步骤,你需要先刷入底包,再刷入汉化包,然后提取文件才能deodex。最后还要覆盖。
这样会耗费你很多的时间。通过第二章的学习,你懂得了zip升级包的升级原理,就是覆盖。你同时懂的了解包sbf,那么,你完全可以不刷底包,直接从底包里面提取app和framework目录,然后用zip里面相应的文件夹对其进行覆盖。
然后连接手机,把上述两个已经覆盖好的文件夹放到xultimate的目录下,并命名为origi_app,和origi_frame,依次选3,和4两个选项,分别进行deodex。
这步完成之后,你甚至可以把你deodex的文件覆盖到sbf解包而来的目录下,手工删除odex文件,然后复制到zip文件夹进行升级。联系第二章的知识,你可以不用刷入底包,也可以制作属于自己的deodex包包了。甚至可以对其进行美化,修改与精简。
第三章更新完毕!
第四章 反编译教程
第1节 反编译的目的
本帖隐藏的内容
为什么要反编译apk呢?我们从上面说了deodex的概念,其实apk(已经deodex的)是一个压缩包。里面包含若干个文件,其中有些文件可以直接解压得到,然而有些重要的文件却不能解压得到。至少不能再windows用rar解压得到。
为了得到,并修改这些文件,我们需要反编译。
先解开一个apk来看,我把北欧1.26fix的作为示例,并命名为。
首先把apk文件重命名为zip文件。用rar打开看其结构如下
然后把它解压你会发现打开res文件夹结构如下:
纠错:这个不是签名文件,这个文件定义了一个程序的大部分信息,比如程序的包名:,这个是QQ的包名,还有其他一些参数,activity,软件的图标等等,而并不是签名文件
不要以为很多,当我们反编译成功之后,res文件夹的结构如下:
很多吧。。。= =但是resource文件在反编译之后已经不见了,分散到各个文件夹中去。其中,xml文件反编译前后的表示方式也会不一样。
反编译后xml文件可以直接被我们读懂还有修改。
举个例子。下面是反编译后的文件
1.
2. 3. xmlns:android="/apk/res/android"> 4. android:maxLevel="2" /> 5. android:maxLevel="7" /> 6. android:maxLevel="15" /> 7. android:maxLevel="25" /> 8. android:maxLevel="35" /> 9. android:maxLevel="45" /> 10. android:maxLevel="55" /> 11. android:maxLevel="65" /> 12. android:maxLevel="75" /> 13. android:maxLevel="85" /> 14. android:maxLevel="95" /> 15. android:maxLevel="100" /> 16.
17.
复制代码
而直接解压也可以得到这个文件,但是打开是怎么样的呢?在这里就不列出来了,用三个字概括就是看不懂。有兴趣的同学可以自行解开文件看看没有反编译的xml文件长啥样的。
第2节 apk反编译的一般步骤
本帖隐藏的内容
上一节讲了apk反编译的目的以及原理,这一节纯粹是操作教程,无原理讲述。
需要工具apktool,从第一章下载,并且解压到相对简单的目录下面方便使用。
只需要记住两条命令:apktool d (反编译) 还有apktool b sample (重新编译就可以了)
当然,sample要换成你自己所反编译与 编译的文件及文件夹名称。
操作步骤图示:
1.把你所需要反编译的apk放到apktool目录下。
2.打开cmd,并设置apktool的路径,输入apktool d
之后会生成一个与你的apk同名的文件夹,这时表示你已经反编译成功了。当你修改完你所需要的数值之后。
3.在cmd中输入apktool b sample进行重新编译
这时候在sample文件夹里头,会出现一个build文件夹,里面就有需要的,已经经过编译的文件。
最后就把已经编译好的resource,和xml文件覆盖到原apk文件里头。具体方法就是把apk改名为zip文件,然后复制黏贴。
注意:无论修改什么都得替换...如果是修改xml文件,编译后仍有xml文件的话,即还需替换xml文件!
至于各文件的具体的作用与修改,会在下一章讲述。
补充内容:
上述方法适用于大部分的apk~但是当编译与反编译系统apk的时候会出错...这时候需要配置框架文件...
方法如下...
把framework里头的 复制到apk目录下...
在cmd依次输入命令
1. apktool if
2. apktool if
3. apktool if
复制代码
即可按照正常步骤进行编译与反编译
本小节结束。
第3节 jar文件的反编译与编译
本帖隐藏的内容
本章依然是操作教程,没有原理讲述,而且我感觉截图都不必要了,需要的工具是class。
下面以为例。
1.反编译。
把已经deodex的文件重命名为文件,把其解压,复制文件到class目录里面。用鼠标左键拖动到文件的上方放手。即可以完成反编译。
反编译完成之后会得到一个相应的文件夹classes,修改好你需要的值之后。可以进行重新编译。
2.重新编译
拖动classes文件夹到上方,即完成重新编译。重新编译以后在classes文件夹里面会生成一个新的文件,把其覆盖到原来的文件即完成重新编译。
最后把zip文件命名为文件即可。
版权声明:本文标题:安卓反编译教程 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1704899181a113360.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论