代码还原的技术: Unidbg调试浮点数运算(一)
一、目标在做代码还原的时候,经常能看到一些奇怪的寄存器和奇怪的指令:vldrs15,可以看出两个区别,一个是寄存器不一样,普通运算使用的寄存器是R0Rx,浮点数运算使用的是D0Dx(其实还有S0Sx),另一个是指令不一样,普通运算是MOV、MUL,而浮点数运算使用的是VMOV,VMUL,感觉就是普通运算的VIP版。第一个知识点就出来了,V开头的指令
Wesley13 Wesley13
2年前
STM32 HAL库 IIC 协议库函数
/\第1个参数为I2C操作句柄第2个参数为从机设备地址第3个参数为从机寄存器地址第4个参数为从机寄存器地址长度第5个参数为发送的数据的起始地址第6个参数为传输数据的大小第7个参数为操作超时时间\/HAL\_I2C\_Mem\_Write(&hi2c2,salve\_add,0,0,PA\_BUFF,sizeo
Stella981 Stella981
2年前
Linux性能分析之上下文切换
而在每个任务运行前,CPU都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好CPU寄存器和程序计数器CPU寄存器,是CPU内置的容量小、但速度极快的内存。而程序计数器,则是用来存储CPU正在执行的指令位置、或者即将执行的下一条指令位置。它们都是CPU在运行任何任务前,必须的依赖环境,因此也被叫做C
Wesley13 Wesley13
2年前
1 汇编实现简单的算数运算
1汇编实现简单的四则运算1.1加法inta\30;intb\20;intc;//cab;asm("mov%1,%0\\n\\t"//mov操作数写入寄存器"add%2,%0"//a
Stella981 Stella981
2年前
Python进程、线程、协程的对比
1\.执行过程每个线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在进程中,由进程提供多个线程执行控制。每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。协程,又称微线程,Coroutine。执行过程中,在子程序内部可中断,然后转而
Wesley13 Wesley13
2年前
8086汇编中的标识寄存器详解
每天都在学习。写点笔记。remark。8086汇编中的标识寄存器叫flag。16位每一位都标识不一样的含义,1514131211(OF)10(DF)9(IF)8(TF)7(SF)6(ZF)54(AF)32(PF)10(CF
Stella981 Stella981
2年前
JVM运行机制(非原创)
文章大纲1.JVM基本概念2.JVM的体系结构3.JVM启动流程一、JVM基本概念1.Java虚拟机(JVM)是可运行Java代码的假想计算机2.Java虚拟机包括类加载器、一组寄存器、方法区、一个垃圾回收堆、直接内存、一个栈、和一个存储方法域、PC寄存器等3.Java编译、运行流程如
Wesley13 Wesley13
2年前
Java内存管理
一、Java内存分类1、Java有几种存储区域?\寄存器\在CPU内部,开发人员不能通过代码来控制寄存器的分配,由编译器来管理\栈\在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域,即栈顶的地址和栈的最大容量是系统预先规定好的。\优点:由系统自动分配,速度较快。
Wesley13 Wesley13
2年前
18 HTML标签以及属性全
基本结构标签:<HTML,表示该文件为HTML文件<HEAD,包含文件的标题,使用的脚本,样式定义等<TITLE</TITLE,包含文件的标题,标题出现在浏览器标题栏中</HEAD,<HEAD的结束标志<BODY,放置浏览器中显示信息的所有标志和属性,其中内容在浏览器中显示.
Wesley13 Wesley13
2年前
C语言内存优化——继续含泪总结
之前分析了基本数据类型的优化,现在开始涉及全局和局部变量的优化,话说这个东西我从没想过还能这样优化的喂!全局变量/Globalvariables全局变量不会被分配在寄存器上,修改全局变量需要通过指针或者调用函数的方式间接进行。所以编译器不会将全局变量存储在寄存器中,那样会带来额外的、不必要的负担和存储空间。所以在比较关键的循环中,我们要