`
longgangbai
  • 浏览: 7258518 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android APK反编译

 
阅读更多

一.反编译Apk得到Java源代码 

转载自:http://hi.baidu.com/%CB%BF%D4%B5%CC%EC%CF%C2/blog/item/2284e2debafc541e495403ec.html

 

工具下载:需用到dex2jar和JD-GUI这2个工具

dex2jar下载地址http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI下载地址:
  windows版JD-GUI:
http://laichao.googlecode.com/files/jdgui.zip
  Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz

步骤:

1.首先找到Android软件安装包中的classes.dex
把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件

2.把classes.dex拷贝到dex2jar.bat所在目录。
在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex  ,生成classes.dex.dex2jar.jar 

3.运行JD-GUI工具(它是绿色无须安装的)
打开上面的jar文件,即可看到源代码

---------------------------------------------------------------------------------

---------------------------------------------------------------------------------

二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件。

转载自:http://blog.sina.com.cn/s/blog_5752764e0100kv34.html

工具下载:

http://code.google.com/p/android-apktool/下 载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。

步骤:

1.解压缩下载的两个文件包,apktool-install-windows-2.1_r01-1.zip解压缩后得到的包里有aapt.exe 和apktool.bat.(注意要把apktool-1.0.0.tar.bz2解压后的一个.jar 文件copy进来)

2.打开命令窗口 (开始 > 运行,输入cmd,回车。)进入到apktool.bat的文件夹里。

          输入:

                    apktool d C:\***.apk  C:\***文件夹 

(命令行解释:apktool d 要反编译的文件 输出文件夹)

特别注意:你要反编译的文件一定要放在C盘的根目录里,

3.打开 C:\***文件夹 就可以得到我们学院的各种资源了。

 

三.将反编译完的文件重新打包成apk

 很简单,只要输入:

     apktood b c:***文件夹(你编译出来文件夹)

(更多内容看原文)

 

 

 

windows下Android NDK环境搭建



近来得空倒腾了一下NDK,下面把配置的经验分享与一下

先做一下准备工作吧:


1.       安装cygwinhttp://cygwin.com/install.html.安装的步骤网上很多,不在累述,主要安装的为Devel/make和Shells/bash, 安装完成后,运行,输入make  –version,查看是否报错

2.       下载android SDK,NDK,新建ANDROID_SDK,ANDROID_NDK,并将 %ANDROID_SDK%\tools%ANDROID_SDK%\platform-tools

%ANDROID_NDK%加入到Path中,cygwin(重启cygwin)中输入ndk-build,检查是否有错误。

3.       下载解压ant,新建ANT_HOME,并将加到Path中, cygwin(重启cygwin)中输入ant –version,检查是否有错误

4. Eclipse集成ADT就不累述了,说一下CDTHelp->Install New SoftWare(这个都懂的),在work with的下来列表中有如下的选项  



这个根据你的eclipse的版本而定,总之是有个和你eclipse版本对应的选项,选择之后,在选择区域会有这么一个选项展开,安装如下的选项

6. 上面的安装完了,还要继续安装,直接上图了
 

 

这个主要是为了增加Add Native Support的选项,如果不安装,可以将项目Convert to C/C++ project(这个具体怎么叫不记得了,网上是有相关的方法的),个人喜欢前者
 然后到Preferences中配置一下NDK的路径
 



 大体的准备工作就是这些,然后新建android项目,平时建立Android项目的步骤一样,


我建的项目名称为atpmonkeyJNITest

在activity中加入以下代码


Java代码 复制代码 收藏代码
  1. <SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small">public class AtpmonkeyJNITestActivity extends Activity {   
  2.     /** Called when the activity is first created. */  
  3.     static  
  4.     {   
  5.               System.loadLibrary("atpmonkeyJNITest");   
  6.     }   
  7.      public native String sayHelloToAtpmonkey();   
  8.      private TextView test;   
  9.     @Override  
  10.     public void onCreate(Bundle savedInstanceState) {   
  11.         super.onCreate(savedInstanceState);   
  12.         setContentView(R.layout.main);   
  13.            
  14.         test = (TextView)findViewById(R.id.test);   
  15.         test.setText(sayHelloToAtpmonkey());   
  16.     }   
  17. }   
  18. </SPAN></SPAN>  
public class AtpmonkeyJNITestActivity extends Activity {
    /** Called when the activity is first created. */
	static
    {
              System.loadLibrary("atpmonkeyJNITest");
    }
	 public native String sayHelloToAtpmonkey();
	 private TextView test;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        test = (TextView)findViewById(R.id.test);
        test.setText(sayHelloToAtpmonkey());
    }
}


 右击项目,找到Android Tools选择Add Native Support(若选择Convert *****,这一步就不用了)



 保持默认,点击finish,当然也可以改,但要注意库名与System.loadLibrary("atpmonkeyJNITest")中的一致性,这时候项目里就多出了如下这些东东

libs在未ianyi之前是空的


现在打开那个.cpp文件,如果不出意外的话应该是这样的


 


暂时先不管他,先把变异环境配一下吧

右击项目选择Properties



 目前我的C/C++ Build是这样的,先不管他(后边会报错)

先暂时把此处作为一个分水岭吧,因为下面介绍的方法一有些不是必须的,甚至有些画蛇添足,但是也是网上提供的一种方法,多看无弊,如果不想看,就直接跳到方法二,无大碍

方法一:

 选择Builders,点击new,出现如图窗口,选择Program,按下图配置



名字随便取啊,别重复了就行,再者就是注意Aruments里的那个$NDK,他是你在cygwin配置文件中取的名字



 当你全选完后,会提示错误,点击Specify Resources,选择你的项目
点击OK后,将新建的UP到最上面去,然后继续OK(还有配置要改,暂且放过,坐等错误出现),这是console应该有动作了



 现在到那个cpp文件中加些代码吧,添加的代码命名是有讲究的,查看一下文档,或google一下,很多文章对此讲的很清楚

针对本测试项目,添加的代码如下


Cpp代码 复制代码 收藏代码
  1. <SPAN style="FONT-SIZE: small">#include <string.h>   
  2. #include <jni.h>   
  3. extern "C"  
  4. {   
  5.     jstring Java_com_atpmonkey_polaris_test_AtpmonkeyJNITestActivity_sayHelloToAtpmonkey( JNIEnv* env,jobject thiz );   
  6. }   
  7. jstring   
  8. jstring Java_com_atpmonkey_polaris_test_AtpmonkeyJNITestActivity_sayHelloToAtpmonkey( JNIEnv* env,jobject thiz )   
  9. {   
  10.     return env->NewStringUTF("Hello Atpmonkey,you have a good job!");   
  11. }   
  12. </SPAN>  
#include <string.h>
#include <jni.h>
extern "C"
{
    jstring Java_com_atpmonkey_polaris_test_AtpmonkeyJNITestActivity_sayHelloToAtpmonkey( JNIEnv* env,jobject thiz );
}
jstring
jstring Java_com_atpmonkey_polaris_test_AtpmonkeyJNITestActivity_sayHelloToAtpmonkey( JNIEnv* env,jobject thiz )
{
    return env->NewStringUTF("Hello Atpmonkey,you have a good job!");
}

 

 正如你所见,红线很多啊,下面就然我们去掉这红线

Properties->c/c++ General/Paths and Symbols->includes
GNU C 添加/home/gavin/android-ndk-r7b/platforms/android-14/arch-arm/usr/include(此处 NDK的目录是你自己的)

GNU c++ 也一样


OK,等building完成,红线没了



 让我们先试着跑一下,不出所料,正像前边说过的:报错了



 我们回头再配一下C/C++ builder,配成了现在这个样子(可以和以前的对比一下),特别提醒一下,有事Build commend里会是ndk-build,在windows下这样貌似是不行的,一定要加上.cmd


下面再Build Configurations->Build All,如果你不是太背的话,现在编译的错误应该是统统没了。然我们run一下,看来我的运气不错



如果编译错误没了,只是运行android时的错误,那就要仔细检查一下代码了

 

方法二:

方法二就简单了很多,可以说是把方法一种新建CPPCOM那一步去掉,native support后直接跳到改C/C++ Builder这一步,若CPP文件有错,配置一下就可以了,是不是很方便,不过用这种方法我遇到了两次幺蛾子,所以平时可以选择这种方法,遇到幺蛾子时,可以选择上面的方法试试(搞开发,遇到幺蛾子的,你懂的)。

 

总结:

如果遇到了什么编译的问题,回头再把环境配一下,遇到幺蛾子,各种尝试无果,果断关eclipse,还有个建议,NDK,还是选择Linux平台靠谱些,windows,一个词-“蛋疼”。ITeye这个编辑器编辑区域有点小,,所以排版有点乱,编辑起来很不舒服。若搭建的过程中出现问题,欢迎跟帖!

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics