Android逆向学习
文章平均质量分 68
根据《Android软件安全权威指南》练习跟学
Daylighttx
这个作者很懒,什么都没留下…
展开
-
Android逆向学习笔记1:Dalvik字节码规范(1)
Zygote创建Java虚拟机并注册JNI方法,创建服务端Socket,启动SystemServer进程。init进程是Android系统中用户空间的第一个进程,进程号为1。mul-int/2addr v0, v1:表示将v0,v1寄存器的值相乘,结果保存到v0寄存器中。常量池采用32位索引值,对类方法名,字段名,常量的寻址快;如果dx命令失败,可能是前面代码中自动加了包名,将其删去就好,或者直接复制上面代码保存。第一条指令是将v3,v4相加,结果存到v0寄存器中,add是加,int表明是整数类型。原创 2023-06-24 14:23:56 · 503 阅读 · 1 评论 -
Android逆向学习笔记1:Dalvik语言基础(2)
DVM有专用的指令集和专门的指令格式DEX。其一些特点如下:1、基于寄存器的设计。方法在内存创建后有固定大小的栈帧。2、如果整数与浮点数按位表示,可以用32位寄存器来存放。3、指令流以16位无符号整型为存储单元。原创 2023-06-25 20:45:23 · 547 阅读 · 0 评论 -
Android逆向学习笔记1:Dalvik指令集(3)
用于定义程序中用到的常量,字符串,类等数据。指令解释将数值符号扩展为32位后赋予寄存器vA将数值符号扩展为32位后赋予寄存器vAA将数值符号赋予寄存器vAA用于将数值右边的0扩展为32位后赋予寄存器vAA将数值符号扩展到64位后赋予寄存器对vAA通过字符串索引构造一个字符串,并将其赋予寄存器vAA通过字符串索引(较大)构造一个字符串,并将其赋予寄存器vAA通过类型索引获取一个类引用,并将其赋予寄存器vAA因为一个寄存器是32位,所以要先扩展到32位再赋值;原创 2023-06-26 19:59:19 · 578 阅读 · 1 评论 -
Android逆向学习笔记1:Dalvik字节码编程练习(4)
可以在Android Studio安装目录下的\plugins\smali\lib中找到smali.jar文件。新建一个文件写入以下代码,保存为HelloWorld.smali。最后如果出现写入的字符串“HelloWorld”即为执行成功。可以使用vscode中的smali插件,有语法高亮显示。然后通过adb将这个文件放入手机的sdcard目录下。通过以下语句将smali文件转化为dex文件。再通过adb执行dex文件。原创 2023-07-03 13:02:04 · 502 阅读 · 1 评论 -
Android逆向学习笔记2:APK结构(1)
class.dex:程序的可执行代码,如果开启了MutliDex,则会有多个DEX文件。AndroidManifest.xml:编译好的AXML二进制格式文件。res目录:程序中使用的资源信息。即一些图片,文字,布局等资源文件。resources.arsc:编译好的二进制格式资源信息。首先随便找一个apk文件,直接对其解压缩得到如下文件。META-INF目录:用于保存apk的签名信息。原创 2023-07-03 14:19:04 · 530 阅读 · 1 评论