Win32汇编学习笔记10.OD插件
Win32汇编学习笔记10.OD插件-C/C++基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net
筛选器异常插件被调试程序: 📎TestUnh.zip 我们用OD条试试发现,无法断下 筛选器异常 异常产生之后 异常首先会给调试器 调试器不处理就会给 SEH , SEH 不处理的话有又给调试器, 调试器不处理的话就会给筛选器 , 筛选器不处理的就会给操作系统,直接退进程 这里面是2次的异常派发流程 第一次 是 到 给SHE 之后属于第二次 派发流程 第二次派发是一个分支,会判断是否有调试器,有的话就给调试器,没有的话直接给筛选器,因此系统会检查软件是否处于调试状态 即检查调试端口是否存在,如果存在,异常就会给调试器,否则给筛选器,所以我们在用 OD 调试筛选器异常时,是不可能再筛选器这下断点的,因此系统检测到了调试器,异常就不会给筛选器 因此我们可以欺骗系统,告诉系统,不存在调试器,直接给筛选器,因此我们需要找到 异常派发时,系统在哪判断是否有调试器存在的,找到后我们可以更改判断结果 或者跳转 的地方 这个在 msdn中有明确的说明 UnhandledExceptionFilter 来判断的 接下来我们只需要 更改条件跳转 ,看 筛选器异常能否断下来 ,就可以判断是在哪 判断是否有 调试器的 跳过测试可知,当 call 函数 返回值 为0 就可以收到 筛选器异常,为1就无法收到,那么位置我们已经找到了,接下来我们只需要改 判断 函数下一行 把 eax 的值 改为0 就可以 收到 筛选器异常了 即改成 xor eax,eax 因此我们只需要写一个插件让他自己去改 接下来就是写插件了 生成解决方案时 把生成的 dll 放到指定目录,再打开 OD,发现我们的插件已经 加载进来了 既然插件可以识别那下面就是增加功能了 我们的目标把红框的代码改成 xor ,eax,eax 即 把 76A6D810 处的 值 改成 33 ,如果直接写固定地址,那么电脑重启后dll 的路径就发生过了改变,即 该处地址也变化了,Name插件也用不了了,因此我们需要用相对地址,可以函数地址+偏移 或者 模块地址 + 偏移 我们可以看到 kernelbase 的 地址是 768B0000 那么 跟 76A6D81B 的偏移值位为 0x1BD81B 运行发现并没有被修改,猜想可能是因为 修改的太早,程序还没有运行 调试发现还是没改成功 那是因为 OD 调试时有2个进程 , 我们修改时 修改的是 OD 的进程 , 并没有修改到被调试的进程,但是地址是对的,因为在同一台电脑, kernelbase 的 地址是固定的 , 因此我们需要跨进程修改 内存 OD 提供了 对应的 api 内存函数 结构 OILYDBG为被调试程序保存了一份已分配内存块的信息表,它由TMG MEMORY MEMORY*FINDMEMORY(ULONG ADDR); VOID HAVECOPYOFMEMORY(CHAR *COPY,ULONG BASE,ULONG SIZE); ULONG READMEMORY(VOID *BUF.ULONG ADDR.ULONG SIZE.INT MODE): WRITEMEMORY(VOID*BUF ULONG ADDR,ULONG SIZE,INT MODE): ULONG W INT LISTMEMORY(VOID); 再次调试,可以发现我们成功修改了,筛选器异常也可以成功调试了 上面虽然成功了,但是兼容性还存在问题,要求二进制文件必须是一样,但是不同的电脑,编译出来的二进制文件是可能不一样的,到时兼容性还是出问题,这种处理方式是搜机器码, 先找到特征码(离修改代码最近的唯一值) ,再去寻找要修改的代码,不然直接搜要修改代码可能会有多个 ,类似于切割出指定字符串 窗口过程函数地址错误OD 如果没有安装修复插件啊,有些 窗口的过程函数地址是错误的 看雪下载的已经修复 获取过程函数的地址有2种 一种是通过 GetWindowLong 获得 一种是通过 GetClassLong 通过OD 调 OD 对 GetWindowLong 和 GetClassLong 下断点 可以知道是通过 GetClassLongA 拿到的,因此可以猜想 是因为 GetClassLongA 拿的是 多字节的窗口过程函数 而Unicode 窗口 获取 过程函数需要用 GetClassLongW,因此只需要在获取 Unicode 窗口 过程函数是是 用 GetClassLongW 就可以了 跟窗口相关的函数都在 user32 里面 ,跟界面相关的 都在 user32 里面 调试可知 GetClassLong 调取的都是该处的 GetClassLongA ,因此我们只需要改动这里就可以了 jmp是一个间接调,先取地址,在跳到目标位置,因此我们改该处地址就可以了, 我们自己可以实现一个 MyGetClassLong 然后把地址传过来这样他就会调我们的函数,我们只需要做一下判断是 多字节窗口还是 Unicode 就可以了 该处地址的我们还是可以 通过算偏移得到 ,因为 OD 版本一样,所以偏移也是一样的 所以偏移是 0x0050D858 - 0x00400000 = 0x0010D858 调试会发现会崩, 代码没崩,但是运行了一段时间就崩一般情况下是栈歪了 经过调试,还有2个参数在栈上 系统的api 一般都是标准调用约定, 但是我们自己的代码需要自己去平栈, 因此要改动调用约定 改成 stdcall 再去调试,发现可以获取正确的 窗口过程函数地址了 x32dbg 也可以写插件 |
相关文章:
Win32汇编学习笔记10.OD插件
Win32汇编学习笔记10.OD插件-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 筛选器异常插件 被调试程序: 📎TestUnh.zip 我们用OD条试试发现,无法断下 筛选器异常 异常产生之后 异常首先会给调试器 调试器不处理就会给 SEH , SEH 不处理的话有又给…...
在vscode中已经安装了插件Live Server,但是在命令面板确找不到
1、VS Code缓存问题: 有时VS Code的缓存可能导致插件无法正确加载。尝试删除VS Code缓存文件夹(如C:\Users\你的用户名\AppData\Roaming\Code)中的文件,并重启VS Code。 2、重新安装插件: 尝试卸载Live S…...
C# SQL ASP.NET Web
留学生的课程答疑 按照要求完成程序设计、数据库设计、用户手册等相关技术文档; 要求 1. 计算机相关专业,本科以上学历,至少有1年以上工作经验或实习经历。 2. 熟练掌握WinForm程序开发,或ASP.NET Web编程。 3. 熟悉C#中网络…...
联想java开发面试题及参考答案
IP 协议是哪一层的? IP 协议(Internet Protocol)属于网络层协议。 网络层主要负责将数据从源节点传输到目标节点,它在整个网络通信体系中起到了承上启下的关键作用。在分层网络模型中,下层(如数据链路层)为网络层提供物理链路的连接和帧传输服务。数据链路层关注的是在相…...
Node.js中的fs模块:文件与目录操作(写入、读取、复制、移动、删除、重命名等)
在Node.js中,fs模块提供了多种方法来处理文件和目录操作,使得数据的持久性保存和文件管理变得简单。下面将介绍文件读写、文件复制、文件移动、文件重命名、文件删除、文件夹创建与删除以及查看资源状态等常用操作。 首先,在使用写入和读取功…...
代码的形状:重构的方向
大概2周前写了一篇《代码的形状:从外到内的探索与实践》 涵树:代码的形状:从外到内的探索与实践 觉得这个话题还可以继续,它是一个从无形到有形的过程,而这个过程感觉就是王阳明先生说的“心即理”的探寻过程。 我讨论代码的形状ÿ…...
2021 年 3 月青少年软编等考 C 语言五级真题解析
目录 T1. 红与黑思路分析T2. 密室逃脱思路分析T3. 求逆序对数思路分析T4. 最小新整数思路分析T1. 红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的…...
华为C语言编程规范总结
1.头文件更改会导致所有直接或间接包含该头文件的的C文件重新编译,会增加大量编译工作量,延长编译时间,因此: 1.1 头文件里尽量少包含头文件 1.2 头文件应向稳定的方向包含 2.每一个.c文件应有一个同名.h文件,…...
XML 解析器:深入解析与高效应用
XML 解析器:深入解析与高效应用 引言 XML(可扩展标记语言)作为一种重要的数据交换格式,被广泛应用于各种系统和平台中。为了有效地处理和解析XML数据,XML解析器发挥着至关重要的作用。本文将深入探讨XML解析器的原理…...
《系统爆破:MD5易破,后台登录可爆破?》
声明:笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 爆破Sales系统 一、爆破MD5 场景:已知MD5的加密字符串,如何得知明…...
基于微信小程序的书籍销售系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
SpringData-Redis缓存
Spring Framework是领先的全堆栈Java/JEE应用程序框架。它提供了一个轻量级容器和一个通过使用依赖注入、AOP和可移植服务抽象实现的非侵入性编程模型。 NoSQL存储系统为传统RDBMS提供了一种横向可扩展性和速度的替代方案。就实现而言,键值存储代表NoSQL空间中最大…...
Hadoop3.3.4伪分布式环境搭建
文章目录 前言一、准备1. 下载Hadoop2. 配置环境变量3. 配置免密 二、Hadoop配置1. hadoop-env.sh2. hdfs-site.xml3. core-site.xml4. mapred-site.xml5. yarn-site.xml 三、格式化四、启动 前言 hadoop学习——伪分布式环境——普通用户搭建 一、准备 1. 下载Hadoop 2. 配…...
【VUE 指令学习笔记】
v-bind :单向绑定解析表达式,可简写为:xxx v-model :双向数据绑定。 v-for:遍历数组/对象/字符串 v-on:绑定事件监听,可简写为。 v-if:条件渲染(动态控制节点是否存存在) v-else:条件渲染(动态控制节点是否存存在) v-show:条件渲染…...
【深度学习】布匹寻边:抓边误差小于3px【附完整链接】
布匹寻边 项目简介 布匹寻边是指布料裁剪过程中,通过AI寻边技术自动识别布匹的边缘,将检测到的边缘信息输出,确保裁剪的准确性,减少浪费,并提高生产效率。 项目需求 将打满针眼的布匹边缘裁剪掉,且误差小…...
【学习笔记】理解深度学习的基础:机器学习
1. 机器学习基础 1.1 机器学习的定义与重要性 定义:深度学习是机器学习的一种特定形式。为了深入理解深度学习,必须牢固掌握机器学习的基本原理。机器学习算法是一种能够从数据中学习的算法,通过经验E在任务T上提高性能度量P(Mi…...
提升租赁效率的租赁小程序全解析
内容概要 在如今快节奏的生活中,租赁小程序俨然成为了提升租赁效率的一把利器。无论是个人还是企业,都会因其便捷的功能而受益。简单来说,租赁小程序能让繁琐的租赁流程变得轻松、高效。在这里,我们将带您畅游租赁小程序的海洋&a…...
Windows自动化Python pyautogui RPA操作
依赖包 import time import pyautogui import pyperclip import os import psutil from pywinauto.application import Application睡眠: pyautogui.sleep(1)鼠标事件: pyautogui.moveTo(100, 100, duration0.25) pyautogui.click(100, 100, duration0.…...
蓝桥杯_B组_省赛_2022(用作博主自己学习)
题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…...
RK3568 Android 13 内置搜狗输入法小计
问:为什么写? 答:网上搜出来的都试过了,不行!下面直接上代码和注意事项! 首先到这个目录(/RK3568/Rockchip_Android13_SDK_Release/device/rockchip/rk356x/tl3568_evm/preinstall)…...
单片机Day1
目录 一.什么是单片机? 二.单片机的组成 三.封装形式 四.优势 五.分类 通用型: 专用型: 按处理的二进制位可以分为: 六.应用: 七.发展趋势 1.增加CPU的数据总线宽度。 2.存储器的发展。 3.片内1/0的改进 …...
《机器学习》之贝叶斯(Bayes)算法
目录 一、前言 二、贝叶斯算法原理解析 1、贝叶斯公式 2、朴素贝叶斯算法 3、计算步骤 4、例题: (1)、 计算先验概率 (2)、计算条件概率 (3)、计算后验概率 (4)…...
Redis实现高效的负载均衡算法
1. Redis存储设计 我们需要在 Redis 中存储以下信息: 配置列表(List<Config>):存储所有配置项。总权重:存储所有配置的总权重。当前轮询状态:存储当前的轮询状态(如当前随机值或索引&am…...
虚拟文件系统 VFS
目录 虚拟文件系统 VFS 文件系统挂载过程 虚拟文件系统 VFS 统一标准的系统调用接口: VFS定义了一组标准的文件操作API,如open(), read(), write(), close()等,使得用户空间的应用程序无需关心底层文件系统的具体类型。 下层文件系统必须实现…...
基于Android的民宿租赁系统的设计与实现
博主介绍:java高级开发,从事互联网行业多年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…...
数据链路层-STP
生成树协议STP(Spanning Tree Protocol) 它的实现目标是:在包含有物理环路的网络中,构建出一个能够连通全网各节点的树型无环逻辑拓扑。 选举根交换机: 选举根端口: 选举指定端口: 端口名字&…...
OceanBase环境搭建与熟悉全攻略:开启分布式数据库探索之旅
《OceanBase环境搭建与熟悉全攻略:开启分布式数据库探索之旅》 在当今数字化浪潮汹涌澎湃的时代,数据量呈爆炸式增长,业务对数据库的性能、可靠性和扩展性提出了前所未有的要求。OceanBase作为一款极具创新性的分布式数据库,正逐…...
tensor core实现flash_attn_mma_share_kv源码分析
一 源码分析 1.1 函数入口 void flash_attn_mma_stages_split_q_shared_kv(torch::Tensor Q, torch::Tensor K, torch::Tensor V, torch::Tensor O, int stages) {CHECK_TORCH_TENSOR_DTYPE(Q, torch::kHalf) // Q [B,H,N,D]CHECK_TORCH_TENSOR_DTYPE(K, torch::kHalf) // K …...
【源码解析】Java NIO 包中的 MappedByteBuffer
文章目录 1. 前言2. MappedByteBuffer3. 例子4. 属性5. 构造器6. mappingOffset、mappingAddress、mappingLength7. isLoaded 判断内存是否还在内存中8. load 方法将 ByteBuffer 加载到 Page Cache 中9. force 刷盘 1. 前言 上一篇文章我们介绍了 HeapByteBuffer 的源码&#…...
【Docker系列】容器内目录显示异常的解决之道
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
wordpress图片上传地址修改/北京seo公司网站
Chrome 插件,你可以理解为打开了一个网页,但是里面只有前端语言,JavaScript, HTML css但是有一点区别的是,它是有一个名字为 manifest.json 的配置文件的,里面,有关于这个插件的一些配置&#…...
申请建设网站经费的请示/各网站收录
建造者(Builder)模式 角色如下: 抽象建造者类(Builder):组合Product,实现复杂对象的那些部分的创建具体建造者类(ConcreteBuilder):实现builder接口&#x…...
梧州网站建设推广/怎么做网站优化
1.查看有无安装过mysqlrpm -qa|grep mysql2.查看有无安装包yum list mysql*3.虚拟机关掉eth0,联网后,安装mysql服务yum install mysql-serveryum install mysql-devel4.开启eth0,Xshell连接后,启动&&停止服务(1)在mysql配…...
门户网站的案例分析/百度如何投放广告
Vim/Vi 介绍 目录 1. 简介 2. 插入命令 3. 定位命令 4. 删除命令 5. 复制和剪切命令 6. 替换和取消命令 7. 搜索和替换命令 8. 保存退出命令 9. Vi应用实例 10. Vi小结 Vim/Vi工作模式如下: 1. 简介 Vim/Vi是一个功能很强大的全屏幕文本编辑器,是Linux/U…...
郑州响应式网站建设/推广软文发稿
keras框架为我们提供了一些常用的内置数据集。比如,图像识别领域的手写识别MNIST数据集、文本分类领域的电影影评imdb数据集等等。 数据地址: 链接: https://pan.baidu.com/s/138a6cbP_Pn-dQNIxaio0aw 提取码: sxih...
网站设计团队/seo81
这段代码没有任何错误。 这是一段 PHP 代码,它使用了 PHP 内置的 echo 命令来输出字符串 "3434"。 如果你在 PHP 中使用了一个未定义的变量,或者调用了一个不存在的函数,或者运行了一条语法错误的代码,则会产生错误。但…...