Dalvikvm 命令调试

当Java程序运行时,都是由一个虚拟机来解释Java的字节码,它将这些字节码翻译成本地CPU的指令码,然后执行。对Java程序而言,负责解释并执行的就是一个虚拟机,而对于Linux而言,这个进程只是一个普通的进程,它与一个只有一行代码的Hello World可执行程序无本质区别。所以启动一个虚拟机的方法就跟启动任何一个可执行程序的方法是相同的,那就是在命令行下输入可执行程序的名称,并在参数中指定要执行的Java类。

dalvikvm的作用就是创建一个虚拟机并执行参数中指定的Java类,下面以一个例子来说明该程序的使用方法。

首先新建一个Foo.java文件,如以下代码所示:

  1. class Foo {   
  2.     public static void main(String[] args) {   
  3.         System.out.println("Hello dalvik");  
  4.     }  
  5. }  

然后编译该文件,并生成Jar文件,如以下代码所示:

  1. $ javac Foo.java  
  2. PATH=/Users/keyd/android/out/host/darwin-x86/bin:$PATH  
  3. $ dx --dex --output=foo.jar Foo.class  

dx工具的作用是将.class转换为dex文件,因为Dalvik虚拟机所执行的程序不是标准的Jar文件,而是将Jar文件经过特别的转换以提高执行效率,而转换后的文件就是dex文件。dx工具是Android源码的一部分,其路径是在out目录下,因此在执行dx之前,需要添加该路径。

dx执行时,--output参数用于指定Jar文件的输出路径,注意该Jar文件内部包含已经不是纯粹的.class文件,而是dex格式文件,Jar仅仅是zip包。

生成了该Jar包后,就可以把该Jar包push到设备中,并执行,如以下代码所示:

  1. $ adb push foo.jar /data/app  
  2. $ adb shell dalvikvm -cp /data/app/foo.jar Foo  
  3. Hello dalvik  
  4. 以上命令首 

以上命令首先将该Jar包push到/data/app目录下,因为该目录一般用于存放应用程序,接着使用adb shell执行dalvikvm程序。dalvikvm的执行语法如下:

 

  1. dalvikvm -cp 类路径 类名 

从这里也可以感觉到,dalvikvm的作用就像在PC上执行Java程序一样。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IDA Pro是一款强大的反汇编工具,可用于反汇编各种二进制文件,包括Android应用程序中的dex文件。以下是使用IDA Pro调试dex文件的步骤: 1. 下载并安装IDA Pro软件,并打开要调试的dex文件。 2. 在IDA Pro中选择“File” -> “Open”,然后选择要调试的dex文件。如果IDA Pro无法自动识别文件类型,请手动选择“DEX - Dalvik Executable”文件类型。 3. 等待IDA Pro分析dex文件。一旦分析完成,您将看到一个反汇编窗口,其中包含dex文件的反汇编代码。 4. 选择要调试的代码段,并在IDA Pro中选择“Debugger” -> “Process Options”。 5. 在“Process Options”窗口中,选择“Android Debugger”作为调试器,并选择要使用的调试器选项。您可以选择使用本地调试器或远程调试器,具体取决于您的需求。 6. 在“Process Options”窗口中,输入要启动的调试命令行。例如,如果您使用的是本地调试器,您可以输入“adb shell dalvikvm -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y”。 7. 单击“OK”按钮,以启动调试器并开始调试代码。 8. 在IDA Pro的调试窗口中,您可以使用各种调试命令,例如“run”、“step”、“breakpoint”等,来控制代码的执行。 9. 您还可以使用IDA Pro的其他调试工具,例如内存查看器和寄存器查看器,来进一步分析代码和调试问题。 总之,IDA Pro是一款功能强大的反汇编工具,可用于调试Android应用程序中的dex文件。通过遵循上述步骤,您可以轻松地使用IDA Pro调试dex文件,并深入了解代码执行的细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值