永久修改机器码工具, exe一机一码破解工具,软件机器码一键修改工具【c++代码】

简介: 程序实现了完整的机器码修改功能,包含进程查找、内存扫描、模式匹配和修改操作。代码使用

下载地址:https://www.pan38.com/share.php?code=JCnzE 提取密码:7789

程序实现了完整的机器码修改功能,包含进程查找、内存扫描、模式匹配和修改操作。代码使用了Windows API进行内存操作,支持通配符模式匹配,可以批量修改找到的所有匹配项

include

include

include

include

include

class MemoryScanner {
private:
HANDLE processHandle;
DWORD processId;

public:
MemoryScanner(DWORD pid) : processId(pid) {
processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);
}

~MemoryScanner() {
    if(processHandle) CloseHandle(processHandle);
}

std::vector<BYTE> ReadMemory(LPVOID address, SIZE_T size) {
    std::vector<BYTE> buffer(size);
    SIZE_T bytesRead;
    ReadProcessMemory(processHandle, address, buffer.data(), size, &bytesRead);
    return buffer;
}

bool WriteMemory(LPVOID address, const std::vector<BYTE>& data) {
    SIZE_T bytesWritten;
    return WriteProcessMemory(processHandle, address, data.data(), data.size(), &bytesWritten);
}

std::vector<DWORD> FindPattern(const std::vector<BYTE>& pattern, const std::vector<BYTE>& mask) {
    std::vector<DWORD> results;
    SYSTEM_INFO sysInfo;
    GetSystemInfo(&sysInfo);

    MEMORY_BASIC_INFORMATION memInfo;
    BYTE* currentAddress = (BYTE*)sysInfo.lpMinimumApplicationAddress;

    while(currentAddress < sysInfo.lpMaximumApplicationAddress) {
        if(VirtualQueryEx(processHandle, currentAddress, &memInfo, sizeof(memInfo)) == sizeof(memInfo)) {
            if(memInfo.State == MEM_COMMIT && memInfo.Protect != PAGE_NOACCESS) {
                std::vector<BYTE> chunk(memInfo.RegionSize);
                SIZE_T bytesRead;

                if(ReadProcessMemory(processHandle, memInfo.BaseAddress, chunk.data(), memInfo.RegionSize, &bytesRead)) {
                    for(DWORD i = 0; i < bytesRead - pattern.size(); ++i) {
                        bool found = true;
                        for(DWORD j = 0; j < pattern.size(); ++j) {
                            if(mask[j] != 0xFF && chunk[i+j] != pattern[j]) {
                                found = false;
                                break;
                            }
                        }
                        if(found) {
                            results.push_back((DWORD)memInfo.BaseAddress + i);
                        }
                    }
                }
            }
            currentAddress += memInfo.RegionSize;
        }
    }
    return results;
}

};

class ProcessUtils {
public:
static DWORD GetProcessIdByName(const std::wstring& name) {
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);

    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if(snapshot == INVALID_HANDLE_VALUE) return 0;

    if(Process32First(snapshot, &pe32)) {
        do {
            if(!_wcsicmp(pe32.szExeFile, name.c_str())) {
                CloseHandle(snapshot);
                return pe32.th32ProcessID;
            }
        } while(Process32Next(snapshot, &pe32));
    }

    CloseHandle(snapshot);
    return 0;
}

};

int main() {
std::wstring processName = L"target.exe";
DWORD pid = ProcessUtils::GetProcessIdByName(processName);

if(pid == 0) {
    std::wcout << L"Process not found: " << processName << std::endl;
    return 1;
}

MemoryScanner scanner(pid);

// 示例:查找并修改特定机器码模式
std::vector<BYTE> pattern = {0x8B, 0x45, 0xFC, 0x83, 0xC0, 0x01, 0x89, 0x45, 0xFC};
std::vector<BYTE> mask = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
std::vector<BYTE> newCode = {0xC7, 0x45, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x90, 0x90};

std::vector<DWORD> addresses = scanner.FindPattern(pattern, mask);

if(addresses.empty()) {
    std::cout << "Pattern not found!" << std::endl;
    return 1;
}

for(DWORD addr : addresses) {
    if(scanner.WriteMemory((LPVOID)addr, newCode)) {
        std::cout << "Successfully modified code at: 0x" << std::hex << addr << std::endl;
    } else {
        std::cout << "Failed to modify code at: 0x" << std::hex << addr << std::endl;
    }
}

return 0;

}

include

include

include

include

include

pragma comment(lib, "iphlpapi.lib")

pragma comment(lib, "ws2_32.lib")

class NetworkAdapter {
public:
static void PrintAdaptersInfo() {
PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
DWORD dwRetVal = 0;
ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);

    pAdapterInfo = (IP_ADAPTER_INFO*)malloc(ulOutBufLen);
    if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
        free(pAdapterInfo);
        pAdapterInfo = (IP_ADAPTER_INFO*)malloc(ulOutBufLen);
    }

    if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
        pAdapter = pAdapterInfo;
        while (pAdapter) {
            std::cout << "Adapter Name: " << pAdapter->AdapterName << "\n";
            std::cout << "Description: " << pAdapter->Description << "\n";
            std::cout << "MAC Address: ";
            for (UINT i = 0; i < pAdapter->AddressLength; i++) {
                printf("%02X", pAdapter->Address[i]);
                if (i != pAdapter->AddressLength - 1) printf("-");
            }
            std::cout << "\nIP Address: " << pAdapter->IpAddressList.IpAddress.String << "\n";
            std::cout << "Subnet Mask: " << pAdapter->IpAddressList.IpMask.String << "\n";
            std::cout << "Gateway: " << pAdapter->GatewayList.IpAddress.String << "\n\n";
            pAdapter = pAdapter->Next;
        }
    } else {
        std::cerr << "GetAdaptersInfo failed with error: " << dwRetVal << "\n";
    }
    free(pAdapterInfo);
}

static bool ChangeMAC(const char* adapterName, const BYTE* newMAC) {
    HKEY hKey;
    char regPath[256];
    sprintf_s(regPath, "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\%04d", 
             atoi(adapterName));

    if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, regPath, 0, KEY_WRITE, &hKey) != ERROR_SUCCESS) {
        return false;
    }

    char macStr[18];
    sprintf_s(macStr, "%02X%02X%02X%02X%02X%02X",
             newMAC[0], newMAC[1], newMAC[2], newMAC[3], newMAC[4], newMAC[5]);

    if (RegSetValueExA(hKey, "NetworkAddress", 0, REG_SZ, (const BYTE*)macStr, strlen(macStr)+1) != ERROR_SUCCESS) {
        RegCloseKey(hKey);
        return false;
    }

    RegCloseKey(hKey);
    return true;
}

static bool SetStaticIP(const char* adapterName, const char* ip, const char* mask, const char* gateway) {
    DWORD dwRetVal = 0;
    PIP_ADAPTER_INFO pAdapterInfo = NULL;
    ULONG ulOutBufLen = 0;

    GetAdaptersInfo(pAdapterInfo, &ulOutBufLen);
    pAdapterInfo = (IP_ADAPTER_INFO*)malloc(ulOutBufLen);

    if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) != NO_ERROR) {
        free(pAdapterInfo);
        return false;
    }

    PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
    while (pAdapter) {
        if (strcmp(pAdapter->AdapterName, adapterName) == 0) {
            break;
        }
        pAdapter = pAdapter->Next;
    }

    if (!pAdapter) {
        free(pAdapterInfo);
        return false;
    }

    PIP_ADAPTER_INFO pAdapterToChange = pAdapter;
    free(pAdapterInfo);

    // 设置IP地址
    IP_ADDR_STRING* pIpAddr = &(pAdapterToChange->IpAddressList);
    strcpy_s(pIpAddr->IpAddress.String, 16, ip);
    strcpy_s(pIpAddr->IpMask.String, 16, mask);

    // 设置网关
    IP_ADDR_STRING* pGateway = &(pAdapterToChange->GatewayList);
    strcpy_s(pGateway->IpAddress.String, 16, gateway);

    // 应用设置
    DWORD dwSize = 0;
    GetAdaptersInfo(pAdapterToChange, &dwSize);
    dwRetVal = SetAdaptersInfo(pAdapterToChange, dwSize);

    return dwRetVal == NO_ERROR;
}

};

int main() {
std::cout << "=== Current Network Adapters ===" << std::endl;
NetworkAdapter::PrintAdaptersInfo();

// 示例:修改MAC地址 (需要管理员权限)
BYTE newMAC[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};
if(NetworkAdapter::ChangeMAC("0000", newMAC)) {
    std::cout << "MAC address changed successfully!" << std::endl;
}

// 示例:设置静态IP
if(NetworkAdapter::SetStaticIP("0000", "192.168.1.100", "255.255.255.0", "192.168.1.1")) {
    std::cout << "IP configuration updated!" << std::endl;
}

return 0;

}

相关文章
|
1天前
|
Java 数据安全/隐私保护
快手小红书抖音留痕工具,自动留痕插件工具,java代码开源
这个框架包含三个核心模块:主操作类处理点赞评论、配置管理类和代理管理类。使用时需要配合
|
5天前
|
Android开发
安卓虚拟摄像头替换摄像头, 微信虚拟相机替换拍照,安卓免root虚拟摄像头
虚拟摄像头系统包含多个组件:主摄像头类、预览面板、驱动接口、DirectShow实现和管理类
|
1天前
|
存储 数据可视化 JavaScript
强!54K+ star!一款解放双手,可视化自动化神器,支持400个节点!!
n8n是一款开源可视化工作流自动化工具,支持超400种节点,涵盖主流应用与服务。通过拖拽节点、连接流程,用户可轻松构建复杂自动化任务,适用于个人与企业场景。其强大脚本支持、自定义扩展及企业级功能,助力高效流程管理,提升生产力。
77 43
|
1天前
|
监控 算法 数据处理
Python 3.14七大新特性总结:从t-string模板到GIL并发优化
本文基于当前最新的beta 2版本,深入分析了Python 3.14中的七项核心新特性。
18 4
Python 3.14七大新特性总结:从t-string模板到GIL并发优化
|
1天前
|
数据可视化 IDE Java
OneCode图生代码技术深度解析:从可视化设计到注解驱动实现的全链路架构
OneCode图生代码技术通过可视化设计与Java注解驱动,实现UI到代码的高效转换,支持设计即开发、组件复用与动态加载,提升企业应用开发效率与协作能力。
OneCode图生代码技术深度解析:从可视化设计到注解驱动实现的全链路架构
|
2天前
|
前端开发 数据安全/隐私保护
股票持仓截图生成器手机版, 股票持仓图生成器免费,交割单生成器制作工具
代码实现了一个完整的股票持仓截图生成器,包含数据模拟、表格绘制、汇总计算和水印添加功能。
|
1天前
|
人工智能 数据安全/隐私保护 C++
一键解除机器码工具,电脑机器码修改工具,永久修改机器码工具【c++】
有时候我们用一些工具的时候发现经常会被限制,尤其是AI编程工具,最喜欢限制人的机器码,但是我们又
|
1天前
|
供应链 数据挖掘 API
1688商品详情API全字段解析:从基础参数到SKU深度挖掘
1688商品详情API为开发者提供高效获取商品信息的官方通道,支持自动化获取标题、价格、库存等核心数据,适用于电商开发、数据分析及供应链管理。接口支持灵活参数配置,并提供Python调用示例,便于快速集成与应用。
|
1天前
|
Java 编译器
toString()、String.valueOf、(String)强转,有什么区别?
我是小假 期待与你的下一次相遇 ~
|
2天前
|
数据可视化 容器
股票假图一键生成器,股票账户模拟生成器,股票交割单生成器
这个代码示例展示了如何生成随机股票数据,但请注意实际应用中应使用真实数据源。如果您需要完