bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
阅读:1894回复:10

[bmyyyud垃圾原创]hook全部-1中断,tiamo好久不出原创了,老朽顶一下

楼主#
更多 发布于:2005-04-25 10:04
嘿嘿,偷懒一下,利用了一下以前的工程,执行w2k_hook *,然后用softice的idt看全部中断被截获,按esc后再看,全部恢复
感觉VC对嵌入汇编编译太差,编译是一条对应一条的,但如果没有对应的汇编指令,vc不提示你出错,胡着按字面编译一个,等你跟踪到那里,一看就错了,想后悔都来不及,只有兰屏,再重启计算机,浪费很多时间。各位在遇到这种情况,有没有简单的直接返回OS不兰屏的方法么
心得都写在附件中的注视里了
附件名称/大小 下载次数 最后更新
2005-04-25_UnWin2k_hookint.rar (2873KB)  228
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2005-04-25 10:39
当然可以,你在SOFTICE中可以随意修改EIP和指令,发现不对的地方用A然后用NOP指令代替,注意指令长度必须一致,或者直接修改EIP到退出的地方,当然你得注意平衡你的堆栈.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-25 10:48
当然可以,你在SOFTICE中可以随意修改EIP和指令,发现不对的地方用A然后用NOP指令代替,注意指令长度必须一致,或者直接修改EIP到退出的地方,当然你得注意平衡你的堆栈.

就是“当然你得注意平衡你的堆栈“这个比较麻烦,尤其是在中断处理中,有没有软件或调试器象SEH那样替我处理一下
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-25 11:14
当然可以,你在SOFTICE中可以随意修改EIP和指令,发现不对的地方用A然后用NOP指令代替,注意指令长度必须一致,或者直接修改EIP到退出的地方,当然你得注意平衡你的堆栈.

不仅仅是堆栈,还有寄存器中的值也要注意
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
地下室#
发布于:2005-04-25 21:39
没有明白你说vc的inline 汇编错在什么地方?

我用inline asm多了..
游戏引擎特别是图形引擎2d方面
底层全是清一色的mmx汇编啊

语法错vc能很清楚的识别啊
至于逻辑错
不应该怪vc本身吧...

偶最近忙.....刚刚作完一3d图形引擎还没有来得及测试
马上就被弄去作服务器的server引擎....
而且也不知道下一个分析个什么东西比较适合我现在的水平
acpi吧..又看不懂..
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-26 09:03
没有明白你说vc的inline 汇编错在什么地方?

我用inline asm多了..
游戏引擎特别是图形引擎2d方面
底层全是清一色的mmx汇编啊

语法错vc能很清楚的识别啊
至于逻辑错
不应该怪vc本身吧...

偶最近忙.....刚刚作完一3d图形引擎还没有来得及测试
马上就被弄去作服务器的server引擎....
而且也不知道下一个分析个什么东西比较适合我现在的水平
acpi吧..又看不懂..

好久不用汇编了,见笑了
比如
mov eax, [dHooks1 + 4 * n]
dHooks1, n都是局变
由于汇编没有内存间址指令,应该是非法的
但vc编译后却变成
mov eax, [ebp - xxx + 4 * ebp - xxx]
完全按字面编译,而且不提示错误!!!郁闷。。。


滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
6楼#
发布于:2005-04-27 15:57
这.....似乎不能怪vc吧.....

vc得那个是inline asm
又不是macro asm

读读msdn关于vc得inline asm的语法吧...

作汇编的话...

nasm是个很不错的东西

nasm + tlink32 + softice这配合我用了很久....
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-27 16:23
这.....似乎不能怪vc吧.....

vc得那个是inline asm
又不是macro asm

读读msdn关于vc得inline asm的语法吧...

作汇编的话...

nasm是个很不错的东西

nasm + tlink32 + softice这配合我用了很久....

我是用Masm32 + Softice,这个感觉更好,Masm32用的是Mams6.11,他的Obj是Coff格式的,比较符合当前的Windows要求
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-27 16:26
nasm生成的是OMF格式的吧,老弟觉得nasm哪里不错呢,或许给我这老脑筋转转弯
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
9楼#
发布于:2005-04-27 23:15
nasm是全格式制霸的

也能生成coff格式的....

nasm虽然有一个很大的限制就是在符合使用上的
但是nasm提供的宏的功能太强大了..
实在舍不得扔掉

extern _RtlRaiseException@4

; void __stdcall _CxxThrowException(void *pObject,_s_ThrowInfo const* pThrowInfo)
function __CxxThrowException
proc __CxxThrowException@8
%$pObject		arg
%$pThrowInfo	arg
%$msException	locvar 20h
				endlocvar
																
				mov		dword var(%$msException + EHExceptionRecord.ExceptionCode),MSC_EXCEPTION_NASM
				mov		dword var(%$msException + EHExceptionRecord.ExceptionFlags),EXCEPTION_NONCONTINUABLE_NASM
				mov		dword var(%$msException + EHExceptionRecord.ExceptionRecord),0
				mov		dword var(%$msException + EHExceptionRecord.ExceptionAddress),0
				mov		dword var(%$msException + EHExceptionRecord.NumberParameters),MSC_EXCEPTION_PARAM_NUMBER_NASM
				mov		dword var(%$msException + EHExceptionRecord.magicNumber),MSC_MAGIC_NASM
				mov		eax,var(%$pObject)
				mov		dword var(%$msException + EHExceptionRecord.pExceptionObject),eax
				mov		eax,var(%$pThrowInfo)
				mov		dword var(%$msException + EHExceptionRecord.pThrowInfo),eax
				lea		eax,var(%$msException)
				push	eax
				call	_RtlRaiseException@4
endproc


贴个代码上来瞧瞧
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
10楼#
发布于:2005-04-27 23:25
当时我是觉得masm太复杂了
那文档实在看不下去了
才在某高人的怂恿下试试了这个open source 的nasm
一下子就喜欢上了....
因为他是open source的..所以文档很全文字也浅显易懂.
而且还有好多的教程...上手非常的快

那高手还给了我一个他改良后的包括n多n多常用的宏的定义文件

我感觉那种纯asm的太复杂了.
而那种\"invoke xxxx\" 的所谓win32 asm的有太不伦不类了

nasm这种反到是很合我胃口呵呵...
游客

返回顶部