![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
逆向
文章平均质量分 62
XUYsusuj
这个作者很懒,什么都没留下…
展开
-
逆向之汇编(4.3),修改EIP的汇编指令
写在前面:学习汇编时,不要去死记指令,而要领会它的本质,并且可以用不同的方式重现EIP:标准寄存器(非通用),用来放cpu下一步执行的操作(一般是内存编号?)1.JMP指令JMP 寄存器/内存/立即数等价于MOV EIP,寄存器/内存/立即数...原创 2021-06-12 01:01:25 · 543 阅读 · 0 评论 -
逆向之汇编(EBP寻址)
1.寄存器传参和堆栈传参(1)寄存器(2)堆栈传参ESP寻址2.ESP寻址的缺点(前提:用堆栈传参)在堆栈中存些值,ESP(栈顶指针)就会发生变化,于是下面的esp寻址就要更新。举例:当函数中,要用到寄存器来存储参数,如下图,蓝色圈圈里面的数值将很麻烦...原创 2021-06-20 21:46:17 · 832 阅读 · 0 评论 -
逆向之汇编(堆栈平衡&&函数)
一 . 基本概念函数是什么:一些指令的集合。如何调用函数:用 call指令为什么:(对比jmp指令)参数:返回值:二. 用堆栈的方式传递参数如果有10个参数怎么办?——没有那么多寄存器。向堆栈push1~5个数接着call指令在(call指令对应的)特定地址依次:ADD EAX,DWORD PTR DS:[ESP+4]ADD EAX,DWORD PTR DS:[ESP+8]…(共5个)RET(返回栈顶所知内存,即call指令下面的内原创 2021-06-20 18:01:17 · 419 阅读 · 0 评论 -
逆向之汇编(4.2),堆栈相关的汇编指令
堆栈:一块内存,操作系统在程序启动时就已经申请好了,供程序执行时使用(如存临时变量)。与数据结构里的“堆栈”无关原创 2021-06-10 00:28:04 · 422 阅读 · 2 评论 -
逆向之汇编(4),一些汇编常用指令
1.MOV指令2.ADD指令加法将eax和ecx初始化为1和2执行:add eax,ecx意味着:eax和ecx里的数据相加,并将结果返回给前者(即eax)(下面的指令同理)f8后:3.SUB指令减法初始化eax和某内存地址(的数据)为3和9sub byte ptr ds:[0022ffc4],al4.与AND指令与运算初始化eax和某内存地址为3和6(十六进制)and byte ptr ds:[0022ffc4],al3和6 与运算==0010-原创 2021-06-07 20:48:16 · 637 阅读 · 1 评论 -
逆向之汇编(3),内存(2),存储模式
内存—1.存储模式上图,由上到下是内存的低位到高位上图,从左到右,从数据低位到数据高位1A:是一个字节(八位)大端与小端模式是由编译器决定的,这里比较模糊。- 大端模式(大多手机端应用)数据低位在(内存)高位,数据高位在(内存)低位MOV WORD PTR DS:[0x00000000],0x1A2C- 小端模式(x86上大多应用程序采用)数据低位在(内存)低位,高位在(内存)高位MOV WORD PTR DS:[0x00000000],0x1A2C注:MOV原创 2021-06-07 19:53:11 · 122 阅读 · 0 评论 -
逆向之汇编(3),内存
1.每个应用程序都会有自己的独立的4GB空间如图:进程:运行中的程序这里的4GB并非“真正的分了4GB内存条”,意味着,在这个进程A中,当真正读、取某个内存时,操作系统将要用的内存映射到真正的物理内存中。物理映射:不是真正的内存条,与它还有一个映射。我们在编程时所说的“内存”就是所谓的“假的”4GB内存1字节=8bit1kb=1024字节1MB=1024KB1GB=1024MB2.内存地址内存太大没法起名字子(不像32位寄存器),所以只能编号。当我们想从内存中存储数据原创 2021-06-06 19:04:20 · 138 阅读 · 0 评论 -
逆向之汇编(2),寄存器
寄存器定义:cpu中用来存储数据的地方大小:按CPU的类别32位CPU:有8,16,32位的寄存器64位CPU:8,16,32位的寄存器问:为什么如今大多是64位,我们依旧还要学32位的(32位CPU到64位CPU并没有整体结构上的变化,只是增添了内容)部分程序依旧是32位的(???)...原创 2021-06-05 00:24:07 · 174 阅读 · 3 评论