随笔分类 - 滴水逆向笔记
摘要:第六十五课 进程通信 1.共享内存 发送端代码 #include <Windows.h> #include <stdio.h> int main() { HANDLE hMapObject; HANDLE hMapView; //创建FileMapping对象 hMapObject = Create
阅读全文
摘要:第六十三课 IAT HOOK 这节课得把前面PE部分的IAT表复习好,再来做就简单多了 1.IAT HOOK是什么 其实就是找到IAT表的位置再换成自己定义的函数,只是我们替换的函数需要和原函数的结构保持一直,比如我们要HOOK Messagebox函数,那么我们需要定义一个MyMessagebox
阅读全文
摘要:第六十一课 CE使用 下载完CE后用ce自带的小作业练练 1.第二题 先打开进程First scan搜索100,发现有很多100,我们先让右边程序Hit me,然后Next scan搜索96,发现已经搜出来了,正常数据会很多,就需要继续改继续搜,最后点击下面value修改为1000即可 2.第三题
阅读全文
摘要:第五十九课 win32 枚举窗口_鼠标键盘事件函数 1.查找指定窗口 ::FindWindow()函数获取窗口句柄,再通过句柄控制窗口,函数的参数可以通过vs的spy++工具获得 TCHAR szTitle[MAX_PATH] = {0}; HWND hwnd = ::FindWindow(TEXT
阅读全文
摘要:第五十七课 win32 进程创建 1.进程创建的过程 父进程创建子进程,父进程挂了子进程不会挂 0x00 程序、imagebuffer、进程的关系 程序就是一个普通的二进制文件;imagebuffer就是程序拉伸到内存后的二进制文件,但是没有线程去执行他,进程则是有线程去运行这个imagebuffe
阅读全文
摘要:第五十四课 win32 事件 1.什么是内核对象 内核对象:进程、线程、文件、文件映射、事件、互斥体等等 2.事件内核对象的创建 HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性 NULL时为系统默认 BOOL
阅读全文
摘要:第五十二课 win32 临界区 1.线程安全问题 其实就是多个线程同时对一个资源(即全局变量等)进行操作 2.临界区 设计图 临界区的使用 1、创建CRITICAL_SECTION: CRITICAL_SECTION cs; 2、在使用前进行初始化 InitializeCriticalSection
阅读全文
摘要:第五十课 win32 创建线程 1.进程与线程 程序就是在硬盘里还没跑起来的二进制文件,进程就是已经运行中的程序,一个进程至少有一个线程,比如一个正在举行的活动需要几十个人帮忙干活,进程就是那个活动,线程就是那几十个人 一个线程启动是需要占用一个cpu的 一个新线程也会创建一个新堆栈 进程就是一个4
阅读全文
摘要:第四十八课 win32 提取图标_修改标题 1.添加图标 a,.右键添加icon时不要直接新建,导入b. 加载图标 :::info HICON hIcon;hIcon = LoadIcon (hAppInstance, MAKEINTRESOURCE (IDI_ICON)); hAppInstanc
阅读全文
摘要:第四十五课 win32 esp寻址_定位回调函数 自己vs编译的exe入口函数好像和课程视频哩的vc6不一样,没办法跟着视频走,可以用课件里给的作业exe勉强跟着视频学,前面的都差不多,课件下载地址:https://www.bcdaren.com/video/videoPlay/3303185150
阅读全文
摘要:第四十三课 win32 宽字节 1.编码 0x00.ASCII码 1、ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符2、标准 ASCII 码使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字符。
阅读全文
摘要:第四十课 c++8 new-delete-vector 1.内存空间复习 在类外函数外的变量就是全局变量,程序一编译地址就已经确定了的 临时数据,参数和局部变量就是在堆栈里 而使用malloc函数动态申请的则是在堆里 2.跟踪调试反汇编函数 我们调用malloc函数申请内存,但是不是malloc一个
阅读全文
摘要:第三十八课 c++6 模板 1.冒泡排序和折半查找 void Sort(int* arr,int nLength) { int i; int k; for(i=0;i<nLength-1;i++) { for(k=0;k<nLength-1-i;k++) { if(arr[k]>arr[k+1])
阅读全文
摘要:第三十六课 c++3 权限控制 1.定义和实现分开写 2.private和public private权限说明 私有变量在类外是无法访问的,只有在类内或者使用类内函数访问 类内函数访问 3.private真的不能访问吗 反汇编看看t对象在初始化public和private成员时都是一视同仁的,在底层
阅读全文
摘要:第三十四课 c++1 this指针 海哥的一句话:学c++就是学编译器帮我们做了多少事情 1.结构体参数传递 结构体直接作为函数参数传递时,本质上是将结构体成员copy一份传到函数的栈中,这样会比较浪费空间。所以一般我们使用结构体指针传参 struct Base{ int x; int y; /*i
阅读全文
摘要:第三十一课 重定位表 一.引入重定位表 1.程序加载过程 程序加载后,操作系统会给程序分4GB虚拟内存, 先装载自身的.exe:如先把ipmsg.exe拉伸贴到ImageBase(0x00400000),分配空间大小为SizeOfImage(0x3D000) 但并不是所有文件的ImageBase都是
阅读全文
摘要:第二十八节课 数据目录 1.数据目录是什么 可选PE头最后一个成员,就是数据目录,一共有16个分别是:导出表的数据目录、导入表的数据目录、资源表的数据目录、异常信息表的数据目录、安全证书表的数据目录、重定位表的数据目录、调试信息表的数据目录、版权所有表的数据目录、全局指针表的数据目录、TLS表的数据
阅读全文
摘要:第二十五课 FileBuffer-ImageBuffer 1.PE文件执行的总过程 第二十三课已经说过了,文件先复制一份读入虚拟内存中(FileBuffer),接着要运行时将FileBuffer中的文件数据拉伸,重载到4GB的虚拟内存中(ImageBuffer) 但ImageBuffer还不是文件运
阅读全文
摘要:第二十三课 PE头手动解析 参考文章https://blog.csdn.net/Edimade/article/details/124540050?spm=1001.2014.3001.5502 1.PE结构前言 a.硬盘和加载到内存的文件结构异同 硬盘上的exe打开后首地址是从0开始(逻辑地址);
阅读全文
摘要:第二十课 c语言13 多级指针 数组指针 函数指针 1.多级指针反汇编 一二级指针 可以看到p1== *(p1+0) == p1[0]本来一直没想懂为什么是movsx ecx,byte ptr [eax],是byte,才发现p1是char类型,所以才得用movsx拓展(p1+2) == p1[2],
阅读全文

浙公网安备 33010602011771号