【安卓逆向】继续学习,体验dalvik汇编语言,并且尝试编译运行成功!

这个小东西看似不怎么复杂,但是也让花了我一段时间,弄清楚里面的一些规矩。

总结一下,有如下几点:

1、.method 作为方法的开始,.end method 作为方法的结束,一定要加上这一句,否则爆出来的错误根本不知道怎么解决,如图:


2、做smali文件的时候,文件名应该与文件中定义的类名一致。这个规则和java是一样的,java定义的public类的类名也必须和文件名一致。

3、生产的dex文件的文件名必须是classes.dex,否则,dalvik虚拟机将无法找到类,就是这个小东西让我花了一点时间,嘿嘿,还是被我研究出来了。

4、成功的运行出结果的图:



最后,总结一下编译smali文件并且运行的整个过程:

1、编写smali文件,比如hello.smali ,调试错误,注意上面提示的要点;

2、编译时候应用的语句

   java -jar smali.jar -o classes.dex hello.smali

   其中dex的名字必须是classes。接着会在当前目录下生成classes.dex

  无法找到smali.jar,就把他放在同一目录下。

3、把classes.dex 打包成zip ,按理任何压缩包形式都可以的,这里不做尝试了,压缩包的名字任取

4、把压缩包装入安卓虚拟机中:

  adb push hello.zip /data/local/

5、在shell模式运行程序

adb shell dalvikvm -cp /data/local/hello.zip hello


就可以看到运行结果。


很快的就又看完了一章,尽管对里面众多的语法细节不是很熟悉,但是和intelx86上的汇编语言很类似,而且也了解到了许多底层的安卓原理,很是受启发。

为了将针对我的项目进行深入的研究,如何有效的hook安卓SDK。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值