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的更多相关文章

  1. bat调用exe文件并且传递参数

    bat调用exe文件并且传递参数 bat调用exe,并且传递日期参数,代码: @echo off cd "E:\SublimeWorks\exe" start xyzj_shrjj ...

  2. bat转exe工具 Bat To Exe Converter v2.4.7 绿色版

    一款非常小巧的工具,从它的名称便能知道它的功能:它能将BAT或CMD文件转换成 EXE 文件.使用它,你可以保护由自己开发的软件的软件代码,创建一个漂亮的图标,让软件看起来更专业. 下载地址: htt ...

  3. 批处理转exe工具(Quick Batch File Compiler )|bat格式化exe

    看到的,就是回忆.历史总是那么漫不经心,走完一生.留下可以记忆的脚本.... 对于window编写的bat脚本,想加密吗? 你所想的,前辈们基本上都有产出成果.所以在这个开源.共享.进步的互联网时代. ...

  4. bat启动.exe的应用程序

    新建一个文本文档,编写如下,完成后保存将后缀名txt改为bat即可. rem 启动***(要启动的服务名) @echo off rem  程序安装的顶层目录 d: rem 设置显示文字颜色 color ...

  5. bat 调用exe

    @set errorlevel=>nul :reInput @echo 请输入批次号: @set/p 批次号= >nul @set 批次号|findstr "\\<%sea ...

  6. 制作.bat文件运行指定目录的.bat或者exe

    上代码: goto start call "D:/Program Files/activeMQ/apache-activemq-5.3.2-bin/apache-activemq-5.3.2 ...

  7. bat 获取 exe 文件中 产品版本号并存储到变量中

    set EXE='D:\gitlab\drivereasy3\DriverEasyWPF\bin\Release\DriverEasy.exe' powershell "(Get-Item ...

  8. adb.exe 安卓测试桥的使用

    一.android SDK提供了几个工具 (在SDK下build-tools目录下的工具) dx.bat ----------->把java编译器编译生成的.class 文件 ,变成一个文件,让 ...

  9. BAT&注册表重定向劫持

    RunJS 常用引导,有时启动某个应用需要环境变量可以这样启动应用,会对启动的进程生效,即被继承 set PATH=D:\Developer\sdk\platform-tools;%PATH% D: ...

随机推荐

  1. android状态栏总结

    针对状态栏的操作,只针对4.4kitKat(含)以上的机型,部分国产rom会失效,目前发现的有华为的EMUI Activity必须是noActionbar主题 本文基于StatusBarUtils略作 ...

  2. GDB调试多线程程序

    gdb有thread相关命令,如info thread(简写成info th)显示线程消息,b xx thread yy可以针对某个thread设置断点,thread xx(简写成thr xx)切换到 ...

  3. 在windows下安装gulp[转]

    一.准备工作 1.什么是 npm? npm 是 nodejs 的包管理工具,主要功能就是管理.更新.搜索.发布node的包.Gulp 就是通过 NPM 安装的.关于 NPM 中文介绍,这里有一篇非常不 ...

  4. java性能监控工具jconsole-windows

    jconsole Starts a graphical console that lets you monitor and manage Java applications. Synopsis jco ...

  5. Redhat hadoop2.7.2安装笔记

    本次安装是在windows7环境下安装redhat虚拟机进行的,所须要的软件例如以下: VirtualBox-5.0.16-105871-Win.exe rhel-server-5.4-x86_64- ...

  6. xcode 5.0 以上去掉icon高亮方法&amp;iOS5白图标问题

    之前的建议方法是把在xxx.info.plist文件里把 icon already includes gloss and bevel effects 设置YES 在Xcode5下,重复实现不成功,今天 ...

  7. 转:学习linux驱动经典书籍

    Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为<linux_device_driver 3rd Edition>,这是一本很经典的书,无奈Linux的东东还是过于庞大,这本 ...

  8. mini2440使用jlink烧写superboot到norflash

    Jlink版本号:J-flash ARM V4.12                    J-Flash ARM的配置. 一般说来file-->open project里面会找到一些*.jfl ...

  9. Juce源代码分析(九)应用程序基类ApplicationBase

    在前面的几篇文章,分析的都是Juce库里面Core模块的内存部分,除了骨灰级C++爱好者之外,貌似大家对这些都不是非常感兴趣.相信大家更想知道Juce是怎么用于产品开发,而对于它的构成不是非常感兴趣. ...

  10. mysql-connector-java与mysql版本的对应

    记录下mysql-connector-java与mysql版本的对应关系,已方便以后参考,这是最新版本对应, 时间:2017年5月23日 官网文档地址: https://dev.mysql.com/d ...