韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha

反编译apk帮助文档

准备工具

  1. dex2jar(dex转换jar工具),下载地址: http://dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip
  2. apktool.jar(获取apk资源文件、注册文件、so库等),下载地址:http://android-apktool.googlecode.com/files/apktool1.5.2.tar.bz2
  3. jdk1.7+
  4. eclipse+adt
  5. sdk
  6. 将待编译的apk包(如a.apk)复制一份,重命名为a.zip并打开获取里面的classes.dex文件,将classes.dex文件复制到dex2jar目录下
  7. cmd命令cd到dex2jar目录下,执行d2j-dex2jar classes.dex,会得到一个叫classes-dex2jar.jar文件
    1. cmd 命令 cd到a.apk所在位置,执行java -jar apktool.jar d -f a.apk .\a ,完毕后会在当前目录得到a文件夹
    2. 打开eclipse 新建一个空android项目,删除libs、res目录下文件,删除AndroidManifest.xml文件,将a文件夹中的assets文件夹、res文件夹、AndroidManifest.xml文件复制到工程的根目录,查看a文件夹中是否存在lib文件夹,如果有将里面的内容(so库)也全部复制到工程的libs目录下,再将第2步得到的classes-dex2jar.jar也复制到libs目录下
    3. Ctrl+H把整个项目中@*android替换成@android(正则替换)[这一步可以不操作]
    4. 打开AndroidManifest.xml文件,将manifest节点下package属性值改成自定义的包名,android:versionCode、android:versionName 看情况酌情修改,再看application的android:name、activity的android:name、service 的 android:name、receiver的android:namer是否是.开头,如果是,在.的前面加上a.apk本身的包名
    5. 查看res目录下的文件是否出错,如果有打开出错的文件,看是不是因为命名空间导致的,如: xmlns:panel="http://schemas.android.com/apk/res/xxx.xxx.xxx修改其后缀xxx.xxx.xxx(包名)改成a.apk本身的包名
    6. 项目右键运行即可生成apk
    7. 如果java代码中将一些东西写死,如由包名拼凑成的应用私有路径 /data/data/xxx.xxx.xxx/files,这时候因为沿用了不存在的包名系统会出错,这时候可以尝试以下几种方法:

开始操作

附加说明

a)         如果这种定义是在属性中,用反射在application的onCreate方法中更改之

b)        如果这种定义是在方法中,可以通过一些工具(如javassist等)来修改class二进制字节码,然后替换之

c)         用jd-gui等反编译工具探知其目标包路径,自建项目模拟内容再获取class文件替换之

d)        如果还是沿用旧的包名,因为签名变了,所以不用担心应用会被“真”的应用在更新的时候给覆盖掉

反编译apk 修改 合成的更多相关文章

  1. 【转】一步一步带你反编译apk,并教你修改smali和重新打包

    一.工具介绍: 1.apktool:aapt.exe,apktool.bat,apktool.jar;三个在同一目录结合使用,用来反编译apk,apk重新打包: 2.dex2jar:该工具作用是将cl ...

  2. 【转】安卓apk反编译、修改、重新打包、签名全过程

    首先明确,反编译别人apk是一件不厚道的事情.代码是程序员辛苦工作的成果,想通过这种手段不劳而获,是不对的.这也说明,代码混淆是非常重要的.本文抱着学习的态度,研究在一些特殊的情况下如果有需要,该怎么 ...

  3. 安卓apk反编译、修改、重新打包、签名全过程

    首先明确,反编译别人apk是一件不厚道的事情.代码是程序员辛苦工作的成果,想通过这种手段不劳而获,是不对的.这也说明,代码混淆是非常重要的.本文抱着学习的态度,研究在一些特殊的情况下如果有需要,该怎么 ...

  4. Uubuntu 14.04 LTS反编译apk

    使用apktool反编译apk 1.安装apktool apktool是Google提供的APK编译工具,能够反编译及回编译apk,需要Java环境的支持(在此不再赘述Java的安装与配置,详见< ...

  5. [Android]反编译apk + eclipse中调试smali

    从来没有想过反编译apk是来的如此方便,并且还可以修改后重新编译运行,这比在win下修改pe容易多了,感谢apktool和smali工具的作者提供这么好的工具. 跟踪apk一般的做法是在反编译的sma ...

  6. 将JAR包反编译,修改后重新打包(转)

     将JAR包反编译,修改后重新打包(转)   在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的 ...

  7. 反编译apk

    一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI 前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源 ...

  8. Atitit.反编译apk android源码以及防止反编译apk

    Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool  apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...

  9. 反编译APK文件

    有时源代码丢失了,这时如果有apk文件的话,是可以对apk文件反编译得到源文件的,本文介绍一下简单的反编译apk文件的过程. 1.工具 反编译apk需要的工具有两个:apk2java和apktool, ...

随机推荐

  1. bzoj 1856 组合

    这道题有些类似卡特兰数的其中一种证明,总方案数是c(n+m,n),点(m,n)对应y=x-1对称点为(n+1,m-1),所以答案为c(n+m,n)-c(n+m,n+1). 反思:开始坐标轴画错了,结果 ...

  2. js_开发小技巧记录(一)

    (一) 生成从minNum到maxNum的随机数 <!DOCTYPE html> <html> <head> <meta charset="UTF- ...

  3. css文本垂直水平居中

    一.单行文本居中 .content{ height:100px; line-height:100px; text-align:center; border:1px solid red; } 效果图 二 ...

  4. mysql之基本数据库操作(二)

    环境信息 数据库:mysql-5.7.20 操作系统:Ubuntu-16.04.3 mysql的启动.退出.重启 # 启动 $ sudo service mysqld start # 停止 $ sud ...

  5. 增大dma的分配

    前言 项目中需要通过驱动与fpga通讯,获取fpga往内存里写的数据.因为数据量比较大,需要驱动分配600多M的内存给fpga来写数据,且因为是与fpga通讯,需要连续的内存,还得是uncached的 ...

  6. ThinkPHP5 模型 - 事务支持

    使用事务之前,先确保数据库的存储引擎支持事务操作. MyISAM:不支持事务,主要用于读数据提高性能 InnoDB:支持事务.行级锁和并发 Berkeley DB:支持事务 ThinkPHP5 使用事 ...

  7. 终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误

    终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误 http://blog.csdn.net ...

  8. nodejs 使用redis 管理session

    一.在开发机安装redis并远程连接 因本人的远程开发机配置原因,使用jumbo安装redis 首先登录开发机,并使用jumbo 安装redis:jumbo install redis 查看redis ...

  9. 【UOJ#164】清华集训2015V

    QwQzcysky真是菜死了,这是我刚上高一的时候坤爷在夏令营讲的,可是今天才切掉…… 想想也神奇,一个2016.11才学会线段树的菜鸡,夏令营的时候居然听过Segment-Tree-Beats? 所 ...

  10. clearcase command (linux 常用命令)

    http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m0/index.jsp?topic=/com.ibm.rational.clearcase.h ...