Windows在开发的时候开发了一些很”邪恶的API”。

给予了我们程序员操控别的进程的一些权限。使不法分子想方设法使用这些API弄一些骚操作。

比如病毒(隐藏自己不被发现),外挂(读写,调用别的进程)。

所以有这些API的存在,使Windows成为了一个相对 不安全的系统。

因为不法分子可以随意调用这些API。

那么这一个Blog就谈一下常用的邪恶的API。

1
2
3
4
5
6
// 用来扫描进程快照。
// 用来扫描对应进程的所以模块,堆,线程信息
HANDLE CreateToolhelp32Snapshot(
DWORD dwFlags,
DWORD th32ProcessID
);
1
2
3
4
5
6
7
8
9
// 用来在其它进程中创建私有的物理内存
// 开辟别的进程的空间
LPVOID VirtualAllocEx(
HANDLE hProcess,
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flAllocationType,
DWORD flProtect
);
1
2
3
4
5
6
7
8
9
10
11
// 用来在其它进程中创建线程
// 常常用来在工具进程中调用远程进程的函数
HANDLE CreateRemoteThread(
HANDLE hProcess,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
1
2
3
4
5
6
7
8
9
10
// 改变已经commit物理内存的虚拟内存的权限
// 通常我们修改其它进程中的.text(代码区)的时候需要先
// 改变代码区为可读可写,再进行修改
BOOL VirtualProtectEx(
HANDLE hProcess,
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flNewProtect,
PDWORD lpflOldProtect
);
1
2
3
4
5
6
7
8
// 在其它进程的虚拟地址中进行修改 (写操作)
BOOL WriteProcessMemory(
HANDLE hProcess,
LPVOID lpBaseAddress,
LPCVOID lpBuffer,
SIZE_T nSize,
SIZE_T *lpNumberOfBytesWritten
);
1
2
3
4
5
6
7
8
// 读取其它进程中虚拟地址里面存储的值 (读操作)
BOOL ReadProcessMemory(
HANDLE hProcess,
LPCVOID lpBaseAddress,
LPVOID lpBuffer,
SIZE_T nSize,
SIZE_T *lpNumberOfBytesRead
);