看楼主的代码好累(看了一眼就删了~) 楼上的说的好~~简单爆破之 ::00408645:: 75 36 JNZ SHORT 0040867D 写个内存补丁 {
{ CrackMe loader By Anskya Email:Anskya@Gmail.com Web:Www.Anskya.Net } program CrackMe_Loader;
uses Windows,TlHelp32;
const OldData : array[0..1] of byte = ($75,$36); NewData : array[0..1] of byte = ($90,$90);
var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; BytesRead : DWORD; TmpData : array[0..1] of Byte;
begin ZeroMemory(@StartInfo, SizeOf(TStartupInfo)); StartInfo.cb := SizeOf(TStartupInfo); if not CreateProcess(nil,'CrackMe.exe', nil, nil, False, Create_Suspended, nil, nil, StartInfo, ProcInfo) then Exit; ReadProcessMemory(ProcInfo.hProcess,Pointer($408645),@TmpData,2,BytesRead); if (TmpData[0] = OldData[0]) and (TmpData[1] = OldData[1]) then begin if WriteProcessMemory(ProcInfo.hProcess, Pointer($408645), @NewData, 2, BytesRead) then MessageBox(0,'恭喜补丁成功',nil,0) else MessageBox(0,'不好意思补丁失败',nil,0); end else begin MessageBox(0,'不好意思补丁失败',nil,0) end; ResumeThread(ProcInfo.hThread); CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end.
} |