首页
论坛
专栏
课程

[旧帖] [原创]利用SEH和INT3实现API HOOK 0.00元

2011-3-27 23:50 3561

[旧帖] [原创]利用SEH和INT3实现API HOOK 0.00元

2011-3-27 23:50
3561
用SEH技术实现API Hook,网上已经有帖子了,可是那些帖子太老,太陈旧,只是适用于95、95时代。
在XP上,网上说的方法根本行不通。

小弟刚学API HOOK, 有幸发现在XP上自由使用SEH链的方法,现在把成果公布出来大家一起分享^_^
各位大侠如果已经知道了,不要笑话小弟^_^

设置SEH链:
PVOID AddVectoredExceptionHandler(int 顺序,PVOID ErrorHander)

移除SEH链:
RemoveVectoredExceptionHandler(PVOID ErrorHander)

ErrorHander函数声明:
LONG WINAPI ErrorHandler(struct _EXCEPTION_POINTERS *ep)

好,我的方案是获得Debug权限(这样才能OpenProcess),然后把我的Dll绑到目标程序上。
Dll把SEH链设置好,就等着它上钩^_^

当然,因为SEH链是什么错误都处理的,上钩的不一定是我们想要的鱼,这时我们只要判断EIP就知道是不是我们要的鱼啦^_^

废话不多说,下面附上HOOK了DrawTextExW和TextOutW的程序,带源代码^_^

http://bbs.pediy.com/images/attach/png.gif


[公告][征集寄语] 看雪20周年年会(12.28上海) | 感恩有你,一路同行

上传的附件:
最新回复 (25)
hygsnfp 2011-3-28 19:57
2
0
这个也得要顶上去,,,,,
tihty 3 2011-3-28 20:27
3
0
不错,谢谢分享 :)
swlilike 2011-3-28 20:38
4
0
代码 这么规范,。。
有的地方写的还真详细
swlilike 2011-3-28 20:44
5
0
看到一个问题。。
BOOL GetPIDFromProcessName(LPCTSTR ProcessName)
{
        PROCESSENTRY32 pe;
        HANDLE ss;
        unsigned PID = 0;

        pe.dwSize = sizeof(pe);

        ss = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        Process32First(ss, &pe);
        do
        {
                if(!lstrcmp(ProcessName, pe.szExeFile))
                {
                        PID = pe.th32ProcessID;
                }
        }while(Process32Next(ss, &pe));
        CloseHandle(ss);
        SetLastError(0);
        return PID;
}

这里怎么会是BOOL 类型呢?
xiejienet 2011-3-28 21:12
6
0
哈哈,确实哦
不过windef.h里这样定义BOOL的
typedef int                 BOOL;
而微软的编译器int应该是32位的,那么用BOOL也可以存放PID的
不过感觉还是用ULONG或者DWORD规范一些
xiejienet 2011-3-28 21:15
7
0
有码就喜欢,版主应该给邀请码的吧
如果不给楼主可以消息我,我好像还可以买一个
weizehua 1 2011-3-28 23:31
8
0
谢谢你们的夸奖^_^
weizehua 1 2011-3-28 23:52
9
0
恩,那样确实很规范,这获得PID代码是复制的,原版就是用DWORD^_^

如果是DWORD,我就会去查,到底错误了会不会返回-1呢?
于是就不敢直接这样写:
if(!func())
    return err;

但是用BOOL,我就会很干脆地那样写,
所以我觉得BOOL更好哦^_^
yy大雄 2011-4-3 17:11
10
0
LZ的代码 看着就爽 。。
njxxdx 2011-4-4 00:02
11
0
不错   下载来看看
lidyt 2011-4-4 02:53
12
0
标记,回头来学习
liupanfeng 2011-4-4 03:07
13
0
谢谢LZ分享。。学习学习。
panti 2011-4-4 08:18
14
0
你这个太新了,让我鱼酷无类
赤目狂人 2011-4-4 10:57
15
0
支持!谢谢分享哈!学习了!
sunlulu 1 2011-4-4 18:35
16
0
支持楼主,学习了!呵呵!
guoye 2011-4-18 12:46
17
0
学习。。。。
hello学习 2011-10-20 21:38
18
0
在xp下为什么运行不成功那,打开记事本后运行程序,记事本就崩溃了。
雨花带雾 2011-11-3 10:51
19
0
mark
长剑 2011-11-3 11:04
20
0
不错的东东,感谢楼主了
dengyangpp 2011-11-18 15:45
21
0
等下要试试。。
谢lz@
littlewisp 2 2011-11-18 16:14
22
0
晚上回家看看
kxzjchen 2011-11-18 18:08
23
0
这个帖子得顶上去
kxzjchen 2011-11-18 18:19
24
0
这样会被360报无数字签名的,不知道哥们现在想到了方法吗?
gxmhack 2012-1-13 05:11
25
0
一个字,谢谢,我终于可以安心睡觉了
大头和尚 2012-1-16 15:54
26
0
多谢分享,学习下这种利用SEH Hook API的方法。
游客
登录 | 注册 方可回帖
返回