[练习]使用dx.bat、dexdump.exe、javap、Baksmali
PART0
这几个工具的关系可以这样描述:

用例:
public class Hello
{
public int foo(int a , int b )
{
return (a+b) * (a-b);
} public static void main(String args[])
{
Hello hello = new Hello();
System.out.println(hello.foo(5,3));
}
}
PART1:dx.bat、dexdump.exe
dx.bat、dexdump.exe可以在\sdk\build-tools\android-4.4W下找到。
把Hello.class复制到这个目录下,输入:

可以生成Hello.dex。
然后用dexdump弄成Dalvik字节码:

能得到这样的东西:

对应函数:
public int foo(int a , int b )
{
return (a+b) * (a-b);
}
PART2:Javap可以反编译class得到Java字节码,命令是:
javap -c -classpath . Hello
就不使用了。
PART3:DEX反汇编工具Baksmali:
用法是:
java -jar baksmali.jar -o baksmaliout Hello.dex //反编译成smali
java -jar smali.jar out//重新打包成dex, out是上一步反编译出来的文件夹
可以在baksmaliout目录下生成Hello.smali文件,然后用文本编辑器打开可以看到foo()函数的代码,也有上面的add-int,sub-int等等。
注意Smali是Dalvik虚拟机指令语言,所以dexdump.exe搞出来的Dalvik字节码跟Baksmali反汇编出来的smali语言是一样的。
dexdump比较简易所以一般用Baksmali吧。
用了一次Baksmali反编译发现弄出来的smali文件跟apktool搞出来的差不多,混淆过的代码还是分成了很多文件。可以用IDA Pro。
也许这个工具用来smali重新打包成dex更实用.
参考:http://bbs.gfan.com/android-69140-1-1.html
[练习]使用dx.bat、dexdump.exe、javap、Baksmali的更多相关文章
- bat调用exe文件并且传递参数
bat调用exe文件并且传递参数 bat调用exe,并且传递日期参数,代码: @echo off cd "E:\SublimeWorks\exe" start xyzj_shrjj ...
- bat转exe工具 Bat To Exe Converter v2.4.7 绿色版
一款非常小巧的工具,从它的名称便能知道它的功能:它能将BAT或CMD文件转换成 EXE 文件.使用它,你可以保护由自己开发的软件的软件代码,创建一个漂亮的图标,让软件看起来更专业. 下载地址: htt ...
- 批处理转exe工具(Quick Batch File Compiler )|bat格式化exe
看到的,就是回忆.历史总是那么漫不经心,走完一生.留下可以记忆的脚本.... 对于window编写的bat脚本,想加密吗? 你所想的,前辈们基本上都有产出成果.所以在这个开源.共享.进步的互联网时代. ...
- bat启动.exe的应用程序
新建一个文本文档,编写如下,完成后保存将后缀名txt改为bat即可. rem 启动***(要启动的服务名) @echo off rem 程序安装的顶层目录 d: rem 设置显示文字颜色 color ...
- bat 调用exe
@set errorlevel=>nul :reInput @echo 请输入批次号: @set/p 批次号= >nul @set 批次号|findstr "\\<%sea ...
- 制作.bat文件运行指定目录的.bat或者exe
上代码: goto start call "D:/Program Files/activeMQ/apache-activemq-5.3.2-bin/apache-activemq-5.3.2 ...
- bat 获取 exe 文件中 产品版本号并存储到变量中
set EXE='D:\gitlab\drivereasy3\DriverEasyWPF\bin\Release\DriverEasy.exe' powershell "(Get-Item ...
- adb.exe 安卓测试桥的使用
一.android SDK提供了几个工具 (在SDK下build-tools目录下的工具) dx.bat ----------->把java编译器编译生成的.class 文件 ,变成一个文件,让 ...
- BAT&注册表重定向劫持
RunJS 常用引导,有时启动某个应用需要环境变量可以这样启动应用,会对启动的进程生效,即被继承 set PATH=D:\Developer\sdk\platform-tools;%PATH% D: ...
随机推荐
- android实例讲解----Tomcat部署Web应用方法总结
参考文档:http://blog.csdn.net/yangxueyong/article/details/6130065 Tomcat部署Web应用方法总结 一.架构介 ...
- ffmpeg rtmp 推流错误WriteN, RTMP send error 10053 10038
利用ffmepg推264流到rtmp服务端出现错误WriteN, RTMP send error 10053,具体如下图所示. 图1推流到rtmp服务错误 原因是视频流缺少SPS,PPS信息,加上这两 ...
- <LeetCode OJ> 337. House Robber III
Total Accepted: 1341 Total Submissions: 3744 Difficulty: Medium The thief has found himself a new pl ...
- python3短信接口使用
import http.client from urllib import parse host = "106.ihuyi.com" sms_send_uri = "/w ...
- Linux驱动经典面试题目
1. linux驱动分类 2. 信号量与自旋锁 3. platform总线设备及总线设备怎样编写 4. kmalloc和vmalloc的差别 5. module_init的级别 6. 加入 ...
- Oracle操作笔记
1.查询Oracle版本,数据库的SID select * from v$version; select name from v$database; 2.查询Oracle数据库所支持的功能 SELEC ...
- 解读SDN核心技术:OpenFlow深入分析(转载)
1 OpenFlow简介 OpenFlow是由斯坦福大学的Nick McKeown教授在2008年4月ACM Communications Review上发表的一篇论文OpenFlow: enabli ...
- 图像处理之opencv---常用函数
http://blog.sina.com.cn/s/blog_9c3fc0730100yzwt.html 很全 http://www.xuebuyuan.com/593449.html cvrepea ...
- C语言,简单计算器【上】
由于工作需要最近在研究PHP扩展,无可避免的涉及到了C语言.从出了学校以后C语言在实际工作中还没有用到过,所以必须要先进行一点复习工作.个人认为对于熟悉一样东西说最好的方法是上手实践.于是便想起了当时 ...
- c++的运算符的重载
1 什么是c++运算符的重载 c++运算符的重载就是说对+.-.>.<等运算符进行重新定义,这样的话,除了基本的类型,所有的类都可以进行基本的运算了,用起来非常方便.特别是用在各种算法中. ...