能力值:
( LV5,RANK:73 )
|
-
-
2 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
Sprite雪碧
*(DWORD*)JmpBtye[1]不用我多说了吧
额 取地址符号没给上吗~~
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
Sprite雪碧
*(DWORD*)JmpBtye[1]不用我多说了吧
虽然是成功了但直接废了我的messagebox没有弹出来了~~
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
return 0 ?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
DWORD oldProtect;
BYTE JmpBtye[5];
BYTE OldByte[5];
void * H1_Messagebox;
void * F1_Messagebox();
bool H1_MessageBoxA();
void UnHook();
//定义函数原型
int WINAPI My_MessageBoxA(
HWND hwnd,
LPCSTR lpTExt,
LPCSTR lpCaption,
UINT uType);
//自定义函数初始化
void * F1_Messagebox()
{
void * addr = 0;
HMODULE hModule = LoadLibraryA("User32.dll");
addr = (void *)GetProcAddress(hModule, "MessageBoxA");
return addr;
}
int WINAPI My_MessageBoxA(
HWND hwnd,
LPCSTR lpTExt,
LPCSTR lpCaption,
UINT uType)
{
char newText[1024] = { 0 };
lstrcpyA(newText, lpTExt);
lstrcpyA(newText, TEXT("\n\tMessageBox Hacked by pediy.com!"));
uType |= MB_ICONERROR;
UnHook();//这里 恢复 Hook 或自定义一个 跳回
return MessageBoxA(hwnd, newText,lpCaption,uType);
};
//取模块地址
//开始hook
bool H1_MessageBoxA()
{
void *addr = F1_Messagebox();
H1_Messagebox = addr;
if (addr == 0)
{
MessageBoxA(NULL, "error", NULL, 0);
return false;
}
VirtualProtect((void*)addr, 5, PAGE_EXECUTE_READWRITE, &oldProtect);
JmpBtye[0] = 0xE9;
DWORD dwJmp = (DWORD)My_MessageBoxA - (DWORD)addr - 5;
memcpy(&JmpBtye[1], &dwJmp, 4);
memcpy(OldByte, (void*)addr, 5);
memcpy((void*)addr, JmpBtye, 5);
return true;
}
//恢复
void UnHook()
{
memcpy((void*)H1_Messagebox, OldByte, 5);
DWORD p;
VirtualProtect((void*)H1_Messagebox, 5, oldProtect, &p);
}
int main()
{
H1_MessageBoxA();
MessageBoxA(NULL, "123", "456", NULL);
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
CrackFive
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include &quo ...
可以了!!!感谢
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
之前有试过这样子的返回的不知道什么原因编译不过 就以为不能这样子搞!!!!
|
|
|