- 2024-11-13.NET Core 泛型底层原理浅谈
.NETCore泛型底层原理浅谈 简介泛型参考资料烂大街,基本资料不再赘述,比如泛型接口/委托/方法的使用,逆变与协变。泛型好处有如下几点代码重用算法重用,只需要预先定义好算法,排序,搜索,交换,比较等。任何类型都可以用同一套逻辑类型安全编译器保证不会将int传给string简单清
- 2024-11-13汇编角度看值传递类对象
首先奉上源代码classA{private:inti;public:A(){std::cout<<"defaultconstructoriscalled"<<std::endl;i=0;}A(int_i):i(_i){}A(constA&obj){std::cout<<"c
- 2024-11-12lec 02 arm汇编语言基础
Lecture02:ARM汇编基础Contents为什么学习ARM/ISA汇编从C到汇编理解arm汇编理解机器执行1为什么学习汇编和指令集架构?1.令人困惑的应用表现2.指令集架构ISA(InstructionSetArchitecture)CPU向软件(应用程序和操作系统)提供的接口。理解软件在CPU上的运行(OS设
- 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-11Mac 中安装 bochs 并启动
安装bochs直接使用brew进行安装,若没有下载brew工具,参见https://brew.idayer.combrewinstallbochs==>Fetchingdependenciesforbochs:libtoolandsdl2会自动安装libtool和sdl2工具,安装成功后默认安装目录为:/usr/local/Cellar/bochs/2.8创建软盘首
- 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-10-30四、常用寄存器
DS:内存段地址寄存器段地址、偏移地址与物理地址内存中数据的地址由段地址和偏移地址组成,其中段地址乘以16再加上偏移地址就是真实的物理地址。对于16进制的数来说,乘以十六就是整体向左移一位,例如:0xFE*16=0xFE0物理地址可以由多种段地址+偏移地址组合而成例如物理
- 2024-10-30三、常用汇编指令
MOV指令作用:数据移动movcx,ax //将ax寄存器中的值复制到cx寄存器中movdx,FFFF //将数据0xFFFF放到寄存器dx中moval,bh //将bx寄存器的高八位的数据复制到ax寄存器的低八位NOP:空指令指令、数据对齐可以有效地提高程序的性能,使用NOP指令,可以使得指令按字对齐,
- 2024-10-26【8086汇编】用栈来分解并显示数字
1.源代码数字范围:0~255xorax,axxorbx,bxxorcx,cxxordx,dxmoval,163movbh,10s1:divbhaddah,0x30movdl,almoval,7xchgah,alpushaxmoval,dlxorah,ahinccxcmpal,0jnes1movax,0xb800
- 2024-10-24二进制菜鸟的杂谈-调试与pwn
反调试技术NLFlagGlobalPEB的偏移当被调试的时候会有标志位:FLG_HEAP_ENABLE_TAIL-CHECK()FLG_HEAP_ENABLE_FREE_CHECK()FLG_HEAP_VALIDATE_PARAMETERS()一般为:moveax,fs:[30h]moval,[eax+68h]moval,70hcmpal,70h其实是因为isDebugger被检测到了进而影响
- 2024-10-24assembly2
汇编2寄存器(不同架构不同)8086中寄存器均为16位,可存放两个字节(1byte=8bit)。通用寄存器AX,BX,CX,DX用来存储一般性的数据,被称为通用寄存器。二进制数据在寄存器中是低位存在低地址,高位存在高地址。也可将一个寄存器分为H,L(高8位低8位)来做8位存储器。字在寄存器中
- 2024-10-24王爽汇编实验12
下面是实验十二的代码assumecs:codecodesegmentstart: ;do0的安装程序,只需要安装一次,以后无需此步骤 movax,cs movds,ax movsi,offsetdo0 ;设置ds:si指向do0程序所在位置 movax,0 moves,ax movdi,200h ;设置es:di指向中断
- 2024-10-21简单汇编教程9 字符串与字符串指令
目录字符串的指令movs字符串传送lods,stos使用cmpsb的使用SCASB的使用字符串你很熟悉了,我们定义了无数次了!%macroANNOUNCE_STRING2 %1db%2 %1_LENequ$-%1%endmacro当然,我们现在来学习一个比较新的定义方式,那就是跟C语言一样安插一个哨兵字符\0
- 2024-10-20基于x86_64汇编语言简单教程5: 寻址模式与gdb调试
目录寻址模式gdb调试示例文件打断点办法1:给函数名称和行号打上断点办法2:在地址上打断点打印变量layout命令打印十六进制(特殊)countformatsize再次介绍mov寻址模式我们无非就是频繁的跟数据自己打交道,那么问题来了,我们可以如何找到这些数据呢?这就是我们这篇教
- 2024-10-1930天自制操作系统(一)启动区
一、启动区 ORG 0x7C00 JMP entry DB 0x90 DB "HELLOIPL" DW 512 DB 1 DW 1 DB 2 DW 224 DW 2880 DB 0xf0 DW 9 DW 18 DW 2 DD 0 DD 2880 DB 0,0,0x29 DD 0xffffffff DB "HELLO-OS" DB "FAT12" RESB
- 2024-10-18局部静态变量的初始化观测
局部静态变量的初始化观测//全局变量intglobal=0x11111;intmain(intargc,char*argv[]){//局部变量inttemp=0x160;global=global+temp;return0;}6:intglobal=0x111111;7:intmain(intargc,char*argv[])8:{00401010push
- 2024-10-18常见逻辑语句逆向分析
Ifelse语句逆向分析#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(intargc,char*argv[]){intsum=0;for(inti=0;i<=argc;i++){sum+=i;}returnsum;汇编代码00401006movdwordptr[ebp-8],0;sum=0
- 2024-10-17BUUCTF之Sandbox-bad
BUUCTF之Sandbox-bad首先针对sandbox,我们需要有一个大概的认知,他是在一个代码执行环境下,脱离种种过滤和限制,最终成功拿到shell权限的过程,通常我们采用orw的方式来获取flag.orw全称onlyreadwrite,只使用readwrite函数将flag读取并且打印,shellcode分为三个步骤使用open函数
- 2024-10-15【汇编语言】寄存器(内存访问)(二)—— DS和[address]
前言
- 2024-10-14Wx64ST:一款轻松可修改的C语言Shellcode模板
原创Alpha_h4ckFreeBuf关于windows_x64_shellcode_templatewindows_x64_shellcode_template简称为Wx64ST,它是一款功能强大的Shellcode模板,该模板基于C语言编写,其简单、可扩展和易于修改等特性可以帮助广大安全研究人员轻松开发适用于Windowsx64的Shellcode。值得一提的是,
- 2024-10-10逆向基础 || x86汇编
x86汇编1.寄存器本环境寄存器大小为2字节=1字型=16bit早期的x86CPU只有8个寄存器,而且每个都有不同的用途,通过DOS环境下我们可以看到有各种寄存器,接下来就一步步的认识它们!AX-->ahalBX-->bhblCX-->chclDX-->dhdl上面4种
- 2024-10-10操作系统:内核的基本实现(一)屏幕输出与C语言支持
使用C语言cdecl约定HimuOSKernel遵守cdecl约定,在32位操作系统上,函数实参在线程栈上按照从右至左的顺序依次压栈(x86cdecl的参数总是在栈上)函数结果保存在寄存器EAX/AX/AL中浮点型结果存放在寄存器ST0中编译后的函数名前缀以一个下划线字符调用者负责清栈8比特或
- 2024-10-10手写X86——第五节——X86实模式下的编程介绍2(寄存器赋初值)