汇编
虚构之人
夫学须静也,才须学也,非学无以广才,非志无以成学。
展开
-
操作系统真相还原第0章笔记
最近在看操作系统真相还原,这是第0章笔记很多知识点其实在逆向中都学过但是也有不少新的点使得理解更加深入是一本不错的书。原创 2022-12-22 21:17:35 · 235 阅读 · 0 评论 -
软件调试基础
作为一个程序员必须对软件调试的过程有一个基本的认识。原创 2022-07-12 21:15:51 · 1346 阅读 · 0 评论 -
PDE_PTE属性(US_PS_A_D)、页目录表基址、页表基址、2-9-9-12分页、TLB
PDE_PTE属性(US_PS_A_D)US位US位位于PDE和PTE下标位2的位置,U/S=0 特权用户U/S=1 普通用户例子:修改一个高2G线性地址的PDE/PTE属性,实现Ring3可读,比如:0x8003F00CP/S位(大页分页)大小为4MBPS位位于PTE的低7位。P/S位只对PDE有意义,PS==PageSize的意思,当PS==1的时候PDE直接指向物理页,无PTE,低22位是页内偏移。比如:之前的10-10-12寻找物理页的方式是10:页目录表10:页表12原创 2022-02-28 00:28:34 · 1138 阅读 · 0 评论 -
10-10-12分页与P/RW页属性
分页物理地址线性地址、有效地址、物理地址如下指令:MOV eax,dword ptr ds:[0x12345678]其中,0x12345678是有效地址ds.Base+0x12345678是线性地址如果Base是0则有效地址和线性地址是一样的。线性地址上述例子中0x12345678+ds.Base是线性地址。线性地址是不存在的真正的数据在物理地址,其中线性地址转换为物理地址是由CPU进行转换的。比如所有EXE里面的系统DLL其实都是存在于物理地址中,然后将对每个EXE都映射了一份线原创 2022-02-19 22:28:56 · 525 阅读 · 0 评论 -
中断门、陷阱门、任务段、任务门
中断门描述符中断门概述1.系统调用Windows没有使用调用门,但是使用了中断门。 Windows很多3环API最终都要使用0环的代码,是使用中断门实现的这种功能。注意:老的CPU是用的中断门而最新的CPU是使用的快速调用。2.调试在像OD这种调试工具中按F12下的断点就是将BYTE内容变为0xCC指令位int3这是中断门效果。中断门和调用门的区别中断门和调用门很相似他们最大的区别是查表的不同,调用门是使用的GDT表而中断门使用的是IDT表。IDT表概述IDT全名中断描述符表,原创 2022-02-13 16:50:38 · 4539 阅读 · 0 评论 -
段、GDT、调用门学习笔记
保护模式什么是保护模式x86 CPU的3个模式:实模式、保护模式、虚拟8086模式。AMD64与Intel64AMD在1999年的时候拓展了这套指令集,成为x86-64后改名叫AMD64,AMD是首先开发了64拓展,但是AMD的64位拓展并不支持32位,后来Intel也开发了64位拓展成为Intel64并首先做到了向下兼容32位。保护的特点段的机制、页的机制,段页机制主要是为了保护操作系统的数据结构,比如保护系统的GDT表和IDT表,关键寄存器比如CR0寄存器段寄存器结构什么是段寄存原创 2022-02-06 19:54:05 · 2010 阅读 · 0 评论 -
ShellCode原理以及编写
0x0 ShellCode编写注意事原理1)不能使用字符串的直接偏移即使你在C/C++代码中定义一个全局变量,一个取值为“Hello world”的字符串,或直接把该字符串作为参数传递给某个函数。但是,编译器会把字符串放置在一个特定的Section中(如.rdata或.data)。2)不能确定函数的地址(如printf)在shellcode中,我们却不能以逸待劳了。因为我们无法确定包含所需函数的DLL文件是否已经加载到内存。受ASLR(地址空间布局随机化)机制的影响,系统不会每次都把DLL文件加载原创 2021-07-02 11:06:52 · 2743 阅读 · 0 评论 -
ASM内存花指令
//随便写的混淆指令用于被探测到调试后执行迷惑调试人员,很多实现效率很差欢迎大家留言改正。_declspec(naked)void jmpFunction(DWORD Memory) { __asm { mov ebp,esp push ebp jmp dword ptr ss:[ebp+0x4] pop ebp retn }}_declspec(naked)void memoryCopy(void *SourceMemory,void *TargeMemory) { __a原创 2021-02-05 22:49:57 · 288 阅读 · 0 评论 -
反调试/反汇编技术、TEB/PEB部分说明
反调试技术WindowsAPIISDebuggerPresent查询PEB进程环境块中的ISDebugged标志CheckRemoteDebuggerPresent类似于IsDebuggerPresent函数,但是也可以检查其他进程NtQueryInfomationProcess提取一个给定进程的信息,第一个参数是进程句柄,第二个参数告诉我们它需要提取的进程信息类型,参数设置为ProcessDebugPort将会告诉你这个句柄标识的进程是否被调试手动检查数据结构(1)检查BeingDebu原创 2021-02-05 16:29:14 · 1410 阅读 · 0 评论 -
反调试ASM代码
#include<Windows.h>#include<iostream>using namespace std;_declspec(naked)void messageBoxAsm(const char *memoryASCII) { __asm { mov ebp,esp pushad push 0x0 push 0x0 push dword ptr ss:[ebp+0x4] push 0x0 call MessageBoxA popad原创 2021-02-04 19:15:43 · 193 阅读 · 0 评论 -
加壳与脱壳知识点(持续更新)
加壳与脱壳知识点1.壳的种类有几种壳分为压缩壳/加密壳/虚拟壳(1.1压缩壳)压缩壳调用压缩引引擎主要目的是对文件进行压缩减小文件大小(1.2)加密壳加密壳主要是保护软件防止被各种反跟踪技术来调试程序(1.3)虚拟壳虚拟技术应用到壳的领域,设计了一套虚拟机引擎,将原始的汇编代码转译成虚拟机指令,要理解原始的汇编代码,就必须对其虚拟机引擎进行研究,而这极大地增加了破解和逆向的难度及成本。2.常见的壳(2.1)压缩壳UPX、ASPack、PECompact(2.2)加密壳ASProte原创 2021-01-04 14:59:43 · 1312 阅读 · 0 评论 -
使用汇编实现判断字符串是否相等
#include#include<Windows.h>char i1[] = {“123456789”};char i2[] = {“123456789”};static _declspec(naked) int repzcmpsb(char i1[],char i2[],int size) {__asm {pushadmov ebp,espmov esi, dword ptr ds : [ebp + 0x24]mov edi, dword ptr ds : [ebp + 0x原创 2020-09-05 19:25:21 · 1571 阅读 · 2 评论 -
c++常见问题
自己整理c++问题,都是我自己提出来然后自己找的答案其中也有我自己的理解如果有错误请联系QQ:10242754401.请写出1个预处理器编译指令:2.预处理编译指令是以什么字符开头3.Int main(int argc char*argv[])argc和argv[]分别代表什么意思4.main程序运行成功和出现错误分别返回什么值5.名称空间限定符的作用是什么6.Using namespace声明的作用是什么7.unsigned的作用是什么8.typedef作用是什么9.Const、Cons原创 2020-09-19 19:32:03 · 398 阅读 · 0 评论 -
整理的51道汇编题带答案
自己整理的一些汇编题有些问题是我自己提出来的然后自己找的答案其中有我自己的理解,不能保证答案全部正确如果发现错误欢迎大家指正我的QQ:10242754401.写出4个传送指令:2.写出8个转移指令:3.写出7个运算指令:4.写出1个处理机控制指令:5.EFLAGS寄存器包括的标志位有那些他们的功能是什么:6.大小端模式的区别是什么:7.一串二进制第一位为1则是否为正数:8.请写出ADC指令的语义:9.请写出SBB指令的语义:10.有符号数和无符号数的区别是什么:11.无符号5的补码是多原创 2020-09-07 19:20:05 · 1600 阅读 · 0 评论