自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(216)
  • 收藏
  • 关注

原创 《intel开发手册卷3》读书笔记1

1)实模式:8086的寄存器只有16位,我们也习惯于称8086的工作模式为1·6位模式。后续的CPU为了保持兼容性,在芯片上了电以后,还必须运行于16位模式之下。这种模式还有个正式的名字叫做实模式。在实模式下,程序是不能通过内存管理单元间接访问物理内存的,而是直接访问物理内存。访问方式是通过“段寄存器:段内偏移”这种形式,计算方式为: 物理地址 = 段寄存器

2024-05-13 19:03:15 664 1

原创 《intel开发手册卷1》学习笔记3

—Call(调用过程)和RET(从过程返回)指令允许从一个过程(或子例程)跳转到另一个过程(或子例程),并随后跳转回(返回)到调用过程。因此,字符串操作可以从较高的地址开始,然后向较低的地址移动,也可以从较低的地址开始,然后向较高的地址移动。LDS(使用 DS 加载远指针)、LES(使用 ES 加载远指针)、LFS(使用 FS 加载远指针)、LGS(使用 GS 加载远指针)和 LSS(使用 SS 加载远指针)将远指针从内存加载到段寄存器和通用通用寄存器中。目标操作数指定目标指令的地址(指令指针)。

2024-05-10 13:58:19 444

原创 x64dbg中类似于*.exe+地址偏移

在CE和xdb中,形如*.exe+数字偏移形式的地址被称为模块地址,CE附加到进程后点击查看内存,显示如下图。但是xdbg如何关闭,倒不是很清楚,不过最新版本的xdbg sub后面的就是绝对虚拟地址。CE中可以关闭,从而显示绝对的虚拟地址,如下图所示。

2024-05-09 23:47:04 173

原创 《intel开发手册卷1》学习笔记1

在 IA-32 处理器上运行的任何程序或任务都有一组资源,用于执行指令和存储代码、数据及状态信息。这些资源(如图 3-1 所示)构成了 IA-32 处理器的基本执行环境。英特尔 64 处理器支持 IA-32 处理器的基本执行环境,以及 IA-32e 模式下的类似环境,它可以执行 64 位程序(64 位子模式)和 32 位程序(兼容性子模式)。基本执行环境由处理器上运行的应用程序和操作系统或执行程序共同使用。地址空间:在 IA-32 处理器上运行的任何任务或程序都可以寻址最大 4 GB 字节(

2024-05-08 16:22:55 626

原创 《intel开发手册卷1》学习笔记2

向量 32 至 255 为软件定义中断,可用于软件中断或可屏蔽硬件中断。请注意,处理器还定义了几个不指向 IDT 中条目的额外中断;其中最著名的是 SMI 中断。异常被分类为故障、陷阱或中止,具体取决于异常的报告方式以及导致异常的指令是否可以在不丢失程序或任务连续性的情况下重新启动。1)故障— 故障是一种通常可以纠正的异常,并且一旦纠正,就可以重新启动程序而不会失去连续性。当报告错误时,处理器将机器状态恢复到开始执行错误指令之前的状态。

2024-05-08 14:23:07 752

原创 MFC DLL注入失败一些错误总结

以下是dll绝对路径中均含有中文字符,会报错误:注入dll失败 Force load module failed:没有查找到地址OLEAUT32!尽量确保编程时路径全为英文字符,中文字符实在是难搞。

2024-05-07 23:34:11 269

原创 《深入解析Windows操作系统》第12章读书笔记

2、可恢复性:原子性事务是一种用来处理数据库修改的技术,其目标是,系统的失败不会影响到数据库的正确性或者完整性。原子性事务的基本原则是,有些称为事务的数据库操作,是“要么全部完成,要么全部不做”的任务(事务被定义为一个“改变了文件系统数据护理者改变了卷目录结构的IO操作”)。构成一个事务的那些独立磁盘更新必须按照原子方式来执行,也就是说,一旦失误开始执行,它的所有磁盘更新就必须被完成。1、日志系统:一个数据库或者日志文件系统实现的日志语义,经常需要跟踪那些在文件或者项目包含的数据或者元数据上所做的修改。

2024-05-07 14:20:46 242

原创 《深入解析WIndows操作系统》第10章读书笔记

对于运行在内核中的代码,我们期望它比用户模式代码有更少的递归调用,同时能更充分地利用变量,并保持较小的栈缓冲区,因为内核栈位于系统地址空间中(通常是所有进程共享的),因此它们的内存使用会对整个系统带来较大的影响。这正是字节偏移量域的目的。4)如果PTE中的“有效”位是空白的,则会触发一个页面异常(内存管理错误),操作系统的内存错误处理器找到该页面并试图将其变成有效的页面,然后进行第5步,如果该页面不能或者不应该变成有效位(如页面保护错误),则内存管理错误处理器产生一个访问违例或者错误检验。

2024-05-07 12:46:14 565

原创 《深入解析WIndows操作系统》第9章读书笔记

NOR闪存在操作上最接近RAM,它的每个字节都可以被独立地寻址,而NAND闪存则被组织成以块为单位,就像磁盘一样。NOR类型的闪存用来设计保存计算机主板上的BIOS,而NAND类型的闪存被用在SSD中。相比较于RAM和磁盘,闪存应当被视为一种有限生命周期的存储介质。闪存也无法被原地更新,再写入一个快之前,整个块都必须被擦除(即使是NOR类型的闪存也是这样)。Windows包含了多路径IO的支持,以便吧多路径磁盘按照单个磁盘来管理,但是它依赖于一个叫DSM模块(与设备相关的模块)的第三方驱动程序。

2024-04-30 16:29:52 313

原创 《深入解析Windows操作系统》第8章读书笔记

需要注意的是,在发出了一个异步IO操作以后,该线程必须非常小心,在IO设备完成IO操作之前,应用程序的这个线程不能访问该IO操作中的任何数据,并且这个线程必须监视一个“可在该IO操作完成时能被信号通知到的同步对象(事件对象、IO完成端口或者对象本身)”,以便将 线程对该IO的数据的访问操作 和 IO请求 同步起来。1、同步IO:应用程序发出的大多数IOI操作都是同步的(默认的),也就是说,在IO设备执行数据操作的过程中,应用程序一直等待,直到IO操作完成,设备返回一个状态码。

2024-04-30 15:46:45 164

原创 《深入解析Windows操作系统》第7章读书笔记

然后存根调用RPC运行时过程,这些RPC运行时过程可以找到远程过程所在的RPC服务器、确定RPC服务器使用哪些传输机制、然后将参数序列化后的二进制流以RPC请求的方式发送给RPC服务器。重定向器将该操作传递给远程文件系统,RPC客户端上的存根过程与RPC服务器上的远程过程具有相同的函数名和函数参数(即两者的函数签名是一致的),但是存根过程(RPC客户端)并不处理所请求的操作,相反地,它(位于RPC客户端)将传递给它的参数进行序列化(参数一一取出来并转变成一个二进制的数据流)以便通过网络传输到RPC服务端。

2024-04-30 11:56:06 333

原创 《深入解析Windows操作系统》第5章节学习笔记

但是这种分配方法假定了一个进程内的线程完成的是等量的工作。另外,对于那些已经调用了任一Windows子系统USER或者GDI函数的线程,Windows子系统的内核模式部分(Win32.sys)为每个这样的线程维护了一个数据结构,称为W32THREAD结构,线程的KTHREAD结构指向了W32THREAD结构。Windows调度代码是在内核中实现的,然而,内核中不存在单独的“调度器”模块或者例程——调度代码散步在内核中凡是会发生与调度相关的事件的各处,执行这些任务的例程合起来称为内核的“分发器”。

2024-04-30 10:40:01 636

原创 《深入解析Windows操作系统》第3章读书笔记

中断对象包含了所有“供内核将一个设备的ISR与一个特定级别的中断关联起来而需要”的信息,包括该ISR的地址、设备中断时所在的IRQL,以及内核中与该ISR关联的IDT项。此类汇编指令被称为分发代码。每个对象头也有一个索引,指向一个被称为类型对象的特殊对象,该对象包含的信息对于它的每个实例是公共的。8.2、内核对象:指由Windows内核实现的一组更为基本的对象,这些对象对用户模式代码不可见,它们只是在执行体内部被创建和使用,内核对象提供了最为基本的能力,比如同步等,执行体对象的功能是建立在内核对象之上。

2024-04-28 13:32:55 679

原创 《深入解析Windows操作系统》第2章读书笔记

2)内核模式设备驱动程序(Win32.sys),它包括如下支持:窗口管理程序(控制窗口显示、管理屏幕输出、采集来外设的输入、将用户消息传递给应用程序)、图形设备接口GDI(专门针对图形输出设备的函数库,包括线段、文本和图形的绘制函数以及图形控制函数)、Directx功能的包装函数(Windows对DirectX的支持是在另一个内核驱动程序(Dxgkml.sys)中实现的);内核中的许多函数也在WDK中有相应的文档描述(通过搜索以Ke打头的函数可以找到),因为在实现设备驱动程序的时候也需要用到他们。

2024-04-25 12:38:08 580

原创 《深入解析windows操作系统》第1章读书笔记

低半部分的地址空间的映射关系会发生变化,以便总是反映出当前正则执行的进程的虚拟地址空间,而高半部分的地址空间的映射关系总是由操作系统的的虚拟内存使用。作业对象的主要功能是,使一组进程被当做一个整体i来管理和维护,通过作业对象,可以对特定的属性进行控制,也可以对一个进程或者所有与作业相关的进程进行限制。6、虽然线程有自己的执行环境,但是同一个进程内的所有线程共享该进程的虚拟地址空间(以及属于该进程的其他资源)。对象类型由系统定义的数据类型、在该数据类型的实力上进行操作的一组函数,以及一组对象属性构成。

2024-04-24 15:21:54 459

原创 CE 搜索游戏背包技巧

4、重复以上步骤直到备选列表数量小于100。5、xdbg观察确定背包栏数组起始地址。1、游戏里移动或者交换第1格技能栏对象。3、第1格为空时,搜索数值0。6、分析背包栏数组的基址偏移。2、CE搜索变动的数值。

2024-04-21 07:47:13 107

原创 汇编语言学习笔记

CMP指令对标志位的影响如下:假想减法操作完成之后,CMP指令会根据运算结果修改溢出标志位、符号标志位、零标志位、进位标志位、辅助进位标志位和奇偶标志的值。12、NEG指令(negate):该指令通过将数字转换为相应的补码而求得其相反数(正数的原码、反码和补码相同,负数的反码=除符号位外,原码按位取反,负数的补码=负数的反码+1);8、XCHG指令(exchange data):该指令交换两个操作数的内容,注意它不接受立即操作数,除此之外,XCHG指令的操作数与MOV指令的操作数遵循同样的规则;

2024-04-19 22:00:26 865

原创 IA-32处理器寄存器浅析

IA-32架构下寄存器分为基本寄存器和系统寄存器。

2024-04-18 20:29:00 394

原创 汇编指令笔记

jmp x ) 其中x表示跳转地址,也会导致esp=esp-4。jmp [esp] ) ,ret指令会导致ep=esp+4。2、pop x 除了将esp指向的数据弹出栈外,还有一个隐含作用:add esp, 4。1、push x 除了将x压入栈外,还有一个隐含作用:sub esp,4。

2024-03-28 23:08:30 89

原创 植物大战僵尸更改阳光代码

在执行了“是什么访问了这个地址“指令”后(一定要找mov指令),需要去掉mov指令中的偏移量得到地址A,然后将地址A添加到地址列表并继续搜索地址A。原理感觉和操作系统中的多级页面很相似,不知猜测是否准确。CE中需要不停地重复:搜索数值====>找出是什么访问了这个地址 这两个步骤,反复尝试直到找出绿色的静态基址即表示完成。

2024-03-27 07:54:09 191

原创 Windows读写进程指定地址

【代码】Windows读写进程指定地址。

2024-03-25 07:43:53 112

原创 vscode的一些技巧

2024-03-24 14:56:05 512

原创 Windows PE文件常识

不同模块的基地址一般式不同的,但是也有特殊情况,如果两个的基地址相同,就有曹子系统来决定这两个模块在虚拟地址空间中的额具体位置。该概念属于操作系统中的概念——每个空间都有独立的4GB(32为环境下)或者2^64B的虚拟地址空间,在这个空间中定位的地址为虚拟内存地址,在PE中,进程本身的VA等于:进程的基地址+相对虚拟内存地址。此类地址是一种特殊地址,其计算方法不是从文件头或者内存某个某开的额基地址算起,而是从某个特定的位置算起,这种地址在PE结构中很少见,例如在资源表中就出现过这样的地址。

2024-03-15 23:28:03 351

原创 NAS与SAN的区别

二者的本质区别在于:对于用户而言,SAN提供的是块级数据传输和存储服务,NAS提供的是文件级的传输和存储服务。NAS与SAN都是网络存储系统,均负责管理存储资源。都通过网络向用户提供存储服务,具有较好的扩展性。摘自:《信息存储与IT管理》--吴晨涛著。

2024-03-14 12:53:44 353

原创 《凤凰架构》 -分布式事务章节 读书笔记

一致性:代表数据在任何时刻、任何分布式节点中看到的都是符合预期的,一致性概念在分布式研究中是有严肃定义和多种细分类型的概念(与分布式共识算法中的面向副本复制的一致性不同,此处指的是面向数据库状态的一致性)。TCC其实有点类似于2PC的准备阶段和提交阶段,但是TCC位于用户代码层面(即业务代码,写业务代码的程序员相对于基础库而言都是用户),而不是基础设施层面。SAGA事务:TCC事务是常见柔性事务中性能最高的,但是它并不能满足所有场景,因此有了SAGA事务。2、为每个子事务设计一个对应的补偿动作,命名为。

2024-02-24 15:09:43 1045

原创 《凤凰架构》-全局事务章节读书笔记

三阶段提交协议:三阶段提交协议把二阶段的准备阶段再细分为两个阶段,分为CanCommit和PreCommit,把提交阶段改为DoCommit阶段。新增的CanCommit阶段是一个询问阶段,协调者让每个参与者根据自身的状态评估该事务是否有可能顺利完成。在事务需要回滚的场景中,三阶段提交协议性能通常比二阶段要好得多,但在事务能够正常提交的场景下,三阶段提交协议多了一次询问,性能要比二阶段提交协议差,但是两者的性能都好不到哪去。(不再改变提交或者回滚的结果,只能等待崩溃的节点重新恢复)。

2024-02-24 11:34:14 496

原创 《凤凰架构》-本地事务章节 读书笔记

注:上面说的写锁和读锁均针对事务期间涉及到的数据,并不一定是表锁,更常见的形式是行级锁(大多数事务所涉及到的数据都是数据库的某些行,而不是整个数据库)(如果遇到了个不加任何锁的另一个事务2,写锁是无法阻止事务2读取数据的),这就是读未提交隔离级别中的脏读问题产生的根因。2、范围锁和排它锁:范围锁不仅禁止范围已有数据的修改操作,还能防止在该范围内新增或者删除数据,而排它锁是无法做到后者的。读已提交:加读写锁,写锁持续到整个事务结束,但读锁在查询操作完毕之后立即释放,因此存在不可重复读的问题。

2024-02-24 11:07:25 589

原创 预写日志的一点理解和总结

预写日志(WAL)被广泛应用于文件系统和存储行业,借鉴于数据库系统的事务概念*数据库事务的核心实现方式是二阶段提交协议),主要解决的问题是。1、磁盘提供的原子性保证:磁盘制造商需要保证任何 512 字节 (大多数磁盘扇区大小都是这个值)写入都会发生或不发生(永远不会半写)。2、先 写入被指对象(即用户数据),再写入指针对象(即元数据)(崩溃一致性的核心)。(西邮陈莉君翻译的那本)第42章。1、《数据密集型应用系统设计》

2024-02-23 10:50:20 419

原创 剑侠情缘2dll注入代码

【代码】剑侠情缘2dll注入代码。

2024-02-21 19:45:18 389

原创 剑侠情缘2自动嗑药

代码有bug,能自动嗑药,但是血未增加。

2024-02-20 23:53:26 332

原创 剑侠情缘2(端游)无敌功能

【代码】剑侠情缘2(端游)无敌功能。

2024-02-09 09:27:06 374

原创 导入表注入(iathook)

源文件(iatHookMain.cpp)内容。头文件(hookMain.h)内容。

2024-01-29 22:56:55 503

原创 dll远程线程注入

【代码】dll注入。

2024-01-26 07:29:54 375

原创 Linux获取指定进程的所有特定线程号

【代码】Linux获取指定进程的所有特定线程号。

2024-01-24 14:03:30 368

原创 Windows解析dll文件的导出表

main.cpp的内容。

2024-01-20 22:20:11 396

原创 pexpect中interact模式的坑

2024-01-16 21:46:24 397

原创 逆向之虚函数

【代码】逆向之虚函数。

2024-01-11 22:52:06 782

原创 C语言的前置声明

另外需要注意的是当typedef定义的别名需要前置声明时,需要按照如下的方式进行声明,而不能直接写成 class 类别名 的形式。前置声明主要用于类与类之间的循环引用,且只是针对类型指针有效,对完整的类字段无效。提示类C是个不完整的类型,将其改为C*c即可通过编译。

2024-01-06 18:00:43 520

原创 浅析linux中的信号

例如,发生下列情况之一时,内核可向进程发送信号:用户键入中断字符(通常为 Control-C)、进程的子进程之一已经终止、由进程设定的定时器(告警时钟)已经到期、进程尝试访问无效的内存地址、在 shell 中,可使用 kill 命令向进程发送信号。不存在编号为0的信号,Kill函数对信号编号0有特殊的应用(将信号发送给当前进程所属进程组中的所有进程),POSIX.1将此类信号编号称为空信号。信号的生命周期比较明确:产生信号(也可以说是信号发出或者生成)、内核存储信号、内核发送信号、内核处理信号。

2023-11-24 16:19:52 229

原创 通俗理解信号量

具体实现方法有多种,可以是最暴力的循环sem_wait,也可以是信号量+原子变量实现:由最后一个完成的异步任务(原子变量初始化为异步任务的数量,每一个异步任务返回时减一次原子变量,原子变量自减为0时为最后返回的那个异步任务)调用sem_post()唤醒主线程。当进程释放受保护的资源时,会把信号量的值加1。并且为实现进程间通信的目的,信号量一般是在内核中实现的(不排除部分项目使用了用户态的信号量,但是大部分用户态的信号量只能实现线程间通信, 用户态的信号量若需要实现进程间通信,还得搭配内存映射)。

2023-11-16 21:51:42 153

SwordPlugin.dll文件

SwordPlugin.dll文件

2024-02-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除