- 2024-11-19从汇编看函数调用传参过程
1示例代码#include<stdio.h>intfunc(intparam1,intparam2,intparam3){intvar1=param1;intvar2=param2;intvar3=param3;printf("var1=%d,var2=%d,var3=%d",var1,var2,var3);returnvar1;}
- 2024-11-18笔记本(2)
汇编代码的一些前置知识:;立即寻址方式moveax,11;将11赋值给eaxaddeax,114504;eax加上114504subeax,1;eax减去1;寄存器寻址方式movebx,0x36d;将0x36d赋值给ebxmovedx,ebx;将ebx的值赋值给edx;直接寻址方式movec
- 2024-11-11c++ 对于传递引用和传递值的理解
首先先上一段c++代码,可以看出foo函数参数是引用类型,bar函数参数是值类型typedefstructA{intx;inty;}A;voidfoo(A&a){ra.x++;}voidbar(Aa){a.x++;}intmain(){Aa={1,2};foo(a);bar(a);return0;}在vscode
- 2024-11-09函数的栈帧空间创建与销毁全过程(详解~)
目录一.什么是函数栈帧?二.理解函数栈帧的创建能解决哪些问题?三.创建函数栈帧空间的之前认知3.1什么是栈3.2认识相关寄存器3.3汇编指令四.创建和销毁全过程4.1预备知识4.1.1调用堆栈4.2打开反汇编4.3函数栈帧创建编辑4.4函数栈帧销毁一.什么是函数栈
- 2024-11-09反汇编命令学习以及分析越界和空指针问题
1,反汇编命令行(1)move语法格式:movdestination,source例如:moveax,0x1;将立即数1复制到eax寄存器。立即数到寄存器mov[ebx],eax;将eax寄存器的值复制到ebx寄存器指向的内存地址,寄存器到内存moveax,ebx ;将ebx寄存器的值复制到eax,寄存器到寄存器moveax,[ebp-4]
- 2024-11-02【Linux安全】Shellcoding
原创haidragon安全狗的自我修养“面向安全专业人员的LinuxShellcoding”今天我们将学习LinuxShellcoding并学习实践知识。shell代码编写shellcode是了解有关汇编语言以及程序如何与操作系统交互的更多信息的好方法。为什么红队成员和渗透测试人员编写shellcode?因
- 2024-10-31变形恶意代码
成绩《实验3:变形恶意代码》实验报告目录一、实验目标 3二、实验工具 3三、实验内容 31.任意编写一个程序,用VisualStudio2022 32.用OD打开该EXE程序,改变开始部分的代码如下: 43.再次用OD打开修改后的EXE,发现病毒变了,代码莫名其妙了。 7四、实验心得 7一、实验目标理解变形的原
- 2024-10-30shellcode编写实验
作业题目shellcode广泛用于许多涉及代码注入的攻击中。编写shellcode是相当有挑战性的。虽然我们可以很容易地从互联网上找到现有的shellcode,但是能够从头开始编写我们自己的shellcode总是令人兴奋的。shellcode中涉及到几种有趣的技术。本实验室的目的是帮助学生理解这
- 2024-10-24指令2(不完整)
一、CMP指令MOVEAX,100MOVECX,100CMPEAX,ECX 这个主要是通过观察Z位来判断EAX和ECX两个数相不相等先用mov将eax和ecx变成100再进行相减,得到eax为0ecx为100,z位为1再将eax改成100,把所有标志寄存器改为0,输入指令CMPEAX,ECX 只有标志寄存器发生
- 2024-10-23汇编语言
寄存器RIP存放下一条指令的偏移地址RSP存放当前栈帧的栈顶偏移地址RBP存放当前栈帧的栈底偏移地址RAX通用寄存器。存放函数的返回值汇编实际中执行指令时,EIP已经移动到下一行了cmp语句cmpa1,0x61suba1,0x61本质a1-0x61a1=a1-0x61不同a1不会赋值a1
- 2024-10-23ctfshow-pwn-前置基础
pwn5运行文件,所以我们直接下载文件在虚拟机里运行即可(命令./......)原理:用IDA打开elf,里面只有一个start函数,IDA反汇编的结果是将dword_80490E8指向的内容写入后退出,进入dword_80490E8查看写入的东西对16进制"R"一下转化为字符,得到下面的字符串,因为是小端序,所以字符串的正确形
- 2024-10-20101 - Lecture 8
汇编语言、指令执行、CPU寄存器和内存Executionofinstructions指令执行取指-执行循环(fetch-executioncycle):•CPU遵循“取指-执行”循环。取指阶段对于所有指令都是一致的,而执行阶段则取决于指令的类型。指令类型:•CPU使用不同类型的指令,这些指令可以组合起来完
- 2024-10-20基于x86_64汇编语言简单教程5: 寻址模式与gdb调试
目录寻址模式gdb调试示例文件打断点办法1:给函数名称和行号打上断点办法2:在地址上打断点打印变量layout命令打印十六进制(特殊)countformatsize再次介绍mov寻址模式我们无非就是频繁的跟数据自己打交道,那么问题来了,我们可以如何找到这些数据呢?这就是我们这篇教
- 2024-10-18平衡堆栈
理解并观测函数调用母函数做什么,子函数做什么cdecl调用约定#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>int__cdeclmethod(intx,inty){returnx+y;}intmain(){__asmmoveax,eax;//此处设置断点method(1,2);return0;}可以看出__cdecl就是C
- 2024-10-10C语言函数栈帧的创建与销毁(32)
文章目录前言一、什么是函数栈帧?二、理解函数栈帧能解决什么问题?三、函数栈帧的创建和销毁解析什么是栈?认识相关寄存器和汇编指令四、解析函数栈帧的创建和销毁预备知识函数的调用堆栈准备环境转到反汇编函数栈帧的创建函数栈帧的销毁五、回答开篇总结前言应该是
- 2024-10-01操作系统:保护模式(二)内存模型
平坦内存模型现代操作系统一般不会使用过于复杂的分段机制,而是采用平坦内存模型+分页模型来管理内存。平坦内存模型(FlatMemoryModel),这是现代操作系统(如Linux和Windows)常用的内存模型。在这种模型中,所有段的段基址都为0,段界限为4GB,使得整个内存空间看起来像一个连续的内
- 2024-09-28从汇编视角解析函数调用中的堆栈运作
引言汇编语言是计算机硬件操作的最直接表达方式,通过汇编代码可以深入理解计算机底层的工作机制。本文将以一个简单的C语言代码为例,深入分析其对应的汇编代码中的堆栈变化,探讨计算机在执行过程中如何通过堆栈来进行函数调用、参数传递和结果返回。C语言代码与汇编代码概述我们
- 2024-09-28深入汇编:计算机工作机制解析
深入汇编:计算机工作机制解析计算机的工作原理计算机的工作原理可以概括为以下几个步骤:输入:用户通过键盘、鼠标或其他输入设备提供数据。处理:CPU(中央处理单元)根据程序指令处理数据。存储:内存和硬盘等存储设备用于保存数据和程序。输出:处理结果通过显示器、打印机等输出设备
- 2024-09-26标志寄存器
一、 1、进位标志寄存器CF(CarryFlag):如果运算结果的最高位产生了一个进位或借位,那么其值为1,否则为0MOVAL,0xEF MOVAL,0xFEADDAL,2
- 2024-09-20++i与i++在效率上的细微差别
在一些特定的使用中,i++可能将原值用中间量存起来以待使用,下面看相关程序的汇编代码(使用gcc)。i++源程序:#include<stdio.h>intmain(){ inti=1; printf("%d\n",i++); return0;}i++汇编:main:.LFB0: .cfi_startproc endb
- 2024-09-10gdb动态调试初步学习
CTF题目simple-check-100先分析主程序可以得出需要通过check_key然后就可以输出flag了gdb启动在main函数那里打一个断点r运行到断点位置n单步调试直到testeax,eax查看eax的值ireax设置eax的值为1set$eax=1c继续直接运行完
- 2024-09-08C++11/14/17/20 新特性反汇编分析1
区间for迭代类似于java中的foreach看个例子:数组的区间for迭代我们从第一行开始看,首先把数组a的地址放到eax中,再把eax的值放到[ebp-28h]中,也就是[ebp-28h]存储了元素的首地址,同理[ebp-34h]也存了a的首地址(这里猜测可能是多个变
- 2024-09-05编译原理项目——C++实现C语言编译器输出为gcc级汇编(代码/报告材料)
完整的代码材料见文章末尾以下为核心内容和部分结果项目介绍function.cpp实现了共有的函数lexer.cpp词法分析器get_predict_table.cpp获取预测分析表LR.cpp语法分析generate.cpp语义分析中间代码生成to_asm.cpp目标代码生成部分核心代码LR分析#include"co
- 2024-09-04神奇的C语言输出12天圣诞节歌词代码
12天圣诞节程序怎样运行?1988年,一个令人印象深刻且令人敬畏的C代码,代号为xmas.c,在国际混淆C代码竞赛中获胜。该程序甚至比其输出的“压缩”类型还要小,代表了文本压缩标准的全新方式。评委们认为,这个程序像是随意敲击键盘所得到的。但该程序神奇地打印出12天圣诞节的歌词,仅仅
- 2024-09-02《英雄无敌》3完整版complete(英文)——免cd修改
一、概况《英雄无敌》3,在是魔法门6取得巨大成功,又在《英雄无敌》2大热后,newworldcomputing大力开发并完善的一款益智类策略游戏。最初版本《埃拉西亚的光复》(简称ROE有8个种族,城堡(Castle)、塔楼(Tower)、壁垒(Rampart)、要塞(Fortress)、据点(Stronghold)、地狱(Inferno)、墓园(Necropolis)