前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

反编译Android apk文件 | OutOfMemory OutOfMemoryDo one thing, and do it well. Menu Skip to contentHomeAbout 反编译Android apk文件 3 Replies classes.dex是Java源码编译后生成的字节码文件。由于Android使用的dalvik虚拟机与标准的Java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前有下面这几种反编译的工具: dexdump Dedexer AXMLPrinter2 apktool dex2jar + JD-GUI smaliAndroid开发包提供了一个dex的反编译工具dexdump。用法为首先启动Android模拟器,把要反编译的dex文件用adb push上传到模拟器中,然后通过adb shell登录,找到该dex文件,执行dexdump xxx.dex。总的来说dexdump功能比较弱,且用起来麻烦,另外反编译的结果可读性也很差。另一个dex文件的反编译工具是Dedexer,且反编译的效果比较好。它可以读取dex格式的文件,生成一种类似于汇编语言的输出。这种输出与Jasmin的输出相似,但包含的是Dalvik的字节码。Dedexer与dexdump相比至少有3个优点: 1. 不需要在Android模拟器中运行; 2. 反编译后的文件目录结构和源代码结构相近,每个class文件对应一个ddx文件。不像dexdump那样把所有的结果都放在一起; 3. 可以作为反编译引擎。目前好多强大的反编译工具都是以Jasmin作为反编译引擎的。 可以下载已经编译好的jar文件ddx1.11.jar,对应Java 1.6版本。用法: java -jar ddx1.11.jar -o -D -r -d src classes.dex //在src目录下生成ddx文件 在apk中的资源是经过压缩的,用文本工具看都是乱码,可以通过AXMLPrinter2将其转换为可读的xml文件。具体命令为: java -jar AXMLPrinter2.jar xxx.xml output.xml 目前最好的dex反编译工具是apktool。可以帮助我们把apk文件反编译,输出smali格式的代码和图片和资源等文件,还可以在修改后重新打包。将下载下来的apktool和apktool-install-windows解压到同一目录下,有三个文件:aapt.exe,apktool.bat和apktool.jar。使用方法: apktool d xxx.apk zzz //反编译xxx.apk到zzz目录,得到apk的图片和配置资源文件等 apktool b zzz //从文件夹zzz重建apk,输出到zzz/dist/out.apk dex2jar是一个将Dalvik虚拟机的dex文件转换回标准Java的class文件的工具: dex2jar xxx.apk //生成jar文件,可以用JD GUI工具直接打开查看 smali可以反编译dex文件,也可以把你修改过的代码重新编译成dex: java -jar baksmali.jar classes.dex -o classes java -jar smali.jar classes -o classes.dex This entry was posted in Uncategorized and tagged Android, apktool, AXMLPrinter2, Dedexer, dex2jar, dexdump, JD-GUI, smali on Jul 1, 2011 by dohkoos. Post navigation &larr; 将Nokia 6670的短信导入Hero 导入UC Browser书签到Firefox中 &rarr; 3 thoughts on &ldquo;反编译Android apk文件&rdquo; pop1030123Sep 7, 2011 at 05:34 兄弟这方面研究的不错,学习了。 Reply &darr; pop1030123Sep 19, 2011 at 00:25 请教个问题:dex2jar这个工具反编译后,会生成使用jd-gui阅读的jar包,那么说这种情况反编译后的代码应该是最容易理解最容易阅读的了,为什么感觉apktool还用得多点呢? Reply &darr; dohkoos Post authorSep 20, 2011 at 20:32 通常我使用apktool来得到资源文件,用dex2jar来查看其它应用的某些功能是怎么实现的。大部分情况下我只要学习布局就可以了,我想这大概就是apktoo用的多点的原因吧。 Reply &darr; Leave a Reply Cancel replyYour email address will not be published. Required fields are marked *Name * Email * Website CAPTCHA Code*CommentYou may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> Loading Translator Views创建Android自定义键盘 - 45,595 views图解CSS盒模型 - 23,339 views希望能在Java 7中看到的features - 21,677 views写了个批量修改繁体文件名为简体的Ruby脚本 - 18,649 viewsC#开发BHO插件UrlTrack - 11,470 views在Eclipse下调试Servlet时出现Source not found for&hellip;&hellip;后 - 8,154 viewsStruts 2 + Spring 3 + Hibernate 4登录实例 - 7,938 views[SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property&hellip; - 6,773 views如何调试Win32程序 - 5,601 views修改Ubuntu 8.10的sources.list - 5,405 views Recent Posts 使用HTML5创建小说网站 敏捷开发走下坡路了吗? 部署Qianbao到Heroku时遇到的一些问题 识别图书ISBN实现藏书管理 绘制圆角的正确方法 Recent Comments伯乐在线 on 绘制圆角的正确方法dohkoos on 写了个批量修改繁体文件名为简体的Ruby脚本tracyjiezhang on 写了个批量修改繁体文件名为简体的Ruby脚本中兴F420 &laquo; tao of yue on 中兴ZXA10-F460 v3.0获取超级管理员密码dohkoos on C#开发BHO插件UrlTrackTagsAlgorithm Android Ant ANTLR C# CheckStyle Crack CSS Database Eclipse Fleximage Git Heroku i18n Java JavaScript JBookShelf Junit Linux ListView Lunarpages Maven MySQL NetAdvantage OSDev Paperclip PB2CS PowerBuilder PowerScript Qianbao Radiant Rails restful_authentication Ruby Servlet SiteMesh Spring Struts Sybase Ubuntu VS2005 VS2008 WebWork Windows Server 2008 wxWidgets BlogrollDBA Notes云风的 BLOG写程序的70后阮一峰的网络日志 LinksC/C++ ReferenceData Structure VisualizationIBM developerWorks 中国MIT OpenCourseWareProgrammableWebRFC-Editor WebpageStack OverflowW3Schools Online Web TutorialsWikipedia掷出窗外 My ProjectsOpen Source我的淘宝店铺 MetaLog inEntries RSSComments RSSWordPress.org This work is licensed under a Creative Commons Attribution-NoDerivs 3.0 Unported License. Proudly powered by WordPress