发新帖

android 反编译

[复制链接]
3858 4
1.解压 kongjian.apk
  android发布出来的程序目前我知道的是.apk,具体介绍百度。要反编译得到android工程文件就需要用到上面介绍的三个工具。
  首先,用win自带的解压工具解压,得到class.dex文件,然后将class.dex拖到dex2jar.bat图标上,就会在class.dex同目录得到一个jar文件。

当然,还要请出apktool 将apk里面的资源文件,布局文件解压出来。找了个可视化的apktool ,方便些。可以对比下两个解压方式的不同,第一次解压出来的xml,打开就是乱码,我们要导入到eclipse新建工程肯定不能用的。当然 apk解压出来的 除了资源文件还有smali格式的代码。
  看的懂的大牛就直接修改了。我看不懂,所以另寻他路。
  2.反编译
  用jd-gui 打开第一步解压的jar文件直接就看到源码了,保存一份。(注意下包名和应用的名字)

3 新建android工程
  将工程名字和包名 类名 尽量和提取出来的源码一样。然后先将源码(除了R.java)直接托进eclipse覆盖源文件,其次才是资源文件,等所有都ctrl+s 保存完毕后,再将R.java覆盖。
  接着就修正源码 让他可读性更高些。



  对于android工程,开发环境会自动对每个资源控件 给一个id(大牛们都知道,莫笑),程序解读时,就根据id来找到资源控件 还有布局文件。而这些id 都是保存在R.java里面。所以,上一步骤中药先覆盖资源,后覆盖R.java.
  上码(jd-gui读取jar里面的源码):
  public class activity1 extends Activity
  {
    public void onCreate(Bundle paramBundle)
    {
      super.onCreate(paramBundle);
      setContentView(2130903040);
    }
  }
  
  上码(正常的adroid):
   public class activity1 extends Activity {
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
      }
  }
  
  最简单的  初始化activity。  setContentView(R.layout.main)设置视图,R.layout.main 就是引用R.java里layou(布局文件)里面的main.xml的id.
  对比R.java里面的id 将源码中的资源文件修正了

最后测试。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复

精彩评论4

mpging    发表于 2015-9-27 22:35:33 | 显示全部楼层
楼主你知道怎么转正么

举报 使用道具

回复 支持 反对
wbgwbg2388    发表于 2015-10-2 13:13:50 来自手机  | 显示全部楼层
小白在这论坛玩不了啊

举报 使用道具

回复 支持 反对
714039096    发表于 2015-10-4 14:08:37 | 显示全部楼层
转正距离我估计得有两个等级啊......  小白默默流泪....

举报 使用道具

回复 支持 反对
dnen    发表于 2015-10-6 11:52:37 | 显示全部楼层
咋玩?

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表