[练习]使用dx.bat、dexdump.exe、javap、Baksmali

这几个工具的关系可以这样描述:

用例:

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));
	}
}

  

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);
	}

Javap可以反编译class得到Java字节码,命令是:

javap -c -classpath . Hello

就不使用了。

DEX反汇编工具Baksmali

用法是:

java -jar baksmali.jar -o baksmaliout Hello.dex

可以在baksmaliout目录下生成Hello.smali文件,然后用文本编辑器打开可以看到foo()函数的代码,也有上面的add-int,sub-int等等。

谷歌被墙了,GoogleCode上不去。不搞了。

注意Smali是Dalvik虚拟机指令语言,所以dexdump.exe搞出来的Dalvik字节码跟Baksmali反汇编出来的smali语言是一样的。

dexdump比较简易所以一般用Baksmali吧。

[练习]使用dx.bat、dexdump.exe、javap、Baksmali

时间: 2024-12-07 01:58:19

[练习]使用dx.bat、dexdump.exe、javap、Baksmali的相关文章

window下批处理操作:bat文件中调用.bat和.exe文件

文件名test.bat rem 启动GTRManager.exe start cmd /k "D:\GTRManager_old\GTRECM\GTRManager.exe" ping 127.0.0.1 -n 10  rem 启动start.bat D: cd D:\v2r3c06spc100_spe_hutaf\HutafAgent start cmd /k "" call start.bat ping 127.0.0.1 -n 10  rem 启动agentW

bat转exe工具 QuickBFC v2.070 完美汉化版

经常使用批处理bat程序,为了防止源文件被随便修改,需要编译为exe格式运行,QuickBFC是目前用过的比较不错的工具,支持自定义图标和一些其他功能. 在附件中提供的是汉化版.

bat启动.exe的应用程序

新建一个文本文档,编写如下,完成后保存将后缀名txt改为bat即可. rem 启动***(要启动的服务名) @echo off rem  程序安装的顶层目录 d: rem 设置显示文字颜色 color 0a rem 修改当前目录到.exe下 cd d:/***/***/ rem 启动 ***.exe ============================= rem 注释作用不执行. @echo off:将ECHO状态设置为OFF,将不显示命令行.

使用dx命令在cmd环境下执行的正确方法,我用的版本android4.4.2,jdk1.8

一.首先介绍几条命令: 将Hello.java文件编译成Hello.class文件F:\adt-bundle-windows-x86_64\sdk\build-tools\android-4.4.2>javac -source 1.6 -target 1.6 Hello.java 将Hello.class文件反编译java汇编代码F:\adt-bundle-windows-x86_64\sdk\build-tools\android-4.4.2>javap -c -classpath . He

[转] Gradle: 此时不应有 Androidandroid-studiosdk oolslib\find_java.exe。解决方法

上述问题主要是java路径的问题,这里主要给出解决方案,至于为什么这么解决的,大家可以学学bat语言.想问的可以留言我. dx.bat 根据安装目录,我的是D:\Program Files (x86)\Android\android-studio\sdk\build-tools\android-4.2.2\dx.bat.然后用笔记本打开,在29~33行(我用的是edit plus,txt可能不现实行数,大家能找到下面对应的就行). 然后将下面的代码替换 ---------------------

aapt,adb,aidl,dx工具的使用

Android自动化打包1:aapt使用详解 分类标签: APK 什么是aapt? 执行命令: C:\Users\Xiaopeng>aapt Android Asset Packaging Tool 1.列出apk包的内容 aapt l[ist] [-v] [-a] file.{zip,jar,apk} 注:filepath是apk存放的路径  aapt l -v filepath/..apk:以table的形式列出来(不过我用起来老是出,win7和xp都一样,大家可以试一下)  aapt l

JDK自带反编译工具javap

在JDK的bin文件夹下,有许多自带工具: javap就是其中的一个,对应为 javap.exe javap可反编译查看Java编译器编译生成的字节码文件, 语法: javap [ options ] class options: -help 帮助 -l 输出行和变量的表 -public 只输出public方法和域 -protected 只输出public和protected类和成员 -package 只输出包,public和protected类和成员,这是默认的 -p -private 输出所

AS问题解决系列1—Unable to execute DX错误

http://my.oschina.net/1pei/blog/478968 摘要 在将一个开源Android代码import到Android Studio 1.2.2中时,解决了编译期间出现的“Unable to execute DX(Multiple dex files define)”问题,并学习了DX工具在应用程序编译期间所起的作用. 今天在将一个开源Android代码import到Android Studio 1.2.2中,在编译期间出现一个“Unable to execute DX”

运行批处理bat文件不出现黑框

.bat批处理文件运行时的cmd窗口是无法隐藏的,如果必须隐藏,需要采取间接的方法: 使用bat转exe的软件,有些软件可以在转换过程中让程序在后台运行: 使用vbs来运行bat,代码如下: DIM objShell set objShell=wscript.createObject("wscript.shell") iReturn=objShell.Run("cmd.exe /C c:\move.bat", 0, TRUE)