安卓软件安全与逆向分析

jvm虚拟机:指令集为零地址形式的指令集,即指令的源参数和目标参数都是隐含的,通过java虚拟机中提供的一种数据结构“求值栈”来传递。

dalvik虚拟机运行时也为每个线程维护一个PC计数器和调用栈,此调用栈 维护一份寄存器列表,寄存器的数量在方法结构体的registers字段中给出,DVM根据这个值来创建一份虚拟的寄存器列表。

Dalvik opcodes: http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html

For binary XML files, use a binary-to-textual XML converter like AXMLPrinter2

● For the DEX file, use dedexer

● Alternative products:

– Dexdump – comes with the Android SDK, less convenient to use than dedexer because e.g. it does not support labels, produces one large file, etc.

– Baksmali – a competing open-source DEX disassembler. Comes with a Dalvik bytecode assembler (smali)

DVM是作用特定架构的cpu上的,设计之处采用了ARM架构,arm架构的cpu本身集成了多个寄存器,dalvik将部份寄存器映射到arm寄存器上,还有一部分通过调用栈进行模拟。共65526个寄存器,取值范围v0 - v65535.

虚拟机中的每个寄存器都是32位的,描述指令时所说的位数表示的是寄存器数值的取值范围。

时间: 2024-08-10 02:10:20

安卓软件安全与逆向分析的相关文章

Android中的软件安全和逆向分析[二]—apk反破解技术与安全保护机制

在Android应用开发中,当我们开发完软件之后,我们不希望别人能够反编译破解我们的应用程序,不能修改我们的代码逻辑.实际上,在应用程序的安全机制考虑中,我们希望自己的应用程序安全性高,通过各种加密操作等来增大竞争对手的反编译破解成本.设想,竞争对手开发一个同样的应用程序需要10天,而破解我们的软件程序需要100天,那么势必会打消黑客程序员破解我们应用程序的念头.如何增加对手的破解成本,就需要考验我们应用程序的安全性有多高,加密技术有多强.一个优秀的应用程序,不仅能为用户带来利益,同时也能保护自

Android安卓破解之逆向分析SO常用的IDA分析技巧

参考: 网易云加密:http://apk.aq.163.com 网易云捕:http://crash.163.com 1.结构体的创建及导入,结构体指针等. 以JniNativeInterface, DexHeader为例. 解析Dex的函数如下: F5后如下: File->load file->parser c header file,导入Dex.h 上图中a1,右键转成结构体,选择dexheader,效果如下: 2.函数指针时的参数个数调整,不定参数等. 以__android_log_pri

Android逆向分析(2) APK的打包与安装

http://blog.zhaiyifan.cn/2016/02/13/android-reverse-2/ 2/18日增加对aidl和java编译的描述. 前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之鱼不如授之以渔,只有知道一些基本原理,才能让我们以后能自行解决更多问题. 那么,你知道么?从我们在Android Studio中,点击run,

一文了解安卓APP逆向分析与保护机制

"知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物由学"希望通过一篇篇技术干货.趋势解读.人物思考和沉淀给你带来收获的同时,也希望打开你的眼界,成就不一样的你. 以下为文章正文: 想知道Android App常见的保护方法及其对应的逆向分析方法吗? 网易云易盾资深安全工程师 钟亚平 3月17日,安卓巴士全球开发者论坛在重庆举办,网易资深安全工程师钟

c++反汇编与逆向分析 小结

第一章  熟悉工作环境和相关工具1.1 熟悉OllyDBG  操作技巧1.2 反汇编静态分析工具 IDA(最专业的逆向工具)    快捷键    功能     Enter     跟进函数实现     Esc       返回跟进处    A         解释光标处的地址为一个字符串的首地址     B         十六进制数与二进制数转换    C         解释光标处的地址为一条指令     D         解释光标处的地址为数据,没按一次将会转换这个地址的数据长度   

IOS逆向分析——GL脚本的提取

总结:要逆一个程序必须清楚地知道程序的结构和常用的API函数,不清楚一个程序而去逆出结果是不可能滴 首先是glsl脚本运行的全过程,第一步是为shader的运行创建一个容器GLuint glCreateProgram(void),第二步是把编译好的shader附加到程序void glAttachShader(GLuint program, GLuint shader),编译好的shader可以是多个所以第二步可以重复多步把每一个编译好的一一附加到程序,顶点shader和像素shader一一成对,

逆向分析智能窗帘频射协议

近来我热衷于对家庭自动化设备的破解,然后将它们添加到我的Homekit集成包之中.这事情要从几个月前说起,当时我爸订购了大批量的RAEX 433MHz射频电动窗帘,以替代老式的手动式窗帘. 注意:你可以在Spotlight网店搜索Motion Motorised Roller Blind找到该窗帘. 我对这个电动窗帘非常满意,有了它我就不用跑上跑下的去打开/关闭窗户,可是为了控制它们,你需要购买RAEX的遥控器.RAEX有许多不同类型的遥控器产品,其中我选择购买了以下两种遥控器: R 型遥控器

Android动态逆向分析工具ZjDroid--脱壳神器

项目地址:https://github.com/BaiduSecurityLabs/ZjDroid 前提条件: 1.Root手机一部 2.须要通过Xposed installer( http://dl.xposed.info/latest.apk)安装Xposed Framework; 一.ZjDroid工具介绍 ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者能够通过ZjDroid完毕下面工作:1.DEX文件的内存dump2.基于Dalvik关键指针的内存Ba

逆向分析底纹

工作需要会被要求还原某个证书底纹,一般解决的思路是到网上找,如果找到了就直接用,如果找不到了相同的就找近似的凑合用,如果连近似的底纹都没有那我们是不是就没有办法了呢?有的,我们可以直接逆向分析出它最基本的单元,然后用photshop的填充功能生成即可. 既然用的是逆向分析,那么我们应该知道正向是怎么回事! 一般证书底纹是由一张二方连续贴图或者四方连续贴图拼接而成的,我这里称这张贴图为原子贴图,原子贴图的特征为"它是底纹里面最基本的那个单位,不能被拆分了",只要制作好了这个原子贴图,那么