zoukankan      html  css  js  c++  java
  • 内存补丁程序编写

    #include "stdafx.h"
    #include <windows.h>
    
    int main(int argc, char* argv[])
    {
    #define PATCH_ADDRESS 0x00408EC2
    
    	char szFileName[] = "5Star.exe";
    	BOOL flag = TRUE;
    	BYTE ReadBuffer[128] = {0};
    	BYTE TarGetData[] = {0x0F,0x85,0x0A,0x00,0x00,0x00};
    	BYTE WriteData[] =	{0x74,0x0E,0x90,0x90,0x90,0x90};
    	DWORD Oldpp;
    
    	STARTUPINFO si = {sizeof(STARTUPINFO)};
    	PROCESS_INFORMATION pi;
    	if (!CreateProcessA(szFileName,0,0,0,0,CREATE_SUSPENDED,0,0,&si,&pi))
    	{
    		MessageBox(NULL,"CreateProcess Failed","error",MB_ICONERROR);
    		return FALSE;
    	}
    	
    	while (flag)
    	{
    		ResumeThread(pi.hThread);
    		Sleep(10);//程序运行10MS
    		SuspendThread(pi.hThread);//看程序是否已解码
    		ReadProcessMemory(pi.hProcess,(LPVOID)PATCH_ADDRESS,&ReadBuffer,6,NULL);
    		if (0 == memcmp(TarGetData,ReadBuffer,6))
    		{
    			VirtualProtectEx(pi.hProcess,(LPVOID)PATCH_ADDRESS,6,PAGE_EXECUTE_READWRITE,&Oldpp);
    			WriteProcessMemory(pi.hProcess,(LPVOID)PATCH_ADDRESS,&WriteData,6,0);
    			ResumeThread(pi.hThread);
    			flag = FALSE;
    		}
    	}
    
    	
    	CloseHandle(pi.hProcess);
    	CloseHandle(pi.hThread);
    	return 0;
    }

    程序破解思路是    

    00408EC2   /0F85 0A000000   jnz 5Star.00408ED2				//改这里的跳位jz
    00408EC8   |6A 00           push 0x0
    00408ECA   |E8 065C0000     call 5Star.0040EAD5
    00408ECF   |83C4 04         add esp,0x4
    00408ED2   8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
    00408ED5    85DB            test ebx,ebx
    00408ED7    74 09           je X5Star.00408EE2
    


  • 相关阅读:
    第十六天-面向对象02-成员
    第十五天-面向对象01
    第十四天-内置函数
    第十三天-生成器
    第十二天-函数名 迭代器
    第十一天-函数进阶
    第十天-初识函数
    第九天- 文件操作 r w a 文件复制/修改
    objectives-c基本语法。
    今天开始了objective-c的学习!
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982522.html
Copyright © 2011-2022 走看看