逆向工程权威指南
一点涵
2019年7月4日
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
学习打卡9:函数返回值
督促自己:2020-9-17学习记录:《逆向工程权威指南》上返回值x86中,通常通过EAX寄存器返回运算结果。返回值属于bty或char类型数据:存储在EAX寄存器的低8位--------AL寄存器返回值属于float类型数据:存储在FPU的ST(0)寄存器ARM系统,通常使用R0寄存器回传返回值。1.void型函数的返回值main()函数数据类型是void的时候,void类型函数的返回值、也就是主函数退出代码往往属于伪随机数。#include<stdio.h>void原创 2020-09-18 09:36:35 · 424 阅读 · 0 评论 -
学习打卡8:参数获取
督促自己:2020-9-16学习记录:参数获取:#include <stdio.h>int f (int a, int b,int c)( return a*b+c;);int main(){ printf("%d\n",f(1,2,3)); return 0;);x86MSVC关键汇编代码:从被调用方函数的数据栈的角度来看,外部参考的偏移量是正值,而局部变量的偏移量是负值。当需要访问栈帧(stack frame)以外的数据时,被调用方函数可把会变宏(原创 2020-09-16 22:40:21 · 238 阅读 · 0 评论 -
学习打卡7:scanf()函数和鲸鱼优化算法
督促自己:2020-9-15学习记录:《逆向工程权威指南》上scanf()函数:局部变量x:#include<stdio.h>int main(){ int x; printf("Enter X:\n"); scanf("%d",&x); printf("You entered %d...\n",x); return 0;}X86MSVC汇编:序言中,PUSH ECX指令作用不是为了保存EXC的值,是为了在栈内分配4个字节的空间、用来储原创 2020-09-15 18:04:05 · 1651 阅读 · 0 评论 -
学习打卡6:printf()函数 和 babydriver
督促自己:2020-9-14学习记录:《逆向工程权威指南》上printf()函数与参数传递#include<stdio.h>int main(){ printf("a=%d;b=%d;c=%d",1,2,3); return 0;};X86传递三个参数,在MSVC下的汇编:printf()函数的参数以逆序存入栈中;32位环境下,32位地址指针和int类型数据都占据32位/4字节空间,所以四个参数共占用:4x4=16字节“add esp,X”指令修正e原创 2020-09-15 15:09:47 · 441 阅读 · 0 评论 -
学习打卡5:栈与kernel base
督促自己:2020-9-11学习记录:《逆向工程权威指南》上函数序言和函数尾声函数序言汇编指令大致如下:push ebpmov ebp,espsub esp, X指令的功能室:在栈里保存EBP寄存器的内容,将ESP的值复制到EBP,然后修改栈的高度,以便为本函数的局部变量申请存储空间。函数尾声:mov esp,ebppop ebpret 0函数在退出时,要做启动过程的反操作,释放栈中申请的内存,还原ESP寄存器的值,将代码控制权还原给调用函数(callee)栈栈是CPU寄存原创 2020-09-11 18:40:00 · 508 阅读 · 0 评论 -
学习打卡4:堆漏洞的利用技术与技巧与堆风水学习
督促自己:2020-9-10学习记录:《逆向工程权威指南》上ARM64ARM64的CPU中可能运行于ARM模式,不可能运行于 Thmub 或者 Thmub-2 moshi ,所以它必须使用32位指令。STP(Store Pair) 指令是把寄存器的值存储到内存中的任意地址,明确是sp寄存器时,是存储在栈中。感叹号标志意味着其标注的运算会被优先执行。(这属于“预索引/pre-index”指令,对应“延迟索引/post-index”指令)在ARM64中,X29寄存器时帧指针,X30起着LR的作用原创 2020-09-10 22:56:10 · 2228 阅读 · 0 评论 -
每日打卡3:HelloWorld
督促自己:2020-9-8学习记录:《逆向工程权威指南》上Hello Word!cl 1.cpp /Fa 1.asm通过MSVC编译程序,/Fa选项将使编译器生成汇编指令清单文件,并指定汇编列表文件的文件名。.exe 文件生成过程:先生成 .asm 文件,然后会生成 .obj文件,再将之链接为可执行文件 .exe。在汇编指令清单里,所有函数(包括主函数)的函数体有标志性的函数序言和函数尾声。在函数的需要标志后就是call _printf指令。通过push,程序把字符串的指针推送如入栈,pri原创 2020-09-09 21:45:46 · 462 阅读 · 0 评论 -
学习打卡2:off-by-null
督促自己:2020-9-8学习笔记:《逆向工程权威指南上》12:指令集架构:x86指令集架构(ISA),opcode长度不同;ARM指令集架构(精简指令集RISC),opcode相同,机器码都封装在4个字节里面(ARM模式),或封装在2个字节里面(Thumb模式)x/86:函数返回值在eax中使用“栈”结构存储上述返回地址ARM:使用LR寄存器存储函数结束的返回地址BX LR 指令的作用就是跳转到返回地址MIPS:寄存器命名方式有两种:数字命名($0 ~ 31)和伪名称命名(原创 2020-09-08 18:11:08 · 971 阅读 · 1 评论
分享