美文网首页逆向
JVM汇编语言smali

JVM汇编语言smali

作者: 修符道人 | 来源:发表于2019-10-23 09:01 被阅读0次

smali语法:

有点类似于JNI的语法
https://blog.csdn.net/pinksofts/article/details/82791806 (讲的很详细)
https://blog.csdn.net/yuanguozhengjust/article/details/80493963
https://blog.csdn.net/qq_34149335/article/details/82699029
https://blog.csdn.net/qq_36252044/article/details/86636885
https://blog.csdn.net/jaysong2012/article/details/41007745 (总结的很简单)
https://blog.csdn.net/qq373432361/article/details/49557579 (语法文档查询)

常用语句:switch、try-catch
https://blog.csdn.net/qq_32113133/article/details/85163277

我总结一下我的认识:
1.smali文件,先看文件的前3行的描述信息,清楚这个文件的性质(类还是内部类,谁的内部类。)
2.记住smali语法是基于寄存器的,所以原来java很直接的赋值与获取操作,都会间接通过vxxx寄存器。(记住这个规律)
3.不知道smali代码咋写时,可以写个简单的demo反编译出来。
4.写代码一定注意.locals数量的同步

  1. :cond_x和:goto_0是用来是控制语句关键字,跳转的时候不要蒙蔽,可以写个简单的demo测试 。
    6.不同的smali文件夹下的类可能会相互跳转,要注意。

smali语法实战:

插入日志

https://www.52pojie.cn/thread-665362-1-1.html

1.最简单的实战demo

https://www.it610.com/article/4638551.htm (麻雀虽小,五脏俱全)

2.AndroidStudio调试Smali

https://blog.csdn.net/ausboyue/article/details/80189184

https://blog.csdn.net/qq_34149335/article/details/81668503 (这里我要纠正一下作者的一个观点:说app端口是8600和8700的并没有错,关键清单里debugable要设置为true,然后DDMS就会显示8700或者8600)
https://www.cnblogs.com/foundkey/p/10256984.html (不必使用adb forward tcp:10001 jdwp:26793,直接使用8600或者8700进行debug即可。)
https://www.jianshu.com/p/9843e80f5ac5

IDEAAttach前先要执行:
adb shell am start -D -n com.mosheng/com.mosheng.view.activity.AppStartPager

多次Attach报错:adb kill-server再adb start-server一下,如果还不行,重启手机。


image.png

调试技巧

充分利用step over与step into的技巧,在碰到线程时step over就不好使了,用step into可以追踪到方法,想退出step into的方法,可以step out。

3.借助工具

unicode码转中文: http://tool.chinaz.com/tools/unicode.aspx (smali里的中文都是\u码,转成中文便于理解。)

as的java2smali插件:https://www.jianshu.com/p/cdde8121c823

4. 如何拼接字符串

https://blog.csdn.net/weixin_33841503/article/details/91443117

smali与dex 、Java互转

https://www.jianshu.com/p/fb9aec070c0a (纠正一下:smali与dex互转的工具写反了)

image.png

smali与baksmali

smali与baksmali的官网下载地址:https://bitbucket.org/JesusFreke/smali/downloads/
最新用法:https://www.jianshu.com/p/b2e5da2efb22

smali反编译经验总结:

  • 抓住重点方法addBookMark。
  • 全面分析,在最简单的地方修改。
  • 数据分析,可以制造条件产生不同的数据,然后对比。

相关文章

网友评论

    本文标题:JVM汇编语言smali

    本文链接:https://www.haomeiwen.com/subject/upjcvctx.html