-
公告
- 黑夜给了我黑色的眼睛去寻找光明,阳光给了我明亮的眼睛我却是去寻找黑暗,所以我只有在夜里才出现真实的自己。(菩提本不树,明镜亦非台,本来无一物,何处染尘埃。)
-
写作时间
-
原创下载
-
最新文章
- [12/21]长沙南方职业技术学院一班主任殴打学生
- [12/20]获取网卡、硬盘、CPU硬件信息
- [12/16]北京欢迎你之盗版
- [12/12]飞信登录时的身份验证
- [12/12]Fetion分析之一:飞信协议类型
- [11/29]某论坛网友因涉嫌揭露政府黑幕被追捕
- [11/29]小哈第二天......
- [11/27]为我的小哈"祈福"
- [11/26]新"成员"---小哈
- [11/23]J8hacker.com 再度开启了....支持
- [11/23]柏拉图式的爱情
- [11/21]女人新标准
- [11/20]编写QQ显IP外挂插件及原理分析
- [11/20]程中加垃圾代码防杀毒
- [11/18]【17日紧急求助】一个父亲的求救,儿子遭歹徒绑架
-
最新评论
-
文章归档
-
Statistics
- 文章总数:194
- 评论总数:67
- 引用总数:0
- 浏览总数:240437
- 留言总数:0
- 当前样式:4u-HK
- 当前语言:zh-CN
-
友情链接
-
反向链接
给破解后的S-Demo做补丁[Delphi]
首先使用spy++获取需要打补丁程序的句柄。

program s_Demo;
uses
Windows,TlHelp32;
const
OldData : array[0..1] of byte = ($74,$5B); //Je判断为真跳转
NewData : array[0..1] of byte = ($EB,$5B); //JMP强行跳转
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('#32770','信息'), @PID); //通过句柄获取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($401FF9),@TmpData,2,BytesRead); //内存当中的地址
if (TmpData[0] = OldData[0]) and (TmpData[1] = OldData[1]) then
begin
if WriteProcessMemory(ProcInfo.hProcess, Pointer($401FF9), @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.


0 Comments , 0 Trackbacks
Jump to comment form | comments rss | Get trackback uri