随笔分类 -  pc逆向

摘要:SHL(Shift Left),SAL(Shift Arithmetic Left) 逻辑左移和算术左移,运行结果是一样的,都是数据往左移动,然后在右边补零,高位进CF; SHR (Shift Right) 逻辑右移,数据往右移动,在左边补零。如1000 0000->0010 0000(逻辑右移两位 阅读全文
posted @ 2024-09-16 20:45 不会笑的孩子 阅读(430) 评论(0) 推荐(0)
摘要:寻址方式 CPU的操作模式 1.实地址模式 简称实模式,即模拟8086处理器的工作模式。此模式下的IA-32处理器相当于高速的8086处理器。实模式提供一种简单的单任务环境,可以直接访问物理内存和I/O空间,由于操作系统和应用软件运行在同一个内存空间中和同一优先级上(就是他们的权力是一样的),应此操 阅读全文
posted @ 2024-05-20 10:30 不会笑的孩子 阅读(60) 评论(0) 推荐(0)
摘要:CANARY(栈保护溢出标志) 这个选项表示栈保护功能有没有开启。 栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖站上的返回地址来让shellcode能够得到执行。当启动栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当但会真正返回的时候会验证co 阅读全文
posted @ 2024-05-17 10:32 不会笑的孩子 阅读(388) 评论(0) 推荐(0)
摘要:VC(Visual C++)编译器是Microsoft Visual Studio集成开发环境中的C++编译器,用于编译和构建C++应用程序。VC编译器有许多编译选项,用于控制编译过程和生成的可执行文件。以下是一些常见的VC编译器选项: 编译选项: /c:只进行编译,不进行链接。 /O1, /O2, 阅读全文
posted @ 2023-10-15 09:33 不会笑的孩子 阅读(202) 评论(0) 推荐(0)
摘要:计算机的开机,说着简单,但也有很多细节问题,大多数人并不是很清楚。 不过,大概顺序就是这样: BIOS程序运行-> 查找启动区->跳转到系统..... ##加载BIOS 首先,按下开机键之后,电源进行初始化。以确保硬件的供电可靠,准备好后,主板上的硬件电路会将一些存在于各硬件ROM里的程序加载到RA 阅读全文
posted @ 2022-10-12 21:31 不会笑的孩子 阅读(309) 评论(0) 推荐(0)
摘要:##:栈的功能 用于记录问题的依赖关系 保存函数的参数,局部变量和寄存器环境 每个函数都有自己的一个独立的栈空间 寻址站内数据的时候,栈底更稳定,栈底也定位一个函数的位置 ##_cdecl 参数从右往左传递,使用栈空间传递参数,调用放清理参数空间(支持不定参数) 如:printf 编译后命名为_fu 阅读全文
posted @ 2022-06-02 19:18 不会笑的孩子 阅读(39) 评论(0) 推荐(0)
摘要:##加法 加法对应的汇编add指令。如果是加1有可能就会使用inc指令 而加法也特别简单。配合上优化方式.可以很好还原的 //加法 int NumberOne = 0; int NumberTwo = 10; //scanf是防止优化 scanf("%d",&NumberOne); scanf("% 阅读全文
posted @ 2022-05-14 16:58 不会笑的孩子 阅读(166) 评论(0) 推荐(0)
摘要:#反汇编代码中的优化方式 ##一优化方式 ###优化方式分类 汇编中的加法、减法、乘法、除法 、 取模等等 都是优化方式。 ###优化方式的分类 常量折叠 常量传播 变量去除 归并优化 Cpu流水线优化 数学变换 不可达分支优化 代码外提优化 优化前提是在Release下且开启o2选项化速度的前提D 阅读全文
posted @ 2022-05-14 08:48 不会笑的孩子 阅读(216) 评论(0) 推荐(0)
摘要:恢复内容开始 ##Switch语法格式 Switch(表达式) { case 常量表达式1: 语句; break; case 常量表达式2: 语句; break; case 常量表达式3: 语句; break; default: 语句; break; } ##Switch注意事项 * case后面必 阅读全文
posted @ 2022-05-07 14:44 不会笑的孩子 阅读(138) 评论(0) 推荐(0)
摘要:##说明 将可执行程序反汇编,通过分析反汇编代码来理解其代码功能(例如各接口的数据结构等)然后用高级语言重新描述 这段代码,逆向分析原始软件的思路,这个过程就称作逆向工程(Reverse Engineering),有时也简单地称作逆向(Reversing).这是一项很重要的技能,需要扎实的编程功底和 阅读全文
posted @ 2022-04-24 10:59 不会笑的孩子 阅读(1380) 评论(0) 推荐(0)
摘要:##Switch语法格式 Switch(表达式) { case 常量表达式1: 语句; break; case 常量表达式2: 语句; break; case 常量表达式3: 语句; break; default: 语句; break; } ##Switch注意事项 * case后面必须是常量表达式 阅读全文
posted @ 2022-04-23 19:10 不会笑的孩子 阅读(129) 评论(0) 推荐(0)
摘要:##EFLAGS寄存器 ##进位标志CF(Carry Flag) 如果运算的最高位产生了一个进位或借位,那么,其值位1,否则其值为0 mov AL,0FF ADD AL,1 0X80+0X40 0X80:0 1000 0000 0X40:0 0100 0000 结果为:1100 0000 最高位并没 阅读全文
posted @ 2022-03-17 20:53 不会笑的孩子 阅读(496) 评论(0) 推荐(0)
摘要:##微内核操作系统的特点内核尽量缩小 ##windows内核包括了两大部分 ###操作系统内核(ntoskrnl.exe),另一部分则是迁移到了内核中即系统空间中的视窗服务(win32k.sys) #用户空间和系统空间 8086 80186cpu在寻址技术上还只能支持"实模式",还不能支持现代意义上 阅读全文
posted @ 2022-03-15 21:47 不会笑的孩子 阅读(596) 评论(0) 推荐(0)
摘要:##环境 VC6.0环境 ##空函数反汇编 #include "stdafx.h" void function(){ } int main(int argc, char* argv[]) { function(); printf("Hello World!\n"); return 0; } 我们通过 阅读全文
posted @ 2022-02-08 16:23 不会笑的孩子 阅读(367) 评论(0) 推荐(0)
摘要:##c语言if单分支结构所对应的汇编代码结构 #include "stdafx.h" int main(int argc, char* argv[]) { if(argc > 8 ) { printf("argc > 8"); if(argc > 50) { printf("argc > 50"); 阅读全文
posted @ 2022-01-07 20:21 不会笑的孩子 阅读(89) 评论(0) 推荐(0)
摘要:##堆栈 ###什么时堆栈 一块区域:临时存储一些数据,如果数据量很少就放在寄存器中 ###堆栈需要具备的功能 能够记录存了多少数据,能过快速地找到某个数据。 ###堆栈的优点 临时存储大量数据,便于查找 ###简单的堆栈模型 BASE,TOP是2个32位的通用寄存器,里面存储的是内存单元编号(内存 阅读全文
posted @ 2021-12-04 23:02 不会笑的孩子 阅读(53) 评论(0) 推荐(0)
摘要:##PE ###需要用到的工具 十六进制文本编辑器:winhex或者UltraEdit ###工具的使用 首先任何文件在计算机中存储都是0和1 上面两个工具就是用于查看文件在计算机中的存储内容 由于0和1比较冗长,所以使用十六进制来显示数据 ##可执行文件 ###什么是可执行文件 可执行文件 (ex 阅读全文
posted @ 2021-12-04 17:26 不会笑的孩子 阅读(630) 评论(0) 推荐(0)
摘要:##什么是通用寄存器 通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。 汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。 ##32位通用寄存器 | 寄存器 | 主要用途 | 编号 | 存 阅读全文
posted @ 2021-12-04 15:58 不会笑的孩子 阅读(1605) 评论(0) 推荐(0)
摘要:#数据宽度 ##计算机数据 在数学上的数字是没有大小限制的,可以无限大。但在计算机中,由于硬件的制约,数据是有长度限制的,超过数据宽度的数据就会被丢弃 无符号数:正数 有符号数:正数 和 负数 例子:数据宽度为4时,即数据只能存储4位二进制位00001111 ##无符号数: | 十进制 | 0 | 阅读全文
posted @ 2021-12-04 15:22 不会笑的孩子 阅读(161) 评论(0) 推荐(0)
摘要:#数据宽度 ##计算机数据 无符号数:正数 有符号数:正数、负数 当数据宽度为32位时: 无符号数00000000-FFFFFFFF 有符号数00000000-7FFFFFFF(正数) 80000000-FFFFFFFF(负数) 也就是 0正 1负 ##几个重要的计量单位 BYTE 字节 8位 1字 阅读全文
posted @ 2021-11-18 12:14 不会笑的孩子 阅读(165) 评论(0) 推荐(0)