驱动中调用 ZwOpenProcess 后关闭句柄问题 在写遍历EPROCESS链表的时候,关闭自己的程序后,总是不能在进程链表中抹去,查了半天,原来是句柄资源没有释放的问题。的在调用完 ZwOpenProcess 后,使用完句柄,需要调用 ZwClose 关闭句柄。否则句柄资源没有释放,关闭程序后,进程还会残留在 EPROCESS 进程链表中。 InitializeObjectAttributes(&ObjectAttri
MFC TabView 切换事件(OnChangeActiveTab) 在 TabCtrl 控件中重载 OnTcnSelchangeTab 函数,再添加消息映射,会在产生切换事件,那么在单文档中如何捕捉到切换事件?手动重载 OnChangeActiveTab 函数(类向导中没有,尴尬…),再在消息映射表中添加 AFX_WM_CHANGE_ACTIVE_TAB 消息。声明afx_msg LRESULT OnChangeActiveTab(WPARA
List Control 控件使用 接受文件 原创文章链接:https://www.cnblogs.com/xydblog/p/3475586.html第一步Properties -> Behavior -> Accept Files -> True第二步子类化 ListControl 控件,并为 WM_DROPFILES 添加消息处理函数:ClassView->Messages->WM_DROPFILES第三步在 OnDrop
给OD扩展功能示例 文章转自看雪论坛:https://bbs.pediy.com/thread-207265.htm原版 OD 中有许多 bug 和未扩展的功能,以原版 OD 为例,为 OD 扩展功能扩展OD帮助文档打开格式选择帮助文档是一个对话框,调用了GetOpenFileName,其参数指向的是 OPENFILENAME 类型,该类型中第四个成员就是指向过滤的字符串,下面在OD中定位这个API看有没有使用。断下
关于Undname Undname 功能undname 可以查看名称粉碎前的函数信息实现使用 OD 调试,发现实际上该程序调用了 API UnDecorateSymbolName,将输入的参数,解析字符串,再转换为 API 的参数。
NtGlobalFlag 简单的 NtGlobalFlag 反调试程序:#include "stdafx.h"#include <windows.h>#define NAKED __declspec(naked)NAKED BOOL Detect32(){ __asm { push ebp; mov ebp, esp; pushad; mov
Markdown 表格编辑 关于表格居中、合并行等代码 居中及合并行 字体加粗 右对齐 RSA 算法笔记 数学概念同余定理 如果两个数 a、b,模上某个数 p,得到的余数相同,则 a 和 b 同余,记作: a≡b(modp)a \equiv b \pmod{p}例如:37≡3(mod17)37 \equiv 3 \pmod{17} 5≡22(mod17)5 \equiv 22\pmod{17}≡ \equiv 和 == 非常相近,左右相等的式子可以变换相加、相减、相乘、相除,如下例子 关于 inc2l inc2l 可以帮助我们将 .inc 文件转换为 .lib 文件。关于 bug如果转换成功,会在当前目录下产生一个 kernel32.lib但是,如果该文件不在其原来的安装目录下,那么转换时将会失败,什么提示也没有。分析#1因为 inc2l 是加壳文件,用 esp定理 将壳脱去。使用 OD dump 出来后,可以再使用导入表恢复工具将导入表修复完整,程序就可以正常运行了。#2用 OD 将程序以输入 关于 ESP 定理 许多壳在执行加壳代码的开始和结束位置,分别会有 pushad 和 popad 来保存所有的寄存器环境。或者有些程序利用这一点,可以定位到程序真正代码的位置。–>练习程序下载打开程序后,程序的入口点就是汇编指令 pushad,下面的都是加壳代码。由于寄存器都入栈,此时栈顶以下的位置都存储了寄存器的环境。当加壳结束时,一定将寄存器的值出栈,所以,在寄存器全部入栈后,在右侧寄存器位置点击数据窗口跟随,然 MarkDown: 为字体添加颜色 转自 testcs_dn(微wx笑) 博文 –>传送门初学MarkDown,发现字体颜色经常用到,备份一份给自己看。我是黑体字我是微软雅黑我是华文彩云color=# 流水账笔记:PE文件格式(导入表注入---手动) 简单记录一下手动的导入表注入方法,先挖个坑,以后有空再写代码,工具依然用的 010 Editor,以简单的“Hello, PE”程序为例。先准备一个 DLL,名称为 mydll.dll,导出函数为 fun#1修改数据目录下的导入表偏移和大小,我们将偏移修正为 0x2100,即根据转换公式(RVA To FOA),新的导入表在文件 0x700 位置#2找到新导入表的位置,将旧的导入表数据移动到新的位 流水账笔记:PE文件格式(手工增加节) 为方便理解,仅以“Hello, PE!”的小程序为例,使用工具 010 Editor: 当前程序目前有 2 个节区,且节头部分有足够的空间来增加另一个节头。#1将文件头的 NumberOfSection (节区数量) 改为 3#2在最后一个节区头后面增加一个节区头,假设新的节区在文件中占 200h,由于该程序的内存和文件的映射关系如图: 内存中的地址 文件中的地址 0x0040 汇编指令:rep stos 摘要是什么???
RSA 算法笔记 数学概念同余定理 如果两个数 a、b,模上某个数 p,得到的余数相同,则 a 和 b 同余,记作: a≡b(modp)a \equiv b \pmod{p}例如:37≡3(mod17)37 \equiv 3 \pmod{17} 5≡22(mod17)5 \equiv 22\pmod{17}≡ \equiv 和 == 非常相近,左右相等的式子可以变换相加、相减、相乘、相除,如下例子
关于 inc2l inc2l 可以帮助我们将 .inc 文件转换为 .lib 文件。关于 bug如果转换成功,会在当前目录下产生一个 kernel32.lib但是,如果该文件不在其原来的安装目录下,那么转换时将会失败,什么提示也没有。分析#1因为 inc2l 是加壳文件,用 esp定理 将壳脱去。使用 OD dump 出来后,可以再使用导入表恢复工具将导入表修复完整,程序就可以正常运行了。#2用 OD 将程序以输入
关于 ESP 定理 许多壳在执行加壳代码的开始和结束位置,分别会有 pushad 和 popad 来保存所有的寄存器环境。或者有些程序利用这一点,可以定位到程序真正代码的位置。–>练习程序下载打开程序后,程序的入口点就是汇编指令 pushad,下面的都是加壳代码。由于寄存器都入栈,此时栈顶以下的位置都存储了寄存器的环境。当加壳结束时,一定将寄存器的值出栈,所以,在寄存器全部入栈后,在右侧寄存器位置点击数据窗口跟随,然
流水账笔记:PE文件格式(导入表注入---手动) 简单记录一下手动的导入表注入方法,先挖个坑,以后有空再写代码,工具依然用的 010 Editor,以简单的“Hello, PE”程序为例。先准备一个 DLL,名称为 mydll.dll,导出函数为 fun#1修改数据目录下的导入表偏移和大小,我们将偏移修正为 0x2100,即根据转换公式(RVA To FOA),新的导入表在文件 0x700 位置#2找到新导入表的位置,将旧的导入表数据移动到新的位
流水账笔记:PE文件格式(手工增加节) 为方便理解,仅以“Hello, PE!”的小程序为例,使用工具 010 Editor: 当前程序目前有 2 个节区,且节头部分有足够的空间来增加另一个节头。#1将文件头的 NumberOfSection (节区数量) 改为 3#2在最后一个节区头后面增加一个节区头,假设新的节区在文件中占 200h,由于该程序的内存和文件的映射关系如图: 内存中的地址 文件中的地址 0x0040