Android逆向基础知识Smali】的更多相关文章

什么是Smali: 我们用工具反编译一些APP的时候,会看到一个smali文件夹,里面其实就是每个Java类所对应的smali文件.Android虚拟机Dalvik并不是执行java虚拟机JVM编译后生成的class文件,而是执行再重新整合打包后生成的dex文件,dex文件反编译之后就是smali代码,可以说,smali语言是Dalvik的反汇编语言 JAVA和Smali数据类型对比: JAVA Smali V void Z boolean B byte S short C char I int…
[系统安全] 十六.PE文件逆向基础知识(PE解析.PE编辑工具和PE修改) 文章来源:https://masterxsec.github.io/2017/05/02/PE%E6%96%87%E4%BB%B6%E7%BB%93%E6%9E%84/   您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分析和恶意代码检测,"系统安全"系列文章…
Android核心分析(23)-----Andoird GDI之基本原理及其总体框架 2010-06-13 22:49 18223人阅读 评论(18) 收藏 举报 AndroidGDI基本框架 在Android中所涉及的概念和代码最多,最繁杂的就是GDI相关的代码了.但是本质从抽象上来讲,这么多的代码和框架就干了一件事情:对显示缓冲区的操作和管理. GDI主要管理图形图像的输出,从整体方向上来看,GDI可以被认为是一个物理屏幕使用的管理器.因为在实际的产品中,我们需要在物理屏幕上输出不同的窗口,…
应用基础知识 安装到设备后,每个 Android 应用都运行在自己的安全沙箱内: Android 操作系统是一种多用户 Linux 系统,其中的每个应用都是一个不同的用户: 默认情况下,系统会为每个应用分配一个唯一的 Linux 用户 ID(该 ID 仅由系统使用,应用并不知晓).系统为应用中的所有文件设置权限,使得只有分配给该应用的用户 ID 才能访问这些文件: 每个进程都具有自己的虚拟机 (VM),因此应用代码是在与其他应用隔离的环境中运行: 默认情况下,每个应用都在其自己的 Linux 进…
简介 前边具体操作和实战已经讲解和分享了很多了,但是一些android的一些基础知识,你又知道多少了,你都掌握了吗?这篇就由宏哥给小伙伴们既是一个分享,又是对前边的一次总结.为什么要对这些做一个简单的分享了,因为在现实具体工作中经常会遇到这样的问题,这里还是通过一个小故事来说明一下.   QA:“那个谁谁谁,我刚刚按照上一次那样操作这款款APP,我死活是跑不起测试脚本了.(内心独白:我去,这个奇怪的问题,一定是他给我的安装包有问题”) DEV:“嗯?还有这样的问题,那你看一下你手机和电脑连接好了…
apk 反编译大家都比较熟悉,这里只做一个笔记. 1 反编译 apk apktool d perfect.apk 这样就把资源文件解压缩了, classes.dex 也反编译成了 smali 文件 2 修改 smali 文件 得到 smali 文件,现在就可以对 smali 文件进行修改和添加自己的代码了. 当然可以进一步用  dex2jar (或者 enjarify) 处理将  dex 转成 java class 文件, 再用  jd-jui 等反编译成 java 代码. 现在 apk 基本都…
当smali修改代码出错举例1,log如下: 虚拟机层次: 1.本身做出了预测,寄存器v2是符合要求入参,暗示你这个也许是你想要的.VFY: register1 v2 type 17, wanted ref 2.下一句:报参数1不对,应该是String类型. VFY: bad arg 1 (into Ljava/lang/String;) 3.第三行,拒绝调用初始化.VFY:  rejecting call to Ljava/lang/StringBuilder;.<init> (Ljava/…
4.1 smali 基础 1.注释 smali中使用#来代表注释一行例如:# const-string v0, "aaa" #这句不会被执行 2.数据类型 V void,只能用于返回值类型Z booleanB byteS shortC charI intJ long(64位)F floatD double(64位) lit4.lit8.lit16.lit32.lit64表示字面值(直接赋值),数字是值所占用位的长度 long和double的值占用两个寄存器.例:一个在v0寄存器的dou…
Android Dalvik虚拟机的特点: l  体积小,占用内存空间小. l  专有DEX可执行文件. l  常量池采用32位索引值,寻址类方法名,字段名,常量更快. l  基于寄存器架构,并拥有一套完整的指令系统. l  提供生命周期管理.堆栈管理.线程管理.安全和异常管理以及垃圾回收等重要功能. l  所有的Android程序都运行在Android系统进程里,每个进程对应一个Dalvik虚拟机实例. 1.Dalvik虚拟机与Java虚拟机的区别 Java虚拟机运行的是Java字节码,Dal…
参考这个博客 http://www.cnblogs.com/wangtianxj/archive/2010/06/13/1757639.html http://blog.csdn.net/bupt073114/article/details/42298337 APK文件结构: AndroidManifest.xml                 配置清单 META-INF                                  签名 assets                   …