最近下了一个apk程序,但是一启动会弹出一个流氓广告。这个广告不是原厂商加的,而是有人在原有apk程序的基础上,加了一个壳,让apk先启动他加的广告,再启动原来的程序,很恶心。于是想去掉它。

试了几个apk反编译工具,最终感觉apkdb这个工具最方便。

这个软件集成了资源管理器右键菜单。而且集成了一系列工具,包括apk提取软件apktool、dex转jar的软件dex2jar,以及将jar转成java代码的软件jd-gui.exe。

1、首先下载apkdb 2.0并安装:http://idoog.me/

2、安装好之后,在电脑apk文件上右键会有“使用apkdb反编译”工具。按提示反编译,可以得到apk的所有资源和源代码。不过源代码是smali的,不是java。试了转smali为java的class文件,但修改过的class文件没找到好办法再回转为smali,于是放弃了改java代码。

3、于是尝试直接改smali代码。根据jd-gui.exe中的java代码,跟smali文件中的代码对比,其实不是很难看懂。我只想跳过广告,于是直接在它广告的方法一开始就return了,如下红色是我加的一行代码。

.method private Ads()Vreturn-void.locals 13.prologueconst/16 v12, 0xe...省略...

对应java代码就是:

  private void Ads() {return;...省略...

另外还改了一处(红色部分是我加的,抄了下面的绿色代码):

.method private init()Vinvoke-direct {p0}, Lcom/example/assetexam/Welcome;->Welcome()Vreturn-void.locals 1.prologue.line 67invoke-virtual {p0}, Lcom/example/assetexam/Welcome;->getPackageManager()Landroid/content/pm/PackageManager;move-result-object v0invoke-virtual {p0, v0}, Lcom/example/assetexam/Welcome;->isAppInstall(Landroid/content/pm/PackageManager;)Zmove-result v0if-eqz v0, :cond_0.line 68invoke-direct {p0}, Lcom/example/assetexam/Welcome;->Welcome()V    ...省略...

对应java代码是:

    private void init() {Welcome();retrun;if(isAppInstall(getPackageManager())) {Welcome();return;}Ads();}

改好的smali文件直接在原文件保存。

4、然后再整个反编译出来的文件夹(就是“apk文件名-src”的文件夹)上点右键“使用apkdb回编译”,就可以将修改过的smali代码再编译为apk文件!真是太方便了。途中有点小问题,一开始在apk提示签名时,使用原有签名,结果apk安装不了,后来直接重新签名就可以了。另外,不要用系统记事本改,会报错,可以用Notepad++去改smali文件,估计是BOM问题。

apk装好之后,终于没有广告了~

2017.3续:

今天试了下adpdb反编译报错,然后下了个新版本,就可以反编译了。

然后又从网上看到一个比较方便的工具 - jadx:

https://github.com/skylot/jadx/releases

可以直接将apk反编译为gradle项目,共android studio使用。但是试了下,编译时还是有很多报错,主要是资源文件的问题。有时间再看下

转载于:https://www.cnblogs.com/hz-blog/p/4945775.html

apk反编译、smali修改、回编译笔记相关推荐

  1. android xposed 编译,Xposed修改特征编译

    注意make缓存问题, 修改了文件内容,没有及时生效!!!! de.robv.android.xposed 在outdir目录中新建java目录移入XposedBridge.jar 参考链接 1 Xp ...

  2. android 回编译失败,Androidkiller 回编译失败

    [Asm] 纯文本查看 复制代码当前 Apktool 使用版本:2.4.0 正在编译 APK,请稍等... >I: Using Apktool 2.4.0 >I: Smaling smal ...

  3. go linux 源码编译环境,修改并编译golang源码

    Go 语言诞生5周年! 友情提示:本文使用Markdown编写,黑色背景文字可能需要横向拖动才能看清全文 最近为了做Hyperledger Fabric国密改造,涉及到了golang源码的改动.特将操 ...

  4. apk 反编译_APK反编译与回编译修改包名实现分身

    所谓分身,就是在同一设备上可以同时打开两个或多个相同的APP.那么如何修改APK包名,就是我们本节课要学习的内容,这里以土豆视频为例. 1修改APK包名 1.首先,找到包名:在工程管理器中找到&quo ...

  5. Android APK+Dex文件反编译及回编译工具 v.1.8.0 测试版

    可显示APK文件自身图标 _______________________________________________________________________________________ ...

  6. Android APK+Dex文件反编译及回编译工具(APKDB)v.1.9.2 正式版

    http://idoog.me/?p=1913 [Android APK+Dex文件反编译及回编译工具 (APKDB)v.1.9.2 正式版] <APK+Dex文件反编译及回编译工具> 简 ...

  7. [软件共享] 【强荐】Android APK+Dex文件反编译及回编译工具 v.1.7.2 正式版

    该工具非常强大,集成了反编译和回编译APK文件的工具apktool1.3/1.43/1.50版本,可以用于编译ICS4.0和JB4.1的APK文件, 里面还有ZIP刷机包和APK文件的签名工具, 所以 ...

  8. Android APK+Dex文件反编译及回编译工具 比 APKtool GUI 好千倍

    Android APK+Dex文件反编译及回编译工具 v1.7.2 正式版                        Soyu Zom 出品 =========================== ...

  9. APK反编译回编译问题汇总

    文章目录 前言 一.编译工具 二.问题汇总 1.反编译问题 2.回编译问题 前言 对于国内安卓的游戏推广(发行,买量),反编译回编译apk都是不可缺少的技能,他能帮助游戏快速上线并减少人工成本. 一. ...

  10. Android Apk 反编译之回编译

    Apk反编译(可以查看文章:shang)后,可以对该Apk 项目就行修改. 但是编译后的语言是smail语言,所以想修改的话,需要对该语言有所了解. 修改完之后,还需要重新打包成apk文件,接下来就看 ...

最新文章

  1. boost::gil::get_num_bits用法的测试程序
  2. 5d4的白平衡模式_佳能5D4/5D3/6D2系列中高端单反相机和全画幅微单EOS R专题系列课程...
  3. 阿里云发布智能语音自学习平台,零基础训练人工智能模型
  4. Redis缓存穿透、击穿、雪崩来解释个明白
  5. 【2007-3】【分硬币】
  6. Xamarin和Java开发安卓_将原生移动开发与Xamarin相结合
  7. 好东西真多,如何让自己学的能跟上技术的发展呢
  8. python描述符魔术方法_学习笔记-Python基础9-面向对象编程OOP-类的成员描述符(property)、类的常用内置属性、类的常用魔术方法、类和对象的三种方法...
  9. 额外域控制升级为主控制域
  10. java线程同步的作用_Java并发编程之线程同步
  11. 镜像miracast投屏软件_miracast投屏软件下载
  12. displaytag手册
  13. 【js练习】简易聊天室
  14. 5v继电器模块实物接线_一秒看懂基础继电器电路图解
  15. 虚拟机IP地址和主机名称配置
  16. aardio - 【库】webp图片转换
  17. 【PHPWord】使用PHPWord替换模板变量大段文字并换行设置字体字号
  18. 结课作业:机械设计制造及其自动化文献综述
  19. 如何驯服野生论文 | EndNote
  20. 零基础学编程套路~~~

热门文章

  1. Android开发笔记(九十一)工厂模式
  2. CSS3鼠标滑过图片3D旋转动画
  3. 超详细步骤 | 如何用小程序 SDK 实现电商评价模
  4. contenteditable获得焦点后的边框设置
  5. Integer的自动拆装箱的陷阱(整型数-128到127的值比较问题)
  6. SI和DI寄存器(0703)
  7. php获取远程图片模拟post,file上传到指定服务器
  8. NodeSchool: JavaScript函数式编程
  9. Modelsim-altera 仿真 顶层原理图的解决办法
  10. [转]HTTP协议简单原理资源