﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-活到老，学到老！</title><link>http://www.blogjava.net/hackzhang/</link><description>人不是为失败而生，一个人可以被消灭，但不可以被打败！</description><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 21:33:10 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 21:33:10 GMT</pubDate><ttl>60</ttl><item><title>Android 反编译apk 到java源码的方法 </title><link>http://www.blogjava.net/hackzhang/archive/2012/03/23/372532.html</link><dc:creator>精诚所至，金石为开</dc:creator><author>精诚所至，金石为开</author><pubDate>Fri, 23 Mar 2012 04:08:00 GMT</pubDate><guid>http://www.blogjava.net/hackzhang/archive/2012/03/23/372532.html</guid><wfw:comment>http://www.blogjava.net/hackzhang/comments/372532.html</wfw:comment><comments>http://www.blogjava.net/hackzhang/archive/2012/03/23/372532.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hackzhang/comments/commentRss/372532.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hackzhang/services/trackbacks/372532.html</trackback:ping><description><![CDATA[<div><div id="article_content">     <p><span style="font-size: 24px; word-wrap: break-word; line-height: normal;"><strong>Apk文件破解可见源码</strong> </span> <br /> <br /> 　　<strong><span style="font-size: 18px;">１．&nbsp;获取apk的</span> <span style="word-wrap: break-word; line-height: normal; cursor: pointer; border-bottom: 1px solid #ff0000; white-space: nowrap; font-size: 18px;">资&#8205;源</span> <span style="font-size: 18px;">图片</span> </strong> <br /> <br /> <span style="font-size: 18px;">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;直接用 WinRAR打开，res/drawable直接拖拽出来即可。</span> <br /> <br /> <span style="font-size: 18px;">　 <strong>２．获取xml文件信息</strong> </span> <br /> <br /> <span style="font-size: 18px;">&nbsp; &nbsp;  虽然能用WinRAR看到里面的xml文件，但是xml是经过优化的，无法直接查看，需要使用apktool</span> <span style="word-wrap: break-word; line-height: normal; cursor: pointer; border-bottom: 1px solid #ff0000; white-space: nowrap; font-size: 18px;">工具</span> <span style="font-size: 18px;">，</span> <span style="word-wrap: break-word; line-height: normal; cursor: pointer; border-bottom: 1px solid #ff0000; white-space: nowrap; font-size: 18px;">下载</span> <span style="font-size: 18px;">地址：</span> <a style="word-wrap: break-word; text-decoration: none; color: #0099cc; line-height: normal;" href="https://code.google.com/p/android-apktool/" target="_blank"><span style="font-size: 18px;">https://code.google.com/p/android-apktool/</span> </a> <span style="font-size: 18px;">。</span> <br /> <span style="font-size: 18px;">下载 apktool-1.3.1.tar.bz2和apktool-install-windows-2.2_r01-2.tar.bz2解压到同一个目录， 然后把待破解的apk文件拷贝到同一目录，DOS在cmd下进入apktool所在路径，然后输入apktool d "XXX1"  "XXX2",XXX1指的是你要反编译的apk文件，XXX2指的是反编译后文件存放的路径，</span> </p> <p><span style="font-size: 18px;">如：apktool d "C:/taobao.apk" "C:/taobao"</span> </p> <p><br /> <span style="font-size: 18px;">　<strong> 3 ．反</strong> </span> <strong><span style="word-wrap: break-word; line-height: normal; cursor: pointer; border-bottom: 1px solid #ff0000; white-space: nowrap; font-size: 18px;">编译</span> <span style="font-size: 18px;">dex获取</span> <span style="word-wrap: break-word; line-height: normal; cursor: pointer; border-bottom: 1px solid #ff0000; white-space: nowrap; font-size: 18px;">Java</span> <span style="word-wrap: break-word; line-height: normal; cursor: pointer; border-bottom: 1px solid #ff0000; white-space: nowrap; font-size: 18px;">源代码</span> </strong> <br /> <span style="font-size: 18px;">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Apktool工具只能反编译成smali的中间代码文件，这里需要借助另外一个</span> <span style="word-wrap: break-word; line-height: normal; cursor: pointer; border-bottom: 1px solid #ff0000; white-space: nowrap; font-size: 18px;">开源</span> <span style="font-size: 18px;">工具：dex2jar，下载地址：</span> <a style="word-wrap: break-word; text-decoration: none; color: #0099cc; line-height: normal;" href="http://code.google.com/p/dex2jar/" target="_blank"><span style="font-size: 18px;">http://code.google.com/p/dex2jar/</span> </a> <span style="font-size: 18px;">。这个工具不能直接翻译成java文件，但是可以把dex文件转换成jar文件，然后可以通过 jad工具把jar文件反编译成Java源文件，jd-gui下载地址：</span> <a style="word-wrap: break-word; text-decoration: none; color: #0099cc; line-height: normal;" href="http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip" target="_blank"><span style="font-size: 18px;">http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip</span> </a> <span style="font-size: 18px;">&nbsp;。</span> <br /> 　　详细步骤：</p> <p><span style="font-size: 18px;">　　解压apk文件，直接拖拽(rar解压软件)，找到classes.dex文件</span> </p> <p><span style="font-size: 18px;">　　在cmd下进入dex2jar.bat所在路径，</span> </p> <p><span style="font-size: 18px;">　　然后输入&#8220;dex2jar.bat  XXX&#8221;，XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称(classes上面解压得到)，</span> </p> <p><span style="font-size: 18px;">　　如：dex2jar.bat D:/classes.dex；</span> </p> <p><span style="font-size: 18px;">　　这样会生成一个</span> classes.dex.dex2jar.jar<span style="font-size: 18px;">文件，然后用jd-gui工具将jar文件反编译成java文件，选择保 存所有，它会生成一个压缩文件，所有的源码都在这个压缩文件中，解压了就可以看到详细的代码了。很强大吧。</span> </p> <p><span style="font-size: 18px;">from：http://hi.baidu.com/eblson/blog/item/312de07b5e594dff2f73b353.html</span> </p> <p>-----------------------------------------</p> <p align="left"><strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">一、获得APK源代码：</span> </span> </span> </strong> </p> <p align="left"><strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">工具下载</span> </span> </span> </strong> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">：需用到</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">dex2ja</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">r</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">和</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">JD-GUI</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">这</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">2</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">个工具</span> </strong> </span> </span> </p> <p align="left"><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">dex2jar</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">下载地址</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">：</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><a href="http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip" target="_blank"><span style="font-size: medium;"><strong><span style="color: #000000;">http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip</span> </strong> </span> </a> <span style="font-size: medium;"><strong><span style="color: #000000;"><br /> </span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">JD-GUI</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">下载地址：</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;"><br /> &nbsp;&nbsp;windows</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">版</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">JD-GUI</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">：</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><a href="http://laichao.googlecode.com/files/jdgui.zip" target="_blank"><span style="font-size: medium;"><strong><span style="color: #000000;">http://laichao.googlecode.com/files/jdgui.zip</span> </strong> </span> </a> <span style="font-size: medium;"><strong><span style="color: #000000;"><br /> </span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">&nbsp;&nbsp;Linux</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">版</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">JD-GUI</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">：</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><a href="http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz" target="_blank"><span style="font-size: medium;"><strong><span style="color: #000000;">http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz</span> </strong> </span> </a> </span> </p> <p align="left"><strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">步骤：</span> </span> </span> </strong> </p> <p align="left"><span style="color: #000000;"><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong>1.</strong> </span> </span> </span> <span style="color: #000000;"><span style="font-family: 宋体;"><span style="font-size: medium;"><strong>把</strong> </span> </span> </span> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">apk</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">文件改名为</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">.zip</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">，然后解压缩</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">,</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">得到其中的</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">classes.dex</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">文件，它就是</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">java</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">文件编译后再通过</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">dx</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">工具打包成的</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">,</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">所以现在我们就用上述提到的</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">2</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">个工具来逆方向导出</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">java</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">源文件</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;"><br /> <br /> </span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">2.</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">把</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">classes.dex</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">拷贝到</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">dex2jar.bat</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">所在目录。</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;"><br /> </span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">在命令行模式下定位到</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">dex2jar.bat</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">所在目录，运行</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">  dex2jar.batclasses.dex&nbsp;&nbsp;</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">，生成</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">classes.dex.dex2jar.jar  </span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;"><br /> <br /> </span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">3.</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">运行</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">JD-GUI</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">工具（它是绿色无须安装的）</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;"><br /> </span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">打开上面的</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">jar</span> </span> </span> </strong> <span style="font-family: 宋体;"><span style="color: #000000;"><span style="font-size: medium;"><strong>文件，即可看到源代码</strong> </span> </span> </span> </p> <p align="left"><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">---------------------------------------------------------------------------------</span> </strong> </span> </span> </p> <p align="left"><strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">二</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">.</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">反编译</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">apk</span> </span> </span> </strong> <strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">生成程序的源代码和图片、</span> </span> </span> </strong> <strong><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><span style="color: #000000;">XML</span> </span> </span> </strong> <span style="font-family: 宋体;"><span style="color: #000000;"><span style="font-size: medium;"><strong>配置、语言资源等文件。</strong> </span> </span> </span> </p> <p align="left"><strong><span style="font-family: 宋体;"><span style="font-size: medium;"><span style="color: #000000;">工具下载：</span> </span> </span> </strong> </p> <p align="left"><span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">在</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><a href="http://code.google.com/p/android-apktool/" target="_blank"><span style="font-size: medium;"><strong><span style="color: #000000;">http://code.google.com/p/android-apktool/</span> </strong> </span> </a> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">下</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong>  </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">载获得，</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">apktool-1.0.0.tar.bz2</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">和</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">apktool-install-windows-2.1_r01-1.zip</span> </strong> </span> </span> <span style="color: #000000;"><span style="font-family: 宋体;"><span style="font-size: medium;"><strong>两个包</strong> </span> </span> </span> <span style="color: #000000;"><span style="font-family: 宋体;"><span style="font-size: medium;"><strong>。</strong> </span> </span> </span> </p> <p>&nbsp;</p> <p align="left"><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">1.</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">解压缩下载的两个文件包，</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">apktool-install-windows-2.1_r01-1.zip</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">解压缩后得到的包里有</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">aapt.exe </span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">和</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">apktool.bat.</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">（注意要把</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">apktool-1.0.0.tar.bz2</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">解压后的一个</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">.jar </span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">文件</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">copy</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">进来）</span> </strong> </span> </span> </p> <p align="left"><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">2.</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">打开命令窗口</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong>  </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">（开始</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;"> &gt; </span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">运行，输入</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">cmd</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">，回车。）进入到</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">apktool.bat</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">的文件夹里。</span> </strong> </span> </span> </p> <p align="left"><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="color: #000000;"><span style="font-size: medium;"><strong>输入：</strong> </span> </span> </span> <span style="color: #000000;"><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong>&nbsp;&nbsp;apktool  dC:/***.apk&nbsp;&nbsp;C:/***</strong> </span> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">文件夹</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong>  </strong> </span> </span> </p> <p align="left"><span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">（命令行解释：</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">apktool d </span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">要反编译的文件</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong>  </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">输出文件夹）</span> </strong> </span> </span> </p> <p align="left"><span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">特别注意：你要反编译的文件一定要放在</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">C</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">盘的根目录里，</span> </strong> </span> </span> </p> <p><span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;">3.</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">打开</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong><span style="color: #000000;"> C:/***</span> </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">文件夹</span> </strong> </span> </span> <span style="font-family: Verdana,sans-serif;"><span style="font-size: medium;"><strong>  </strong> </span> </span> <span style="font-family: 宋体;"><span style="font-size: medium;"><strong><span style="color: #000000;">就可以得到我们学院的各种资源了。</span> </strong> </span> </span> </p> <p><span style="font-size: 18px;">from：http://www.apkbus.com/forum.php?mod=viewthread&amp;tid=118</span> </p> <p>-------------------------------------------</p> <h1><cite> </cite> 					 				</h1> <div>  <p>本文主要介绍如何逆向一个Android的APK应用程序，本文提供的方法仅供研究学习之用。</p> <p>本文需要用到的工具有</p> <p>jdk 这个用于搭建java运行环境</p> <p>AXMLPrinter2.jar &nbsp;这个用于逆向.xml文件</p> <p>baksmali.jar 这个用于逆向classex.dex文件</p> <p align="left">由于 Android 的 .apk 文件实际上就是一个 zip <span>文 件</span>   可以直接用 winrar <span>打 开</span> </p> <p align="left">如下图所示： </p> <p align="left"><span><img src="http://hi.csdn.net/attachment/201008/12/0_1281604332SBIs.gif" alt="" /> </span> </p> <p align="left">&nbsp;</p> <p align="left">用rar打开之后 我们可以看到该文件实际上是一个zip包  里面包含了META-INF文件夹，这个文件夹是用于保存签名文件，确保包的完整性的</p> <p align="left">res文件夹下就是apk所要用的资源文件，都是原封不动地保存，我们可以直接提 取出来，做汉化时就可以直接阅读string文件然后进行修改</p> <p align="left">&nbsp;</p> <p align="left">AndroidManifest.xml文件则是编译过后的一个配置文件，用于声 明程序中所包含的activity,service以及程序所具有的能力，也就是权限。resources.arsc则是编译过后的一个资源说明文件，而 我们要关注的主要是classes.dex  。我们编写的Android程序，在源程序里的所有.java的文件，最终都编译到这样1个.dex文件当中，在Android手机上的dalvik虚拟 机上执行。</p> <p align="left">&nbsp;</p> <p align="left">首先，我们介绍如何逆向一个.xml文件</p> <p align="left">&nbsp;</p> <p align="left">由于apk包里的xml文件我们直接用记事本打开还是有一些乱码</p> <p align="left">所以需要我们还原才能更好的看出</p> <p align="left">&nbsp;</p> <p align="left">这里需要用到AXMLPrinter2.jar 工具</p> <p align="left">&nbsp;</p> <p align="left">具体的则是打开命令行  我们以AndroidManifest.xml为例，输入如下命令</p> <p align="left">&nbsp;</p> <p align="left">java -jar AXMLPrinter2.jar  AndroidManifest.xml &gt; AndroidManifest.txt</p> <p align="left">&nbsp;</p> <p align="left">有兴趣的也可以写成一个.bat的脚本，方便执行</p> <p align="left">我们可以看看 执行的结果</p> <p align="left">&nbsp;</p> <p align="left">执行前的AndroidManifest.xml文件</p> <p align="left">&nbsp;</p> <p align="left"><img src="http://hi.csdn.net/attachment/201008/12/0_12816048300H9x.gif" alt="" /> </p> <p align="left">&nbsp;</p> <p align="left">执行之后 我们可以再看看</p> <div> <div> <div><a href="http://blog.csdn.net/Zengyangtech/archive/2010/08/12/5807517.aspx#">view  plain</a> <a href="http://blog.csdn.net/Zengyangtech/archive/2010/08/12/5807517.aspx#">copy  to clipboard</a> <a href="http://blog.csdn.net/Zengyangtech/archive/2010/08/12/5807517.aspx#">print</a> <a href="http://blog.csdn.net/Zengyangtech/archive/2010/08/12/5807517.aspx#">?</a> </div> </div> <ol><li><span>&lt;?xml&nbsp;version= "1.0" &nbsp;encoding= "utf-8" ?&gt;&nbsp;&nbsp; </span> </li><li>&lt;manifest&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;xmlns:android=<span>"http://schemas.android.com/apk/res/android" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;android:versionCode=<span>"322" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;android:versionName=<span>"ver&nbsp;3.2.2" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;package=<span>"com.eoeandroid.wallpapers.christmas" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;application&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:label=<span>"@7F040000" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:icon=<span>"@7F020004" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;activity&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:label=<span>"@7F040001" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>".Main" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;intent-filter&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.intent.action.MAIN" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/action&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;category&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.intent.category.LAUNCHER" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/category&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/intent-filter&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/activity&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;service&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>".service.SyncDeviceInfosService" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/service&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta-data&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"com.mobclix.APPLICATION_ID" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:value=<span>"30c0e2bb-a878-43cb-830b-a39fcae33b0c" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/meta-data&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/application&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-sdk&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:minSdkVersion=<span>"3" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-sdk&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.INTERNET" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.SET_WALLPAPER" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.WRITE_EXTERNAL_STORAGE" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.ACCESS_NETWORK_STATE" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.READ_PHONE_STATE" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.ACCESS_NETWORK_STATE" &nbsp;&nbsp; </span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp; </li><li>&lt;/manifest&gt;&nbsp;&nbsp; </li></ol> </div> <div bg_c-sharp"=""><div><div><strong>[c-sharp]</strong> <a href="http://blog.csdn.net/vincent_czz/article/details/6109899#" title="view plain">view plain</a><a href="http://blog.csdn.net/vincent_czz/article/details/6109899#" title="copy">copy</a></div></div><ol start="1"><li><span>&lt;?xml&nbsp;&nbsp;</span></li><li>&nbsp;version=<span>"1.0"&nbsp;encoding="utf-8"?&gt;&nbsp;&nbsp;</span></li><li>&lt;manifest&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;xmlns:android=<span>"http://schemas.android.com/apk/res/android"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;android:versionCode=<span>"322"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;android:versionName=<span>"ver&nbsp;3.2.2"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;package=<span>"com.eoeandroid.wallpapers.christmas"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;application&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:label=<span>"@7F040000"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:icon=<span>"@7F020004"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;activity&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:label=<span>"@7F040001"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>".Main"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;intent-filter&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.intent.action.MAIN"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/action&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;category&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.intent.category.LAUNCHER"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/category&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/intent-filter&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/activity&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;service&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>".service.SyncDeviceInfosService"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/service&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta-data&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"com.mobclix.APPLICATION_ID"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:value=<span>"30c0e2bb-a878-43cb-830b-a39fcae33b0c"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/meta-data&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/application&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-sdk&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:minSdkVersion=<span>"3"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-sdk&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.INTERNET"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.SET_WALLPAPER"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.WRITE_EXTERNAL_STORAGE"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.ACCESS_NETWORK_STATE"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.READ_PHONE_STATE"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uses-permission&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:name=<span>"android.permission.ACCESS_NETWORK_STATE"&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/uses-permission&gt;&nbsp;&nbsp;</li><li>&lt;/manifest&gt;&nbsp;&nbsp;</li></ol></div> &nbsp; <p align="left">基本能还原的跟源程序大致相同</p> <p align="left">这里我是拿的eoe出的一个墙纸程序为例</p> <p align="left">&nbsp;</p> <p align="left">&nbsp;</p> <p align="left">&nbsp;</p> <p align="left">接下来，大家肯定更加关心classes.dex的逆向</p> <p align="left">&nbsp;</p> <p align="left">这个其实跟之前那个也很相似</p> <p align="left">采用baksmali.jar这个工具，国外一个对Android研究的很深入的 大牛做的</p> <p align="left">&nbsp;</p> <p align="left">执行代码</p> <p align="left">java -jar baksmali.jar -o classout/  classes.dex</p> <p align="left">&nbsp;</p> <p align="left">讲classes.dex能逆向成一个文件夹</p> <p align="left">这里我可以截个图给大家看看</p> <p align="left"><img src="http://hi.csdn.net/attachment/201008/12/0_12816050894XKw.gif" alt="" /> </p> <p align="left">&nbsp;</p> <p align="left">&nbsp;</p> <p align="left">点开其中一个文件 我们继续来看</p> <p align="left">&nbsp;</p> <p align="left"><img src="http://hi.csdn.net/attachment/201008/12/0_1281605123Kiq8.gif" alt="" /> </p> <p align="left">&nbsp;</p> <p align="left">大家是不是觉得这个代码很亲切</p> <p align="left">对 &nbsp;从这个代码我们基本能大致推断出源程序的一些结构流程</p> <p align="left">从中借鉴</p> <p align="left">&nbsp;</p> <p align="left">&nbsp;</p> <p align="left">本文仅供研究学习之用</p> <p align="left">欢迎与我讨论交流</p> <p align="left">&nbsp;</p> <p align="left">&nbsp;</p> <p align="left">本文地址如下 转载请注明此句</p> <p align="left"><a href="http://blog.csdn.net/Zengyangtech/archive/2010/08/12/5807517.aspx">http://blog.csdn.net/Zengyangtech/archive/2010/08/12/5807517.aspx</a> </p> </div> </div></div><img src ="http://www.blogjava.net/hackzhang/aggbug/372532.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hackzhang/" target="_blank">精诚所至，金石为开</a> 2012-03-23 12:08 <a href="http://www.blogjava.net/hackzhang/archive/2012/03/23/372532.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[JAVA]获得汉字的拼音首字母</title><link>http://www.blogjava.net/hackzhang/archive/2012/03/23/372508.html</link><dc:creator>精诚所至，金石为开</dc:creator><author>精诚所至，金石为开</author><pubDate>Fri, 23 Mar 2012 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/hackzhang/archive/2012/03/23/372508.html</guid><wfw:comment>http://www.blogjava.net/hackzhang/comments/372508.html</wfw:comment><comments>http://www.blogjava.net/hackzhang/archive/2012/03/23/372508.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hackzhang/comments/commentRss/372508.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hackzhang/services/trackbacks/372508.html</trackback:ping><description><![CDATA[<div> --sunfruit  <p>&nbsp;&nbsp;&nbsp; 提供了获得汉字的拼音首字母的方法</p> <p>&nbsp;&nbsp;&nbsp; JDK版本&nbsp;&nbsp;&nbsp; 无版本限制<br />&nbsp;&nbsp;&nbsp; 功能&nbsp;&nbsp;&nbsp; 实现了获得一个汉字的拼音首字母功能，为汉字排序提供了方便</p> <p>&nbsp;&nbsp;&nbsp; 欢迎大家提意见，交流</p> <p>&nbsp;&nbsp;&nbsp; 代码如下：</p> <p>/**<br />&nbsp;* Title:获得汉字的拼音首字母<br />&nbsp;* Description: GB 2312-80 把收录的汉字分成两级。第一级汉字是常用汉字，计 3755 个，<br />&nbsp;* 置于 16～55 区，按汉语拼音字母／笔形顺序排列；第二级汉字是次常用汉字，<br />&nbsp;* 计 3008 个，置于 56～87 区，按部首／笔画顺序排列，所以本程序只能查到<br />&nbsp;* 对一级汉字的声母。同时对符合声母（zh，ch，sh）只能取首字母（z，c，s）&nbsp;<br />&nbsp;* Copyright: Copyright (c) 2004<br />&nbsp;* Company:&nbsp;<br />&nbsp;* @author not attributable<br />&nbsp;* @version 1.0<br />&nbsp;*/<br />public class GetFirstLetter { </p> <p>// 国标码和区位码转换常量<br />&nbsp; private static final int GB_SP_DIFF = 160;</p> <p>//存放国标一级汉字不同读音的起始区位码<br />&nbsp; private static final int[] secPosvalueList = {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027, 4086,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4390, 4558, 4684, 4925, 5249, 5600};</p> <p>//存放国标一级汉字不同读音的起始区位码对应读音<br />&nbsp; private static final char[] firstLetter = {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 't', 'w', 'x', 'y', 'z'};</p> <p>//获取一个字符串的拼音码<br />&nbsp; public static String getFirstLetter(String oriStr) {<br />&nbsp;&nbsp;&nbsp; String str = oriStr.toLowerCase();<br />&nbsp;&nbsp;&nbsp; StringBuffer buffer = new StringBuffer();<br />&nbsp;&nbsp;&nbsp; char ch;<br />&nbsp;&nbsp;&nbsp; char[] temp;<br />&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; str.length(); i++) { //依次处理str中每个字符<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ch = str.charAt(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp = new char[] {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ch};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] uniCode = new String(temp).getBytes();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (uniCode[0] &lt; 128 &amp;&amp; uniCode[0] &gt; 0) { // 非汉字<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buffer.append(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buffer.append(convert(uniCode));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; return buffer.toString();<br />&nbsp; }</p> <p>&nbsp; /** 获取一个汉字的拼音首字母。<br />&nbsp;&nbsp; * GB码两个字节分别减去160，转换成10进制码组合就可以得到区位码<br />&nbsp;&nbsp; * 例如汉字"你"的GB码是0xC4/0xE3，分别减去0xA0（160）就是0x24/0x43<br />&nbsp;&nbsp; * 0x24转成10进制就是36，0x43是67，那么它的区位码就是3667，在对照表中读音为&#8216;n'<br />&nbsp;&nbsp; */</p> <p>&nbsp; private static char convert(byte[] bytes) {</p> <p>&nbsp;&nbsp;&nbsp; char result = '-';<br />&nbsp;&nbsp;&nbsp; int secPosvalue = 0;<br />&nbsp;&nbsp;&nbsp; int i;<br />&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; bytes.length; i++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bytes[i] -= GB_SP_DIFF;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; secPosvalue = bytes[0] * 100 + bytes[1];<br />&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; 23; i++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (secPosvalue &gt;= secPosvalueList[i] &amp;&amp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; secPosvalue &lt; secPosvalueList[i + 1]) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = firstLetter[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; return result;<br />&nbsp; }<br />}</p></div>转载：<div>http://www.blogjava.net/yaozhuan/articles/31616.html</div><img src ="http://www.blogjava.net/hackzhang/aggbug/372508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hackzhang/" target="_blank">精诚所至，金石为开</a> 2012-03-23 10:15 <a href="http://www.blogjava.net/hackzhang/archive/2012/03/23/372508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>