自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (3)
  • 收藏
  • 关注

原创 32位系统函数重定向方法

一、32位系统下函数重定向说明 原理:找到想要hook的函数在内存中的地址,将函数的头几个字节保存在自己的内存中,用jump cpu指令改写函数的头几个字节,该指令会转移到替换函数的内存地址,(替换函数必修和被hook的函数标记完全相同),当被hook的函数被调用时,jump指令实际上将转移到替换函数上执行,实现hook的目的。  具体实现方法://修改API入口为 mov

2011-12-16 10:28:23 648

原创 使用socket在native 和metroAP之间进行通信

最近才开始看C# 中socket的部分,花了点时间学习,总算对socket 基于tcp协议的链接方式有了点点了解,记录下来:native和metro AP 建立链接的话,使用native当服务器,metro做clientnative端使用C# 创建server。//使用异步的方式建立监听:       // Socket client;        Socket server

2011-12-15 12:03:12 1020 2

原创 开启远程桌面编程方法-wmic

之前的文章中提到使用编程的方法开启远程桌面以下附上完整的code,编译通过  #include "stdafx.h" #include "atlbase.h"#include "Wbemcli.h"#include "comutil.h"#include #include #pragma comment(lib, "comsuppw.lib")#pr

2011-12-07 11:57:57 1083

翻译 编程开启远程桌面

如何使用编程的方法开启远程桌面:一、使用注册表,程序中自然可以使用修改注册表的方法HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\将fDenyTSConnection (REG_DWORD) 从1改为01、表示禁用0、表示启用但这种方式有些限制,比如修改注册表需要管理员权限,修改后重启远

2011-12-06 19:46:17 2648

原创 将AP加入防火墙例外C++ 方法可对比C#方法参考

头文件 #include "netfw.h"INetFwProfile* m_pFireWallProfile=NULL;//int FW_NOERROR = 0;//int FW_ERR_INITIALIZED = 1;//int FW_ERR_CREATE_SETTING_MANAGER = 2;//int FW_ERR_LOCAL_POLICY = 3;//int

2011-12-01 15:24:33 1102

原创 将AP加入防火墙例外C# 方法

微软有提供firewall的接口:firewallapi.dllC# 使用添加引用 NetFwTypeLib, C++ 中使用#include "netfw.h"以下为C#中的实现,        private void setFirewall()        {            Type TfwMgr = Type.GetTypeFromProgID("HNetCf

2011-12-01 15:20:59 2006

原创 windows核心编程学习笔记

许多操作系统的值是根据主机而定的,比如页面的大小,分配粒度的大小等。这些值决不应该用硬编码的形式放入你的源代码。相反,你始终都应该在进程初始化的时候检索这些值,并在你的源代码中使用检索到的值。G e t S y s t e m I n f o函数将用于检索与主机相关的值 Void GetSystemInfo(LPSYSTEM_INFO psinf)  必须传递S Y S T E

2011-11-23 17:23:18 437

原创 exe中获得资源字符串

以下在win32中的实现:bool StringResourceFind(LPTSTR strResExePath, int ID, LPTSTR *  pRresult) // 参数1 ,exe路径,参数2,想要获得的资源id, 参数3 返回的字符串{         int iGroup;         HRSRC hObject;         HGLOBAL hRe

2011-11-22 11:30:42 945

32位函数重定向,文件说明参考博客32位函数重定向

一、32位系统下函数重定向说明 原理:找到想要hook的函数在内存中的地址,将函数的头几个字节保存在自己的内存中,用jump cpu指令改写函数的头几个字节,该指令会转移到替换函数的内存地址,(替换函数必修和被hook的函数标记完全相同),当被hook的函数被调用时,jump指令实际上将转移到替换函数上执行,实现hook的目的。 具体实现方法: //修改API入口为 mov eax, 00400000;jmp eax使程序能跳转到自己的函数 BYTE g_bJumpTemplate[8] = { 0xB8, 0x0, 0x0, 0x40, 0x0, 0xFF, 0xE0, 0x0 };//第二到第五个字节将被替换为将要执行的函数的地址 1、找到MessageBox在内存中的地址(user32.dll中的MessageBoxW)(Kernel32.dll"中的 "CreateProcess") DWORD dwOldFuncAddr = (DWORD)GetProcAddress(hDll, cFuncName) ; 2、将函数的头8个字节读出并保存, 如保存到bOldJumpBytes中 ReadProcessMemory( hProcess, (void *)pHookApiInfo->dwOldFuncAddr, // pHookApiInfo->dwOldFuncAddr = dwOldFuncAddr (void *)pHookApiInfo->bOldJumpBytes, sizeof(DWORD)*2, NULL ) 3、用jump指令改写函数的头几个字节,指令会转移到要替换的函数的内存地址(替换函数必须和原函数标记完全相同,参数,返回值,调用规则必须一样) memcpy(pHookApiInfo->bNewJumpBytes, g_bJumpTemplate, 8) ; DWORD *pdwNewJumpAddr = (DWORD *)(pHookApiInfo->bNewJumpBytes + 1) ;//将要修改第2到第5个字节 memcpy(pdwNewJumpAddr, &dwNewFuncAddr, sizeof(DWORD)) ; 将替换函数地址写到原来函数开始的第2到第5个字节 // 将修改后的8个字节写回原来函数的地址中 if ( !WriteProcessMemory( hProcess, (void *)pHookApiInfo->dwOldFuncAddr, (void *)pHookApiInfo->bNewJumpBytes, sizeof(DWORD)*2, NULL ) ) { break ; } 以上即可实现函数的重定向,当系统调用messagebox时,则会执行到dwNewFuncAddr的函数中 取消挂载则是将保存的原来函数的前8个字节写回去即可。 缺点:在x 8 6、A l p h a和其他的C P U上的J U M P指令是不同的,必须使用手工编码的机器指令才能使这种方法生效,这种方法在抢占式多线程环境中也不适用 代码参考:hookapi_32 原文参考:windows核心编程第22章第9节

2011-12-16

64/32 hook api 实现

原理说明地址 http://www.codeproject.com/KB/winsdk/LibMinHook.aspx

2011-11-23

C++解码gif文件

gif文件格式说明,以及用C++解码gif文件

2009-08-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除