DalVik学习之利器篇--如何使用smali
2014-12-17 19:11
176 查看
相关工具:
smali是一个开源并且注释清晰的反编译的java工程
apktool是基于smali开发的帮助反编译apk的利器
dedexer是独立与smali又一个反编译apk的工具
而dexdump就是android自带的c语言实现的dump dex文件的工具
可供参考的文档:
Practice of Android Reverse Engineering
关于register命名的规范
http://code.google.com/p/smali/wiki/Registers
smali在eclipse下的配置及调试
1. 安装好相关的插件(如, ANTLR,maven2),这两个不装好,导入整个maven管理的smali之后,进行maven insatll/build都会有问题
安装好,导入smali的maven工程之后如图:
2. 装好插件之后,smali这个单独的project会有错误,这时,需要把ANTLR自动编译生成的3个.java文件拷贝到smali的目录下
如图,从
到
3. 一切ok之后,就可以自己断点调试smali了。
通过在smali下使用run configuration,在arguments中输入如下参数,jar /your_smali_path/smali/smali/target/smali-1.2.7-dev-jar-with-dependencies.jar -v可以确认是否一切ok。
会得到如下结果:
smali 1.2.7-dev (http://smali.googlecode.com)
Copyright (C) 2010 Ben Gruver (JesusFreke@JesusFreke.com)
BSD license (http://www.opensource.org/licenses/bsd-license.php)
环境都准备好了,那么让我们来调试一下smali吧。
我选择的例子是,通过smali来确认它是如何解析一个class.dex中的
首先,因为是解析class.dex,所以我们所要执行的project是baksmali,先看一下它的帮助如下:
java -jar /your_smali_path/baksmali/target/baksmali-1.2.7-dev-jar-with-dependencies.jar -v
java -jar /your_smali_path/baksmali/target/baksmali-1.2.7-dev-jar-with-dependencies.jar /your_dexfile_path/classes.dex
以上都是命令行模式下的执行选项。
为了方便调试,把命令行的参数放入Run Configuration -> Arguments:jar /your_smali_path/baksmali/target/baksmali-1.2.7-dev-jar-with-dependencies.jar /your_dexfile_path/classes.dex
结果悲剧的发现,eclipse使用CLI解析传入的参数不正确。总是显示参数错误。分析了一下,猜测可能是apache CLI的类在eclipse中接收参数跟命令行不相同(不知道有没有高手知道eclipse中arguments到CLI的转化途径,忘告知)。最后,就手动修改了baksmali的main函数,把其中line244给为inputDexFileName = "/your_dexfile_path/classes.dex";//remainingArgs[0]; 同时设定Run Configuration
-> Arguments:/your_smali_path/baksmali/target/baksmali-1.2.7-dev-jar-with-dependencies.jar。接下来就可以开始调试了。
http://blog.csdn.net/Melody_lu123/article/details/6774834
smali是一个开源并且注释清晰的反编译的java工程
apktool是基于smali开发的帮助反编译apk的利器
dedexer是独立与smali又一个反编译apk的工具
而dexdump就是android自带的c语言实现的dump dex文件的工具
可供参考的文档:
Practice of Android Reverse Engineering
关于register命名的规范
http://code.google.com/p/smali/wiki/Registers
smali在eclipse下的配置及调试
1. 安装好相关的插件(如, ANTLR,maven2),这两个不装好,导入整个maven管理的smali之后,进行maven insatll/build都会有问题
安装好,导入smali的maven工程之后如图:
2. 装好插件之后,smali这个单独的project会有错误,这时,需要把ANTLR自动编译生成的3个.java文件拷贝到smali的目录下
如图,从
到
3. 一切ok之后,就可以自己断点调试smali了。
通过在smali下使用run configuration,在arguments中输入如下参数,jar /your_smali_path/smali/smali/target/smali-1.2.7-dev-jar-with-dependencies.jar -v可以确认是否一切ok。
会得到如下结果:
smali 1.2.7-dev (http://smali.googlecode.com)
Copyright (C) 2010 Ben Gruver (JesusFreke@JesusFreke.com)
BSD license (http://www.opensource.org/licenses/bsd-license.php)
环境都准备好了,那么让我们来调试一下smali吧。
我选择的例子是,通过smali来确认它是如何解析一个class.dex中的
proto_id_item中的ShortyDescriptor和type_id_item中的TypeDescriptor
首先,因为是解析class.dex,所以我们所要执行的project是baksmali,先看一下它的帮助如下:
java -jar /your_smali_path/baksmali/target/baksmali-1.2.7-dev-jar-with-dependencies.jar -v
java -jar /your_smali_path/baksmali/target/baksmali-1.2.7-dev-jar-with-dependencies.jar /your_dexfile_path/classes.dex
以上都是命令行模式下的执行选项。
为了方便调试,把命令行的参数放入Run Configuration -> Arguments:jar /your_smali_path/baksmali/target/baksmali-1.2.7-dev-jar-with-dependencies.jar /your_dexfile_path/classes.dex
结果悲剧的发现,eclipse使用CLI解析传入的参数不正确。总是显示参数错误。分析了一下,猜测可能是apache CLI的类在eclipse中接收参数跟命令行不相同(不知道有没有高手知道eclipse中arguments到CLI的转化途径,忘告知)。最后,就手动修改了baksmali的main函数,把其中line244给为inputDexFileName = "/your_dexfile_path/classes.dex";//remainingArgs[0]; 同时设定Run Configuration
-> Arguments:/your_smali_path/baksmali/target/baksmali-1.2.7-dev-jar-with-dependencies.jar。接下来就可以开始调试了。
http://blog.csdn.net/Melody_lu123/article/details/6774834
相关文章推荐
- DalVik学习之利器篇--如何使用smali
- 学习如何使用打印服务API【转】
- JSP设计模式基础:View Helper模式——学习如何使用View Helper模式使得Model数据适应表现层的需要(3)
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )(二)
- Jpcap包的学习笔记(五)如何使用JpcapCaptor实例来捕捉网络数据包(上部)
- Asp.Net Ajax 学习笔记15 如何使用ASP.NET Profile
- VC学习资料收集(28):如何在MFC应用程序中使用MAPI32.DLL发送电子邮件
- JSP设计模式基础:View Helper模式——学习如何使用View Helper模式使得Model数据适应表现层的需要(2)
- 学习如何使用 Cookie 编程
- 程序员学习的革命-如何使用大脑
- 无法转向JDK 5.0?学习一款开放源代码工具如何帮助在旧版 JVM 上使用这些特性
- JSP设计模式基础:View Helper模式——学习如何使用View Helper模式使得Model数据适应表现层的需要(1)
- 程序员学习的革命-如何使用大脑
- XML基础知识学习二(如何使用XML?)
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )
- 如何寻找使用案例及其注意事项,学习笔记
- 如何快速学习和使用stl???
- 程序员学习的革命-如何使用大脑
- 如何使用Abator利器来开发ibatis应用实例!
- JSP设计模式基础:View Helper模式——学习如何使用View Helper模式使得Model数据适应表现层的需要(1)