📄 pubwin_loader.dpr
字号:
{
PubWin4 No Password loader By Anskya
Email:Anskya@Gmail.com
Web:Www.Anskya.Net
}
program PubWin_Loader;
uses
Windows,TlHelp32;
const
OldData : array[0..1] of byte = ($75,$09);
NewData : array[0..1] of byte = ($90,$90);
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
ProcessHndle,PID: HWND;
BytesRead : DWORD;
TmpData : array[0..1] of Byte;
FilePath:String;
function FindPath(PID:longword):String;
var
ModuleSnapshot: THandle;
Module32: TModuleEntry32;
begin
Result:='';
ModuleSnapshot := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE,PID);
if ModuleSnapshot>0 then
begin
Module32.dwSize := sizeof(Module32);
Module32First(ModuleSnapshot, Module32);
Result:=Module32.szExePath;
end;
end;
begin
GetWindowThreadProcessId(FindWindow('Afx:400000:0','Socket Notification Sink'), @PID);
if PID<=0 then Exit;
FilePath:=FindPath(PID);
if FilePath='' then Exit;
ProcessHndle:=OpenProcess(PROCESS_TERMINATE,FALSE,PID);
if ProcessHndle<= 0 then Exit;
TerminateProcess(ProcessHndle, 0);
CloseHandle(ProcessHndle);
ZeroMemory(@StartInfo, SizeOf(TStartupInfo));
StartInfo.cb := SizeOf(TStartupInfo);
if not CreateProcess(nil,Pchar(FilePath), nil, nil, False, Create_Suspended, nil, nil, StartInfo, ProcInfo) then Exit;
ReadProcessMemory(ProcInfo.hProcess,Pointer($40F43A),@TmpData,2,BytesRead);
if (TmpData[0] = OldData[0]) and (TmpData[1] = OldData[1]) then
begin
if WriteProcessMemory(ProcInfo.hProcess, Pointer($40F43A), @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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -