pc微信ccd 3.55算法。
先得到父进程PID 例如 10704 转为十六进制 000029D0
得到父进程执行路径 例如 c:\windows\explorer.exe
伪代码:
#include <windows.h>
#include <iostream>
int main() {
DWORD pid = 1234; // 目标进程ID
HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
if (hProcess) {
WCHAR path[MAX_PATH];
DWORD size = MAX_PATH;
if (QueryFullProcessImageNameW(hProcess, 0, path, &size)) {
std::wcout << L"Process Path: " << path << std::endl;
} else {
std::cerr << "Error: " << GetLastError() << std::endl;
}
CloseHandle(hProcess);
} else {
std::cerr << "Failed to open process." << std::endl;
}
return 0;
}
获取长度 得到 0x17 (23),将执行路径长度 0x17 进行shr逻辑右移2位得到5作为循环次数
将 c:\windows\explorer.exe 转为十六进制 得到
575C3A43 C:\W
6F646E69 indo
655C7377 ws\e
6F6C7078 xplo
2E726572 rer.
00657865 exe.
从上往下依次读取循环次数5次,直到读取完 2E726572 为止,刚好5次
将每次读取到的十六进制和上一次异或后的值进行异或(xor),第一次的值为父进程PID 000029D0
例如:
xor 000029D0,575C3A43 得到 575C1393
xor 575C1393,6F646E69 得到 38387DFA
xor 38387DFA,655C7377 得到 5D640E8D
xor 5D640E8D,6F6C7078 得到 32087EF5
xor 32087EF5,2E726572 得到 1C7A1B87
最终得到 1C7A1B87,简称 值2
将值1和值2 拼接得到 000029D01C7A1B87 转为十进制 即为 3.55 字段数据 45973807700871
