VC/MFC
VB
Delphi
C++ Builder
C/C++
Java
.NET技术
MS-SQL Server
PowerBuilder
DB2
Oracle
Web 开发
Linux/Unix社区
硬件/嵌入开发
移动平台
您的位置:
程序门
->
vc/mfc
-> 进程/线程/dll
设置api hook 的时候,修改内存会导致崩溃?
[
收藏此页
] [
打印本页
]选择字色:
默认
灰色
红色
黄色
绿色
橙色
紫色
蓝色
褐色
墨绿
深蓝
赭石
粉绿
淡绿
黄灰
翠绿
综红
砖红
淡蓝
暗红
玫瑰红
紫红
桔黄
军黄
烟灰
深灰
灰蓝
背景色:
默认
黑色
红色
黄色
绿色
橙色
紫色
蓝色
褐色
墨绿
深蓝
赭石
粉绿
淡绿
黄灰
翠绿
综红
砖红
淡蓝
暗红
玫瑰红
紫红
桔黄
军黄
烟灰
深灰
灰蓝
字体:[
大
][
中
][
小
]
设置api hook 的时候,修改内存会导致崩溃?
[已结贴,结贴人:vincentcsdn]
发表于:
2007-12-20 15:13:19
楼主
我使用inline hook做api hooking,修改api入口前5 个地址跳转到我的函数
其他api都不会有问题,唯独openeventw 和 ntopenevent会有问题
只要修改这两个api的前5个字节就会崩溃掉,也没有异常抛出。
我也查过进程内应该是没有其他线程正在调用这个api
最奇怪的是,如果用调试器挂上目标进程,就可以通过。
另外,如果使用改iat的方法可以hook openeventw, 但是ntopenevent同样会崩溃。
请教一下是什么原因?
发表于:
2007-12-20 15:17:35
1
楼 得分:
11
up
发表于:
2007-12-20 16:58:22
2
楼 得分:
11
会不会是权限问题?你的进程是什么权限?
帮你顶
发表于:
2007-12-20 17:08:09
3
楼 得分:
11
你从内核挂,挂之前将irql提至较高级,以防其中有例程打断修改过程,试试看。
发表于:
2007-12-20 17:26:40
4
楼 得分:
0
权限不是问题,我试过把那个地方内存读出来,再写回去,没问题的。
我不希望进入内核做,希望能在普通用户下搞定。
发表于:
2007-12-20 18:18:19
5
楼 得分:
11
不知道楼主是什么系统?列一下win2k sp4的openeventw头部:
assembly code
55
push
ebp 8b ec
mov
ebp, esp
83
ec
24
sub
esp, 24h
这里如果你仍然使用5个字节做inline的话,那死掉应该是没错的。
发表于:
2007-12-20 19:20:48
6
楼 得分:
11
内存访问权限没有设吧,或者是有cpu保护。关掉cpu保护试试看。
发表于:
2007-12-20 21:23:12
7
楼 得分:
0
不知道楼主是什么系统?列一下win2k sp4的openeventw头部:
assembly code55 push ebp
8b ec mov ebp, esp
83 ec 24 sub esp, 24h
这里如果你仍然使用5个字节做inline的话,那死掉应该是没错的。
不是这个问题,我都是计算过每个api入口应该修改的字节数的,并保留一个副本用作重入的。其他api都是正常的。
而且xp下ntopenevent第一条指令就刚刚好是5个字节的。
内存访问权限没有设吧,或者是有cpu保护。关掉cpu保护试试看。
内存我是设置为EXECute_writecopy 的,我用来测试的cpu是没有硬件dep的,应该是没有影响吧?
我确认一下先。
最令我不解的是为什么调试器挂上的进程就没有这个问题,哪位能讲讲调试器究竟做了些什么小动作?
发表于:
2007-12-20 23:16:40
8
楼 得分:
11
如果修改iat仍然崩溃那只能说明你的hook代码有问题, 有访问异常或者堆栈溢出
发表于:
2007-12-21 08:08:40
9
楼 得分:
12
如果你在改的时候被打断了,这是肯定会崩溃。而且ntopenevent还是比较常用的native api,
这个都很难说。
发表于:
2007-12-21 09:21:24
10
楼 得分:
11
我hook msn send api 结果也过也挂了。
发表于:
2007-12-21 09:24:54
11
楼 得分:
11
好像禁止hook这个函数
发表于:
2007-12-28 15:22:51
12
楼 得分:
0
问题解决了。
是debugoutputstring的问题
我在dummy openevent里输出了调试信息,而debugoutputstring内部也调用了openevent, 形成了无限递归,堆栈溢出。
下一篇:
【招聘】上海维西网络科技有限公司(verycd)
上一篇:
vc添加mfc42d.dll 问题!
相关文章
单选按钮有哪些相关的函数啊?
在线等候:怎么把lpctstr类型的字符串赋值给char...
有谁做过流媒体服务器(调用helix内核也行)
怎样定位哪个dll的哪行代码出错?
大家vc都用的哪个版本?vc6 or vs2003...
向窗口标题栏添加真正的控件
csocket如何使收发端同步
振幅谱问题
一个简单的dll问题,问题究竟在哪里啊?以前没碰...
vc程序员最喜欢看到的字符串
如何创建位图按钮?
谁能说说在dll中使用标准库(如string,vector)的...
qq中的抓屏功能是怎么实现的?
怎么知道一个文件正在被哪个程序打开?
求救:用vc编opengl程序如何在窗口上添加菜单按钮...
请问一下_variant_t是 什么意思?_bstr_t如...
问:如何将截获的网络数据提交给应用程序?
主窗口和子窗口显示的问题
我建了个dialog类,但左边的树型目录中没有显示
window上经常用到的一种列表,怎么实现,急急急!...
其他资讯
如何获取鼠标在任务按钮点击的消息?
为什么写了一个atl dll,用vb调用可以正常使...
*(lpnewdibbits+offsetj)与 *(lpnewdibbi...
怎样实现可以设置其显示内容的drop list类型...
[mfc]在nameview.cpp中定义常量和在resource.h定...
vc里边的debug时的watch窗口怎么实现的?
兼容dc显示透明bmp的问题
请问下怎么在vc++6.0下操作webbrowser控件中的pp...
lnk4022: cannot find unique&nb...
静态函数里调用settimer
开关机与权限问题
combobox的edit控件怎么响应回车键?
dll与exe传递空指针问题
vc下的对话框child类型总无事件反应?
vc7编写的com中调用dll有何特殊之处吗?
invalidaterect和invalidate
vc读取access位图问题
求助:c++语法问题
win32应用程序中滚动文字如何实现?用setscrolli...
急用关于调试的问题
快速检索
分类导航标签a
专题开发/技术/项目英保通解决方案
VC/MFC资源
社区支持公告
.NET技术.NET技术前瞻
扩充话题活动聚会
Windows专区安全技术/病毒
C++ BuilderAPI
WebSphereIntegratorr
软件培训/认证/考试软件认证
WebSphereServer
Oracle基础和管理
其他数据库开发InterBase
其他开发语言Kylix
Linux/Unix社区Solaris
C/C++C++
最新资讯
初学者碰到一个问题:看看一个输出,为何如此?
导出为word
类型转化问题
如何将视图里的数据转成excel和txt档(b/s)
初学请教:double型赋值为什么总为0.000000
如何从servlet当中跳转到jsp页面,并把数据传送过...
shmget(), 共享内存该如何使用
mysql数据库页面显示中文乱码的问题!!!
system 执行apache的 htdigest &...
抽象类是否可继承实体类(concrete class)?...
linux下实现了des加密算法了吗?
关于owc11的注册问题,请owc高人们进来看一下
求助:jni中中文的问题该如何解决啊??(急)
如何销毁一个全局的类的实例
200分高分请教网站价格问题。
有关组合控件的问题,请高手赐教
谁有这篇文章:<<using c++ tem...
帮测试下软件
高手们来帮帮小弟弟,关于ip问题,非常感谢!
windowsxp下使用setsyscolors改变color_activeca...
请教:vc中编译连接出错
坐标转换问题
程序偶尔跳掉一段程序后继续往下执行(如何解决)...
北京 招聘vb程序员 月薪5000元
使用feedcreator类创建rss feed的时候,生成...
程序员和软件工程师有什么分别?总有人认为一样的...
有以下学生管理系统 程序给一个呗!(...
怎么来定义拿人人narr[], 这个[]里面的东西...
中缀表达式转二叉树
有知道帮忙看看是怎么回事啊?
fileexists报错问题,在线等!!!!
flash在根目录下显示,在二级目录下不显示的问题...
如何根据网卡地址,获取机器名或ip
cimagelist draw为何画不出图像来?
sql问题,高手进,在线等
求高效的多线程代码!!谢谢
得到系统当前日期,如何正确推出昨天的日期?
怎样取消预编译头文件?~~~~~
true image 硬盘分区还原遇到的奇怪问...
gmail是不是很烂很烂啊
热门点击
实战经验性问题,高手请指教
公司急聘php程序员
access的id字段如何能用insert into進行sql...
chttpfile传送跟接收问题
tomcat服务器有时候会突然增加cpu消耗而无法正常...
建数据库别名问题
telnet登录solaris不显示中文
请问如何把查询的结果集写入表中
org.apache.jasper.jasperexception: unabl...
线程中调用savefiledialog的showdialog方法
各位兄弟姐妹,谁能给我一个sqlserver2000英文开...
有谁做过无刷新页面弹出类似msn消息框,并且是实时...
谁有ddephi下用intraweb开发b/s系统的实例啊!最好...
关于.net从数据库读html代码编译后时 &...
急急急!将treeview中的数据导出为xml格式 ...
关于多图片显示的问题,急求
新手求助:如何用javascript实现鼠标单击时链接....
求助:stl deque find()
如何弹出的对话框最小化时显示到任务栏
如何计算每个进程的cpu占用,就像任务管理器中的进...
java开发高性能的并发socket服务器最合适的是不是...
ora-06502: pl/sql: 数字或值错误,应...
amd64位双核对我们用asp.net有什么影响?
如何实现在线帮助功能
关于uclinux内核编译下载到arm7 44b0的ram不...
关于service启动时spring配置文件总是报错的问题...
用textbox录入数据库不成功!
关于警告conversion from "doubl...
请指教:c#中显示窗体(及其上的控件)有几种方法...
c#串口的菜鸟问题
在vb中怎样才能顺利读取另外一台电脑的文件?(不...
散分喽!!!
机箱前面的声音和麦的插槽如何接在主版上啊?
如何让dbgrid只显示查询结果的问题?
请问如何返回jinternalpane里面某个被选定的jscr...
有学jogl的吗?关于applet的问题,谢
mssql数据库 占用100%cpu 如何确...
如何拖动一个层后,取得他的坐标,然后保存
这段代码能否遍历二叉树
急求!!!