apktool+smali/baksmali 源码编译
来源:互联网 发布:招聘淘宝美工 编辑:程序博客网 时间:2024/05/06 10:16
自己做的东西需要修改smali/baksmali源码,但是只编译smali/baksmali再放到apktool里使用时会报错,因此只好编译整个apktool
1. 从github上下载 apktool源码 和 smali源码(apktool里原本是没有smali部分源码的,需要添进去),安装gradle
apktool:https://github.com/iBotPeaches/Apktool
smali:https://github.com/JesusFreke/smali
gradle:https://downloads.gradle.org/distributions/gradle-2.3-bin.zip
gradle安装:解开压缩包,将文件夹中的bin目录添加到系统环境变量,打开控制台,输入 gradle -v, 若能显示gradle相关信息说明安装成功
2. 将压缩包解开,在apktool的目录下创建brut.apktool.smali目录,将smali解压缩后的文件夹内容全部复制到brut.apktool.smali目录下
3. 修改apktool目录下的 settings.gradle:
<span style="font-size:12px;">include 'brut.j.common', 'brut.j.util', 'brut.j.dir', 'brut.apktool:apktool-lib', 'brut.apktool:apktool-cli',<span style="color:#FF0000;">'brut.apktool.smali:util', 'brut.apktool.smali:dexlib2', 'brut.apktool.smali:baksmali', 'brut.apktool.smali:smali', 'brut.apktool.smali:dexlib2:accessorTestGenerator'</span></span>
4. 修改brut.apktool\apktool-lib\build.gradle
<span style="color:#000000;">dependencies { compile("junit:junit:4.10") { exclude(module: 'hamcrest-core') } compile project(':brut.j.dir'), project(':brut.j.util'), project(':brut.j.common'), <span style="color:#FF0000;">project(':brut.apktool.smali:baksmali'), project(':brut.apktool.smali:smali'), project(':brut.apktool.smali:util'), project(':brut.apktool.smali:dexlib2'),</span> depends.snakeyaml, depends.xmlpull, depends.guava, depends.commons_lang testCompile depends.xmlunit}</span>
5. 修改brut.apktool.smali\baksmali\build.gradle
dependencies { compile project(<span style="color:#FF0000;">':brut.apktool.smali:util</span>') compile project(<span style="color:#FF0000;">':brut.apktool.smali:dexlib2</span>') compile depends.commons_cli compile depends.guava testCompile depends.junit testCompile project(<span style="color:#FF0000;">':brut.apktool.smali:smali'</span>)}
6. 修改brut.apktool.smali\dexlib2\build.gradle
dependencies { compile project(<span style="color:#FF0000;">':brut.apktool.smali:util</span>') compile depends.findbugs compile depends.guava testCompile depends.junit accessorTestGenerator project(<span style="color:#FF0000;">':brut.apktool.smali:dexlib2:accessorTestGenerator'</span>) dx depends.dx}
7. 修改brut.apktool.smali\dexlib2\accessorTestGenerator\build.gradle
dependencies { compile project(<span style="color:#FF0000;">':brut.apktool.smali:util'</span>) compile 'com.google.code.findbugs:jsr305:1.3.9' compile 'com.google.guava:guava:13.0.1' compile 'org.antlr:ST4:4.0.7' testCompile 'junit:junit:4.6'}
8. 修改brut.apktool.smali\smali\build.gradle
dependencies { <span style="color:#FF0000;"> compile project(':brut.apktool.smali:util') compile project(':brut.apktool.smali:dexlib2')</span> compile depends.antlr_runtime compile depends.stringtemplate compile depends.commons_cli testCompile depends.junit antlr depends.antlr jflex depends.jflex}
9. 修改brut.apktool.smali\settings.gradle
include<span style="color:#FF0000;"> ':brut.apktool.smali:util', ':brut.apktool.smali:dexlib2', ':brut.apktool.smali:baksmali', ':brut.apktool.smali:smali',':brut.apktool.smali:dexlib2:accessorTestGenerator'</span>
10. 尝试在baksmali代码中加一句输出
public class baksmali { public static boolean disassembleDexFile(DexFile dexFile, final baksmaliOptions options) {System.out.println("has changed!!"); ..............
11. 打开控制台,进入apktool目录,输入gradlew.bat fatJar, 开始进行编译(第一次的话会去下载相应版本的gradle,让它下好了,不管它)
12. 出现build successful说明成功编译,相应的在Apktool-master\brut.apktool\apktool-cli\build\libs下生成apktool-cli.jar文件
13. 用该jar文件去反编译apk,看到我们加入的语句输出了!
- apktool+smali/baksmali 源码编译
- apk编译/反编译工具baksmali和smali用法及apktool+dex2jar+jd_gui的用法
- baksmali和smali源码分析
- apktool工具生成smali源码
- Android 编译,反编译,AXMLPrinter2,smali,baksmali
- Android 中编译,反编译,AXMLPrinter2,smali,baksmali
- Android 编译,反编译,AXMLPrinter2,smali,baksmali
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- 使用AXMLPrinter2,smali,baksmali来实现Android 编译,反编
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- JDBC操作数据库的步骤
- JVM内幕:Java虚拟机详解
- 在openwrt显示相关的信息
- 2015-蓝桥杯试题--移动距离
- [leetcode] 326. Power of Three
- apktool+smali/baksmali 源码编译
- html基础篇(一)
- super.getClass()方法调用
- 随笔
- json数据解析<一> JSONObject和JSONArray的简单使用
- 【bzoj3895】【取石子】【博弈论+记忆化搜索】
- MFC-消息映射表遍历
- SQL Server6.0、6.5、7.0、SQL 2000 2005 2008 2012 2014话说版本号
- iOS开发时如何判断APP是否第一次运行