TA的每日心情 | 奋斗 2016-1-13 12:25 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
|
最新修正:http://www.dllhook.com/post/12.html
- <pre class="prettyprint lang-bsh">format MS64 COFF
- ;===================================================
- ;" X64 HOOK PiaoYun/P.Y.G "
- ;" www.chinapyg.com "
- ;" www.dllhook.com "
- ;" Fixed: 2016-10-08 "
- ;===================================================
- public GetRcx
- public JmpAddr
- public PatchBYTE
- public PatchWORD
- public PatchDWORD
- public PatchQWORD
- public AddFun
- ; Fixed 增加一个获取Rcx函数
- GetRcx:
- mov rax, rcx
- retn
- JmpAddr:
- xchg rax, rcx
- jmp rax
- PatchBYTE:
- mov rax, rcx
- mov [rax], dl
- retn
- PatchWORD:
- mov rax, rcx
- mov [rax], dx
- retn
- PatchDWORD:
- mov rax, rcx
- mov [rax], edx
- retn
- PatchQWORD:
- mov rax, rcx
- mov [rax], rdx
- retn
- AddFun:
- mov rax, rcx
- add rax, rdx
- retn</pre>
-
- 用FASM编译成obj,添加到VS2012即可~~~
- 测试代码:
- #include <windows.h>
- #include <stdio.h>
- // 宏定义
- #define EXTERNC extern "C"
- #define VOIDSTD EXTERNC void __stdcall
- #define INT64STD EXTERNC INT64 __stdcall
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // 汇编函数声明
- VOIDSTD GetRcx();
- VOIDSTD JmpAddr(INT64 addr);
- VOIDSTD PatchBYTE(INT64 addr, byte data);
- VOIDSTD PatchWORD(INT64 addr, WORD data);
- VOIDSTD PatchDWORD(INT64 addr, DWORD data);
- VOIDSTD PatchQWORD(INT64 addr, INT64 data);
- INT64STD AddFun(INT64 a, INT64 b);
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- VOID JmpFun()
- {
- MessageBox(NULL, TEXT("111"), TEXT("11111"), MB_OK);
- }
- VOID main()
- {
- printf("%I64X\n", AddFun(0x111111111, 0x222222222));
- GetRcx(); // Fixed 2016-10-08
- JmpAddr((INT64)&JmpFun);
- system("pause");
- }
复制代码
|
|