资讯专栏INFORMATION COLUMN

反编译apk的步骤

VEIGHTZ / 322人阅读

摘要:先要获取目标应用安装包文件在中找通过从目录找搞出来在网上搜,看看有没有的下载反编译工具与准备需要里面的东西,直接出来需要这里面有个附件里面有这个这个在里有,步骤先解压安装包文件,一般会得到或文件。指的是步骤产出的文件夹。

1.先要获取目标应用安装包(.apk)文件

1.1.在rom中找

1.2.通过adb pull/system/app/目录找搞出来

1.3.在网上搜,看看有没有xxx.apk的下载

2.反编译apk工具与准备

2.1.需要/system/framework/里面的东西,直接adb pull出来

2.2.需要7za (这里面有个oat2dex附件里面有这个 http://forum.xda-developers.c... )

2.3.apktool(HP: https://ibotpeaches.github.io... )

2.4.aapt(这个在android sdk里有)

2.5.baksmali,smali(HP: https://github.com/JesusFreke... )

2.6.jd-gui(HP: http://jd.benow.ca/)

3.步骤

3.1.先解压安装包apk文件,一般会得到.odex.odex.xz文件。
面对.odex.xz文件的时候,需要用7za将它变成.odex文件。
具体命令:

7za x *.odex.xz

3.2.接下来使用aapt工具和apk文件得到targetSdkVersion,具体命令类似于下面:

aapt d badging xxxx.apk | grep version

记下这个sdkVersion,比如是23

3.3.接下来使用baksmali.odex文件变成一堆smali文件。具体命令类似于下面(各个版本不一样):

baksmali deodex xxxxx.odex -a 23 -d systemframework -o output

// 上面不行试试这个
baksmali -x arm	emp.odex -a 21 -o output -d systemframework

// 还是不行试试这个
baksmali xxx.odex -a 23 -x -c boot.oat -d systemframeworkarm -o output

总之这个工具用起来还是有点不顺畅,有点坑,需要自己多尝试,多研究。
-a 后面跟api版本,就是3.2步骤得到的那个数字,-d后面跟adb pull出来的/system/framework这个目录

然后,如果你遇到Unsupported oat version: 45这种错误或者类似的错误,这个没辙。具体看这里:https://github.com/JesusFreke...

如果遇到类似于找不到什么class啊,core-junit.jar什么的,还可以抢救一下,尝试上面第三行的那个命令。

如果遇到

Error occurred while loading class path files. Aborting.
java.util.MissingFormatArgumentException: Format specifier "%s"

这个错误的话,你应该用的是上面第一行那个命令,考虑重新下载个低一点版本的smali,然后再试试第二行,第三行的指令。

如果啥都没显示,那应该是成功了,你会得到一个文件夹,里面有一些类似于java包的组织形式的文件夹和文件,文件是smali后缀。

3.4.上一步成功了之后,你需要用smali工具将上一步的输出转换成一个dex文件。

smali -o classes.dex output

output指的是3.3步骤产出的output文件夹。这个步骤我基本没有失败过,成功后,你得到了一个dex文件。

3.5.最后使用d2j-dex2jar工具就可以将dex转换成jar文件了。

3.6.最后使用jd-gui.exe工具打开jar文件,就可以查看到代码了。

4.其他

4.1.如果遇到rom里面是system.new.data这种形式的文件,要用SystemExtract这个工具将它解压出来。

SystemExtract下载:http://forum.xda-developers.c...
参考链接:http://forum.xda-developers.c...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/13329.html

相关文章

  • 如何阻止APK编译查看源代码? 爱加密保护开发者核心利益!!

    摘要:爱加密独创技术防止反编译,保护开发者创意现在大多开发者已经意识到了加密保护的重要性,爱加密正是顺应行业的发展,对进行加密保护,防止反编译,保护开发者的创意不再被剽窃的第三方加密服务平台。 小编曾看到一篇文章,说是一个在校大学生开发一个App并上传应用市场,不久,市场即出现相同的App,下载量还很可观,这个App是反编译了他的应用包。因为他当时没有资金和团队,无从申诉,反被同学认为是剽窃...

    phoenixsky 评论0 收藏0
  • apk破解与编译

    摘要:是反编译的神器,用来提取内的资源。工具使用主要是将的反编译成源码,方便阅读。首先将文件改名为文件然后解压包,可以得到一个文件,这个就是文件编译再通过工具打包而成的二进制文件。是的反编译器把二进制的可执行文件翻译成代码。 处于学习和研究的目的,还有为了反破解和反逆向的目的,有时候需要破解apk,关于apk包的破解,需要使用三个反编译工具: 提取资源:apktool, http://ib...

    opengps 评论0 收藏0
  • apk编译工具Jadx使用

    摘要:在上瞎逛的时候找见了一个新的反编译工具,使用简单,命令行直接搞定,感觉比之前用的方式要方便很多。特此记录使用过程。等上面的命令执行完之后,便可以进行反编译操作了。反编译出的文件存放在目录中。等左下角的走完之后,表示反编译已经完成了。 在github上瞎逛的时候找见了一个新的反编译工具Jadx,使用简单,命令行直接搞定,感觉比之前用的apktool+dex2jar+jd-gui方式要方便...

    JessYanCoding 评论0 收藏0
  • Android防护扫盲篇

    摘要:为了防止这种现象,我们可以对字节码进行混淆。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。 一、已知防护策略 1.不可或缺的混淆 Java 是一种跨平台、解释型语言,Java 源代码编译成的class文件中有大量包含语义的变量名、方法名的信息,很容易被反编译为Java 源代码。为了防止这种现象,我们可以对Java字节码进行混淆。混淆不仅能将代码中的类...

    CastlePeaK 评论0 收藏0
  • APK自我保护 - 字符串处理

    摘要:如果这些字符串采用硬编码方式,很容易通过静态分析获取。编码混淆编码混淆是在硬编码的时候将字符串先转换成进制的数组或者编码,在使用的时候在转回字符串。加密处理加密处理是先将字符串在本地进行加密处理,后将密文硬编码进去,运行时载进行解密。 字符串处理可以增加静态分析的难度,但是这种增加是有限的。只要破解者有足够的耐心同样可以破解 在开发过程中字符串不可避免,但是这些字符串也可能是破解的关键...

    trigkit4 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<