1.VC中&的使用
DWORD dwOldProtct = 0; VirtualProtect(lpAPI, 0x1000, PAGE_EXECUTE_READWRITE, &dwOldProtct);
其中VirtualProtect第四个参数是指针类型,意思就是需要第四个参数是一个地址,那么dwOldProtct参数的地址就是&dwOldProtct,引用这个参数,可以改变。
学习下引用和指针的区别,
C++小知识之指针和引用的区别(多看几遍有收获)
2.SEH,结构化异常处理程序,是(windows)操作系统提供给程序设计者的强有力的处理程序错误或异常的武器。
3.内存访问断点,是对内存中程序分页的操作(RWE,读取、写入、执行)?
是的
4.在MFC中使用windows的接口API函数,需要加两个冒号,即是::FindWindow()
5.怎么获取进程中API的地址?
6.硬件断点,就是使用4个调试寄存器(DR0,DR1,DR2,DR3)来设定地址,以及DR7设定状态,比如:对这个401000是硬件读还是写,或者是执行;是对字节还是对字,或者是双字。因此最多只能设置4个断点。
硬件断点优点是速度快,在INT3断点容易被发现的地方,使用硬件断点来代替会有很好的效果,缺点就是最多只能设置4个断点。
DR7是4个字节32位0000 0000 ,其中一个00代表一个字节8位,一个0代表4位
7.使用内存写入监视器,可以查看补丁修改的内容,分析破解的地方。
8.调用别人的DLL时,要明确几件事,
1) 函数的调用方式 stdcall
2) 函数的参数个数 retn 8 2
3) 函数的参数类型 字符串指针
4) 函数的返回值类型 int long bool char char* (返回-1)
对付输出函数名字 用了特殊手段处理的话,
我们可以用 序列号 来调用导出函数.
Makeintresource(x) 将一个数值转换成字符串指针 FARPROC Hello = GetProcAddress(hModule, MAKEINTRESOURCE(1));