求一个街头篮球解封方法器

1902人阅读
解封器:/aa54f760d110f177798df &(复制粘贴到浏览器)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
C#实现魔兽显血和改建功能(不影响聊天打字)
思路:Hook+SendMessage,
首先,因为我们要改的键war3不是自己写的程序,所以只能用Hook来监控键盘的按键:
键盘Hook:
C-sharp代码&
using&System.Runtime.InteropS&&
using&System.Windows.F&&
namespace&quickey&&
&&&&public&class&KeyboardHook&&
&&&&&&&&private&const&int&WM_KEYDOWN&=&0x100;&&
&&&&&&&&private&const&int&WM_KEYUP&=&0x101;&&
&&&&&&&&private&const&int&WM_SYSKEYDOWN&=&0x104;&&
&&&&&&&&private&const&int&WM_SYSKEYUP&=&0x105;&&
&&&&&&&&&&
&&&&&&&&public&event&KeyEventHandler&OnKeyDownE&&
&&&&&&&&public&event&KeyEventHandler&OnKeyUpE&&
&&&&&&&&public&event&KeyPressEventHandler&OnKeyPressE&&
&&&&&&&&static&int&hKeyboardHook&=&0;&&
&&&&&&&&&&
&&&&&&&&public&const&int&WH_KEYBOARD_LL&=&13;&&
&&&&&&&&public&delegate&int&HookProc(int&nCode,&Int32&wParam,&IntPtr&lParam);&&
&&&&&&&&&&
&&&&&&&&HookProc&KeyboardHookP&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&[StructLayout(LayoutKind.Sequential)]&&
&&&&&&&&public&class&KeyboardHookStruct&&
&&&&&&&&{&&
&&&&&&&&&&&&public&int&vkC&&
&&&&&&&&&&&&public&int&scanC&&
&&&&&&&&&&&&public&int&&&
&&&&&&&&&&&&public&int&&&
&&&&&&&&&&&&public&int&dwExtraI&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&[DllImport(&user32.dll&,&CharSet&=&CharSet.Auto,&CallingConvention&=&CallingConvention.StdCall)]&&
&&&&&&&&public&static&extern&int&SetWindowsHookEx(int&idHook,&HookProc&lpfn,&IntPtr&hInstance,&int&threadId);&&
&&&&&&&&&&
&&&&&&&&[DllImport(&user32.dll&,&CharSet&=&CharSet.Auto,&CallingConvention&=&CallingConvention.StdCall)]&&
&&&&&&&&public&static&extern&int&CallNextHookEx(int&idHook,&int&nCode,&Int32&wParam,&IntPtr&lParam);&&
&&&&&&&&&&
&&&&&&&&[DllImport(&user32.dll&,&CharSet&=&CharSet.Auto,&CallingConvention&=&CallingConvention.StdCall)]&&
&&&&&&&&public&static&extern&bool&UnhookWindowsHookEx(int&idHook);&&
&&&&&&&&private&int&KeyboardHookProc(int&nCode,&Int32&wParam,&IntPtr&lParam)&&
&&&&&&&&{&&
&&&&&&&&&&&&if&((nCode&&=&0)&&&&(OnKeyDownEvent&!=&null&||&OnKeyUpEvent&!=&null&||&OnKeyPressEvent&!=&null))&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&KeyboardHookStruct&MyKBHookStruct&=&(KeyboardHookStruct)Marshal.PtrToStructure(lParam,&typeof(KeyboardHookStruct));&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&if&(OnKeyDownEvent&!=&null&&&&(wParam&==&WM_KEYDOWN&||&wParam&==&WM_SYSKEYDOWN))&&
&&&&&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&&&&&Keys&keyData&=&(Keys)MyKBHookStruct.vkC&&
&&&&&&&&&&&&&&&&&&&&KeyEventArgs&e&=&new&KeyEventArgs(keyData);&&
&&&&&&&&&&&&&&&&&&&&OnKeyDownEvent(this,&e);&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&return&CallNextHookEx(hKeyboardHook,&nCode,&wParam,&lParam);&&
&&&&&&&&}&&
&&&&&&&&&public&void&Start()&&
&&&&&&&&{&&
&&&&&&&&&&&&if&(hKeyboardHook&==&0)&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&KeyboardHookProcedure&=&new&HookProc(KeyboardHookProc);&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&using&(System.Diagnostics.Process&curProcess&=&System.Diagnostics.Process.GetCurrentProcess())&&
&&&&&&&&&&&&&&&&using&(System.Diagnostics.ProcessModule&curModule&=&curProcess.MainModule)&&
&&&&&&&&&&&&&&&&hKeyboardHook&=&SetWindowsHookEx(WH_KEYBOARD_LL,&KeyboardHookProcedure,GetModuleHandle(curModule.ModuleName),&0);&&
&&&&&&&&&&&&&&&&if&(hKeyboardHook&==&0)&&
&&&&&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&&&&&Stop();&&
&&&&&&&&&&&&&&&&&&&&throw&new&Exception(&Set&GlobalKeyboardHook&failed!&);&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&public&void&Stop()&&
&&&&&&&&{&&
&&&&&&&&&&&&bool&retKeyboard&=&true;&&
&&&&&&&&&&&&if&(hKeyboardHook&!=&0)&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&retKeyboard&=&UnhookWindowsHookEx(hKeyboardHook);&&
&&&&&&&&&&&&&&&&hKeyboardHook&=&0;&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&if&(!retKeyboard)&&
&&&&&&&&&&&&&&&&throw&new&Exception(&Unload&GlobalKeyboardHook&failed!&);&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&public&KeyboardHook()&&
&&&&&&&&{&&
&&&&&&&&&&&&Start();&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&~KeyboardHook()&&
&&&&&&&&{&&
&&&&&&&&&&&&Stop();&&
&&&&&&&&}&&
创建全局Hook:
C-sharp代码&
&&&&&&&&KeyboardHook&hook&=&new&KeyboardHook();&&
private&void&Form1_Load(object&sender,&EventArgs&e)&&
&&&&&&&&{&&
&&&&&&&&&&&&hook.OnKeyDownEvent&+=&new&KeyEventHandler(hook_OnKeyDownEvent);&&
&&&&&&&&}&&
&&&&&&&&void&hook_OnKeyDownEvent(object&sender,&KeyEventArgs&e){&&
MessageBox.show(e.keyValue.toString());&&
打开war3,在里面按了几下键盘,弹出了看,有好几个对话框,说明可以监测到war3里面的按键,
我的思路是向窗口发送消息,必须找到获取窗口的句柄才行:
C-sharp代码&
&&&&&&&&[DllImport(&USER32.DLL&)]&&
&&&&&&&&public&static&extern&IntPtr&FindWindow(string&lpClassName,string&lpWindowName);&&
bool&isHookEnable&=&true;&&
private&const&int&WM_KEYDOWN&=&0x100;&&
private&const&int&WM_KEYUP&=&0x101;&&
void&hook_OnKeyDownEvent(object&sender,&KeyEventArgs&e)&&
&&&&if&(e.KeyCode&==&Keys.Scroll)&&
&&&&&&&&isHookEnable&=&!isHookE&&
&&&&&&&&this.Text&=&isHookEnable&?&&quickey-开启&:&quickey-停用&;&&
&&&&&&&¬ifyIcon1.Text&=&this.T&&
&&&&if&(isHookEnable)&&
&&&&&&&&IntPtr&war3&=&FindWindow(null,&&Warcraft&III&);&&
&&&&&&&&if&(war3&!=&IntPtr.Zero)&&
&&&&&&&&{&&
&&&&&&&&&&&&MessageBox.show(&找到war3了&);&&
&&&&&&&&}&&
运行,按了下弹出“找到war3了”这样就获得了war3窗口的句柄了
,剩下就是向窗口发送按键的消息了:
C-sharp代码&
先声明:&&
[DllImport(&User32.DLL&)]&&
public&static&extern&int&SendMessage(IntPtr&hWnd,uint&Msg,&int&wParam,&int&lParam);&&
if&(isHookEnable)&&
&&&&IntPtr&war3&=&FindWindow(null,&&Warcraft&III&);&&
&&&&if&(war3&!=&IntPtr.Zero)&&
&&&&&&&&if&(e.KeyCode&==&Keys.D)&&
&&&&&&&&&&&&&&&&&&&&&&&&SendMessage(war3,&WM_KEYDOWN,&(int)Keys.C,&0);&&
打开war3到创建游戏界面,按了下D,嗯?创建游戏了,说明消息发送成功
这样就可以将截获的按键来发送指定消息来“更改”按键了
C-sharp代码&
private&const&int&KEY_QUOTLEFT&=&219;&&
private&const&int&KEY_QUOTRIGHT&=&221;&&
if&(isHookEnable)&&
&&&&IntPtr&war3&=&FindWindow(null,&&Warcraft&III&);&&
&&&&if&(war3&!=&IntPtr.Zero)&&
&&&&&&&&SetForegroundWindow(war3);&&
&&&&&&&&&SendMessage(war3,&WM_KEYDOWN,&KEY_QUOTLEFT,0);&&
&&&&&&&&&SendMessage(war3,&WM_KEYDOWN,&KEY_QUOTRIGHT,&0);&&
&&&&&&&&&&&
&&&&&&&&SendMessage(war3,&WM_KEYDOWN,&int.Parse(hash[e.KeyValue.ToString()].ToString()),&0);&&
&&&&&&&&SendMessage(war3,&WM_KEYUP,&int.Parse(hash[e.KeyValue.ToString()].ToString()),&0);&&
ok,大体 就是这个思路,具体的代码可以到下面下载,
程序源代码(写的比较乱,将就了):quickey.rar:
欢迎转载,请注明出处!
界面如下:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5626次
排名:千里之外

参考资料

 

随机推荐