apk反编译、smali修改、回编译笔记
最近下了一个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修改、回编译笔记相关推荐
- android xposed 编译,Xposed修改特征编译
注意make缓存问题, 修改了文件内容,没有及时生效!!!! de.robv.android.xposed 在outdir目录中新建java目录移入XposedBridge.jar 参考链接 1 Xp ...
- android 回编译失败,Androidkiller 回编译失败
[Asm] 纯文本查看 复制代码当前 Apktool 使用版本:2.4.0 正在编译 APK,请稍等... >I: Using Apktool 2.4.0 >I: Smaling smal ...
- go linux 源码编译环境,修改并编译golang源码
Go 语言诞生5周年! 友情提示:本文使用Markdown编写,黑色背景文字可能需要横向拖动才能看清全文 最近为了做Hyperledger Fabric国密改造,涉及到了golang源码的改动.特将操 ...
- apk 反编译_APK反编译与回编译修改包名实现分身
所谓分身,就是在同一设备上可以同时打开两个或多个相同的APP.那么如何修改APK包名,就是我们本节课要学习的内容,这里以土豆视频为例. 1修改APK包名 1.首先,找到包名:在工程管理器中找到&quo ...
- Android APK+Dex文件反编译及回编译工具 v.1.8.0 测试版
可显示APK文件自身图标 _______________________________________________________________________________________ ...
- Android APK+Dex文件反编译及回编译工具(APKDB)v.1.9.2 正式版
http://idoog.me/?p=1913 [Android APK+Dex文件反编译及回编译工具 (APKDB)v.1.9.2 正式版] <APK+Dex文件反编译及回编译工具> 简 ...
- [软件共享] 【强荐】Android APK+Dex文件反编译及回编译工具 v.1.7.2 正式版
该工具非常强大,集成了反编译和回编译APK文件的工具apktool1.3/1.43/1.50版本,可以用于编译ICS4.0和JB4.1的APK文件, 里面还有ZIP刷机包和APK文件的签名工具, 所以 ...
- Android APK+Dex文件反编译及回编译工具 比 APKtool GUI 好千倍
Android APK+Dex文件反编译及回编译工具 v1.7.2 正式版 Soyu Zom 出品 =========================== ...
- APK反编译回编译问题汇总
文章目录 前言 一.编译工具 二.问题汇总 1.反编译问题 2.回编译问题 前言 对于国内安卓的游戏推广(发行,买量),反编译回编译apk都是不可缺少的技能,他能帮助游戏快速上线并减少人工成本. 一. ...
- Android Apk 反编译之回编译
Apk反编译(可以查看文章:shang)后,可以对该Apk 项目就行修改. 但是编译后的语言是smail语言,所以想修改的话,需要对该语言有所了解. 修改完之后,还需要重新打包成apk文件,接下来就看 ...
最新文章
- boost::gil::get_num_bits用法的测试程序
- 5d4的白平衡模式_佳能5D4/5D3/6D2系列中高端单反相机和全画幅微单EOS R专题系列课程...
- 阿里云发布智能语音自学习平台,零基础训练人工智能模型
- Redis缓存穿透、击穿、雪崩来解释个明白
- 【2007-3】【分硬币】
- Xamarin和Java开发安卓_将原生移动开发与Xamarin相结合
- 好东西真多,如何让自己学的能跟上技术的发展呢
- python描述符魔术方法_学习笔记-Python基础9-面向对象编程OOP-类的成员描述符(property)、类的常用内置属性、类的常用魔术方法、类和对象的三种方法...
- 额外域控制升级为主控制域
- java线程同步的作用_Java并发编程之线程同步
- 镜像miracast投屏软件_miracast投屏软件下载
- displaytag手册
- 【js练习】简易聊天室
- 5v继电器模块实物接线_一秒看懂基础继电器电路图解
- 虚拟机IP地址和主机名称配置
- aardio - 【库】webp图片转换
- 【PHPWord】使用PHPWord替换模板变量大段文字并换行设置字体字号
- 结课作业:机械设计制造及其自动化文献综述
- 如何驯服野生论文 | EndNote
- 零基础学编程套路~~~