windows逆向
web安全工具库
这个作者很懒,什么都没留下…
展开
-
驱动保护 -- 向被保护的内存写数据
2、在头文件声明IRP_WriteProcessMemory函数。一、驱动层写数据源码。原创 2023-04-19 12:02:20 · 222 阅读 · 0 评论 -
驱动保护 -- 读取被保护的数据(第二种方法)
一、获取被保护数据,驱动块源码(第二种方法)五、运行效果,两种方法都可读取。二、在头文件添加函数声明。1、界面添加一个按钮。原创 2023-04-18 15:20:35 · 203 阅读 · 0 评论 -
驱动保护 -- 读取被保护的数据
1、添加一个编辑框和按钮读取被保护数据。四、生成相应的程序,然后进行读写测试。一、新建一个过保护头文件和源文件。原创 2023-04-17 10:21:19 · 196 阅读 · 1 评论 -
Windbg双击调试(真机WIN10+虚拟机WIN10)
7、设置调试端口并重启,选择win10 x64 debug for windbg启动系统。9、中通过菜单选择Kernel Debug或者快捷键ctrl+k。11、打开上节课写的驱动保护文件,进行相关操作,可以正常调试。6、通过msconfig打开系统配置。4、添加一个bat文件,内容为。1、虚拟机添加一个串行端口。10、重启虚拟机,链接成功。8、真机启动windbg。2、设置命名管道的名字。5、以管理员身份运行。原创 2023-04-09 18:19:54 · 952 阅读 · 0 评论 -
驱动保护 -- 通过PID保护指定进程
1、添加一个编辑框输入要保护的进程PID,并添加两个按钮,一个保护进程,一个解除保护。1、声明一个受保护的进程PID数组。9、通过控制码实现添加和删除保护。10、添加和删除的代码具体实现。6、将函数在头文件声明一下。2、右击编辑框,添加变量。2、添加PID到保护函数。5、PID是否受保护函数。3、双击解除进程保护按钮。3、删除PID保护函数。4、清空PID保护函数。2、双击保护进程按钮。原创 2023-04-08 23:31:24 · 1483 阅读 · 0 评论 -
驱动保护 -- 禁止读写操作
三、编译驱动,并加载,重新CE和Debug打开。2、Debug也查不到内存数据。二、添加禁止操作代码。1、CE都说不到数据。原创 2023-03-31 11:27:39 · 249 阅读 · 0 评论 -
2023驱动保护学习 -- 通过驱动保护进程
1、头文件源码,把涉及到的进程权限的常量值都添加进去。4、卸载驱动的时候卸载内存保护。原创 2023-03-28 10:54:01 · 546 阅读 · 0 评论 -
2023驱动保护学习 -- 通过代码实现驱动卸载
三、通过卸载按钮,实现卸载驱动。二、添加头文件,申明函数。原创 2023-03-26 10:43:17 · 268 阅读 · 0 评论 -
2023驱动保护学习 -- 通过代码实现驱动加载
第三个参数,使用权限,一般设置为SC_MANAGER_ALL_ACCESS表示所有使用权。第二个参数,SCM数据库名称,此用为NULL表示使用默认。第一个参数,指向计算机名称,此处为NULL表示指向本机。二、新建驱动管理头文件,将上面函数的声明函数,添加进去。第二个参数,第三个参数,一般就是驱动的名字。三、添加按钮,并调用该函数,实现加载驱动。第六个参数,驱动程序的start值。第五个参数,加载的服务是驱动程序。第八个参数,开启服务的用户组。第十个参数,依赖的服务的名称。第一个参数,管理器句柄。原创 2023-03-24 09:54:57 · 539 阅读 · 0 评论 -
2023驱动保护学习 -- 应用层与驱动层读写操作(二)
二、在MFC程序中添加一个按钮,实现MJ读写操作。一、在驱动程序的主函数里面注册读写函数。三、在驱动程序里面实现MJ读写操作。原创 2023-03-22 11:13:31 · 188 阅读 · 0 评论 -
2023驱动保护学习 -- 应用层与驱动层读写操作
1、双击写操作按钮,通过DeviceIoControl函数进行操作。一、在MFC中添加控制码,告诉驱动我们要进行的操作。3、应用层通过驱动实现加法运算。四、在IRP处理函数中调用。2、双击读操作按钮,通过。写入的数据是3个整数。原创 2023-03-20 14:47:43 · 193 阅读 · 0 评论 -
2023驱动保护学习 -- 应用层与驱动层交互操作
2、通过switch语句判断进行是什么IRP操作。一、在驱动入口函数里注册IRP处理函数。1、获取栈指针,也就应用层传过来的参数。三、新建一个MFC程序进行交互。3、IRP请求的相应处理。二、创建IRP处理函数。原创 2023-03-17 14:52:45 · 174 阅读 · 0 评论 -
2023驱动保护学习 -- 创建驱动设备及符号链接并实现删除操作
1、创建设备操作,通过状态判断是否创建成功,创建的设备名称只能在内核中使用,如果要在外部应用使用,需要通过符号链接使用,所以需要创建符号链接。2、删除设备操作,先删除符号链接,再删除设备,最后再删除驱动。三、在卸载回调函数中调用删除设备,在主函数中调用创建设备。二、在上节课的C代码中,声明一下创建设备和删除设备函数。一、新建一个C文件进行设备添加删除操作。原创 2023-03-15 09:59:03 · 203 阅读 · 0 评论 -
2023驱动保护学习 -- 卸载驱动程序
五、在Monitor中,导入该驱动程序,点击go,然后点击stop,查看输出效果。六、在DebugView中会显示,我们要输出的语句,说明驱动加载和卸载都没问题。四、在DebugView中设置标识符"nxyn",只查看包含nxyn的输出语句。一、创建回调函数,卸载驱动的时候会执行里面的操作。三、生成驱动文件,拷贝到虚拟机进行测试。二、在主函数中调用该函数。原创 2023-03-13 11:53:29 · 249 阅读 · 0 评论 -
2023驱动保护学习 -- 创建第一个驱动程序
1、驱动由于没有相关认证,所以调试的时候要,禁用签名验证,禁用后桌面右下角会有如下标致。9、DebugView会显示kdprint里面的内容,说明驱动生成没问题。2、DebugView没有调试信息,在注册表中添加一个这样的子项。6、在Monitor中点击文件夹,加载我们新建的驱动。1、从下面地址下载两个软件WDK和SDK,并安装。1、在源文件夹里面添加一个C++文件编写驱动。4、生成项目,将驱动文件*.sys拷贝出来。8、点击驱动管理go标识,提示加载成功。二、新建一个驱动程序,建一个空程序。原创 2023-03-12 22:42:07 · 544 阅读 · 0 评论 -
汇编指令学习(寻址方式)
只有运行到当前指令,才知道具体的地址是多少。后面直接跟着内存地址。原创 2023-03-11 10:58:02 · 230 阅读 · 0 评论 -
汇编指令学习(LOOP)
将eax置零,将寄存器置为100,每次eax加一,loop判断ecx是否为1,为了方便操作,将loop下一条设置一个断点,按F8直接运行完循环,eax结果变为100.先将edx进行异或操作置为0,将计数器置为3,每次循环edx加一,loop判断ecx是否为1,当为1的时候,执行下一条汇编代码。将ecx进行逻辑与运算,结果为0,ZF标志位设置为1,不为0,ZF位置设置为0。循环的时候,ecx为默认的技术操作,当ecx为1的时候,跳出循环。一、xor异或操作,相同为0,不同为1。将ecx寄存器设置为3。原创 2023-03-08 09:39:11 · 692 阅读 · 0 评论 -
汇编指令学习(CALL,JMP,RET)
函数指令,可以理解为一个函数,当走到call指令的时候,按一下回车键,就可以看到call里面的内容,即函数内容,如果里面还有calll,说明函数里面套函数。实际运行的时候,首先保存了call下面的地址,到堆栈,然后call里面的语句执行完毕后,ret会返回到call下面的地址。按回车后,跳转到call后面跟着的参数地址,此时,和jmp指令功能相同。我们按F7进入call,堆栈保存了call下面的地址,46B984,当执行到ret命令的时候,会返回到call下面的代码处。原创 2023-03-06 11:02:05 · 717 阅读 · 0 评论 -
汇编指令学习(JMP、JE、JS、JP,JO,JB)
当二进制1的个数为偶数时,PF标志位为1,当二进制1的个数为奇数时,PF标志位为0,当PF标志位为1时,JP发生跳转。当结果溢出了,OF标志位为1,JO会发生跳转,当OF标志位为0时,JO不发生跳转。当为整数时,SF标志位为0,负数事SF标志位为1,当SF为1时,JS发生跳转。当ZF标致为1的时候发生跳转,为0的时候不跳转,可以双击标志位,进行判断。当ZF标致为0的时候发生跳转,为1的时候不跳转,可以双击标志位,进行判断。当结果需要借位或者进位的时候,CF变为1,当值1 的时候,JB发生跳转。原创 2023-03-05 21:22:38 · 5086 阅读 · 0 评论 -
汇编指令学习(CMP,TEST)
比较两个操作数,如果两个数相等,zf标志位就为1,将eax,ebx的值置为1,执行下面指令,je这个跳转指令就会根据zf标志位进行跳转原创 2023-03-03 11:04:30 · 1238 阅读 · 0 评论 -
汇编指令学习(AND,OR,XOR,NOT)
逻辑与运算,二进制位都为1时,才为1,否则为0,置eax为5,置ebx为6,运行下面指令,结果会赋值给eax。逻辑或运算,二进制位都为0时,才为0,否则为1,置eax为5,置ebx为6,运行下面指令,结果会赋值给eax。逻辑异或运算,二进制位相同0,不同为1,置eax为5,置ebx为6,运行下面指令,结果会赋值给eax。逻辑取反运算,二进制位0变为1,1变为0,置eax为5,运行下面指令,结果会赋值给eax。与结果是 0100,十进制是4。结果是 0111,十进制是7。结果是 0011,十进制是3。原创 2023-03-02 15:00:00 · 4277 阅读 · 0 评论 -
汇编指令学习(ADD,SUB,MUL,DIV,XADD,INC,DEC,NEG)
将eax,ebx,ecx分别置为2,3,4,运行下面指令,默认后面的操作指令乘以eax,超过的位数存入edx里面。扩展:如果有两个操作或者三个操作数,如下操作,eax*ebx将值赋值给eax,ebx*6赋值给eax。将eax置为9,ecx置为4,运行下面命令,eax存放商,edx存放余数。将eax置1,ebx置2,运行下面命令,将结果保存到eax。将eax置3,ebx置2,运行下面命令,将结果保存到eax。将eax置为5,执行下面代码,将eax的数值,取反操作。六、XADD操作指令。原创 2023-03-02 14:56:52 · 3822 阅读 · 0 评论 -
汇编指令学习(MOV,MOVSX,MOVZX,LEA,XCHG)
当我们执行,mov eax,bl的时候,会提示错误,bl是8位,eax是32位,所以需要扩展,这时需要movsx。ax,eax的低16位,al,eax的低8位,ah,eax的高8位,通力bx,bl,bh为ebx的相关数值。将ebx置为0x12345680,再执行movsx eax,bl,会发现eax变成了FFFFFF80。因为有符号4字节最大表示的正数是0x7F,0x80就是表示负数了,所以这里执行的结果不一样。1、mov取的内存的值,而lea的指令取的是址,lea后面必须跟的是寄存器,后面是一个内存。原创 2023-02-28 15:14:05 · 2213 阅读 · 0 评论 -
OD修改软件
一、打开软件,查看正常运行的程序二、打开OD,拖入要调试的程序三、分析汇编代码title是"Hello world",内存地址是0x00403000四、数据窗口跳转到该地址,快捷键ctrl+G五、修改数据点击要修改的地方,按空格键,把保持大小的钩去掉,输入我们要修改的内容,点击确定,修改数据后会变成红色六、点击运行,快捷键F9,让程序跑起来,程序已被修改七、OD窗口介绍1、汇编代码对应的地址窗口2、汇编代码对应的十六进制机器码窗.原创 2022-04-13 16:06:49 · 3461 阅读 · 0 评论 -
Windows逆向 -- 常用指令
Windows逆向 -- 常用指令1、push和poppush 0x11111111 将0x11111111压入堆栈push 0x22222222push 0x33333333pop eax 将堆栈最上层的值赋值给eax进栈和出栈2、pushad和popadpushad:保存8个寄存器的值到堆栈popad:将堆栈存放的值放回到寄存器3、call和retcall 0x7738ED46:将call的下一行地址push...原创 2022-02-06 08:28:33 · 766 阅读 · 0 评论 -
Windows逆向 -- 逻辑运算与位移
Windows逆向 -- 逻辑运算与位移一、逻辑运算and:有0全0 or:有1全1not:取反xor:相同为0小知识:1、xor常用于置0操作,和自己异或永远是0 2、test eax,eax,判断是否为0二、位移操作1、逻辑左移和右移逻辑左移(SHL):最低位补0逻辑右移(SHR):最高位补02、算数左移和右移算数左移(SAL):最低位补0,等价于逻辑左移算数右移(SAR):最高位填充符号位...原创 2022-02-04 21:41:43 · 536 阅读 · 0 评论 -
windows逆向 -- 寄存器
一、EAX寄存器常存储运行的结果,来进行真假的判断二、EBX寄存器常存储基地值三、ECX寄存器常存储存放的次数四、EDX寄存器常存储整除产生的余数五、EBP寄存器栈底寄存器,简单理解为一个方法调用结束的地方六、ESP寄存器栈顶寄存器,简单理解为一个方法调用运行到的位置七、ESI/EDI寄存器简单理解为存储与循环相关的数据,比如计次,循环开始的地址等八、EIP寄存器指向当前程序准备执行的命令,汇编窗口中默认选中的那行九、其他以原创 2021-09-26 10:45:47 · 312 阅读 · 0 评论 -
windows逆向 -- Debug工具简介
简介:x64_dbg是一款windows系统下非常优秀的64位调试器,与目前热门的“OllyDbg”十分相似,使用过OllyDbg调试工具的朋友应该很容易上手操作。软件具有简洁的界面以及强大的功能,提供了类似C的表达式解析器、全功能的DLL和EXE文件调试、IDA般的侧边栏与跳跃箭头、动态识别模块和串、快反汇编、可调试的脚本语言自动化等多项实用功能,整体效果十分乐观。一、汇编代码区1、双击第一列,显示偏移位置2、双击第二列,在当前代码处可以下断,代码变红3、选中要修改的汇原创 2021-09-20 14:35:23 · 5606 阅读 · 0 评论
分享