monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2002-06-22 18:22
程序装入后都被重定位了,所以只能是偏移,没有地址的说法。
jmp myhookprotocol肯定可行,myhookprotocol就是你的函数的偏移值,没问题前提是在C中嵌入汇编。
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2002-06-23 12:53
各位大侠,我的问题是这样的,我得到了一个系统函数handler,我想用我的函数代替系统函数,但我想在系统转入我的函数的时候,加入一个我自己的参数进去,也就是说在原有系统函数的参数上再加入一个我的参数。
一位高人给我写了这样的话:

pContext = NdisAllocateMemory(...)
memcpy(pContext,{pop eax,push MyReference,push eax,jmp MyFunction});
{pop eax,push MyReference,push eax,jmp MyFunction}); 你把这里的汇编翻译成二进制的代码填入pContext的头部
注意这里的jmp MyFunction是要根据当前地址来计算偏移量的。要有点汇编的基础。

他的意思是用pContext来替换系统函数的handler,
这里的二进制转换我已经懂了,就是转成机器码,但是
“jmp MyFunction要根据当前地址来计算偏移量”我却不懂,我用softice看了一下我的程序,在调用函数时都是先push reference,然后call,call与jmp有什么区别?

还有这个偏移是相对于什么的偏移,要怎样计算?
谢谢!
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2002-06-23 14:20
CALL会压栈,JMP不会就这区别。看看病毒程序的地址获取就知道了!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2002-06-23 14:22
哪里有?
但我也看到了以call前有push压栈
cn18799
驱动老牛
驱动老牛
  • 注册日期2001-11-17
  • 最后登录2010-04-16
  • 粉丝0
  • 关注0
  • 积分54分
  • 威望36点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2002-06-24 07:45
哪里有?
但我也看到了以call前有push压栈
 

call前有push,一般是传递函数参数,或保存某些寄存器。
[img]http://www.danasoft.com/vipersig.jpg[/img] [img]http://www.driverdevelop.com/forum/upload/cn18799/2002-09-28_logo.gif[/img]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
25楼#
发布于:2002-06-28 20:33
JMP后面可以跟你的地址,不过如果你要在机器码中利用的话,里面EA后面跟的地址是一段偏移,实际上是你的地址与当前地址差再减去JMP XXXXXXXX指令本身所占的字节数,所以简单点还是用PUSH
RET,机器码为68H,你的地址,0C3H。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
Nouk
驱动中牛
驱动中牛
  • 注册日期2001-08-22
  • 最后登录2006-10-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2002-07-01 11:18
CALL会压栈,JMP不会就这区别。看看病毒程序的地址获取就知道了!

\"压栈\"!?
Change the Stack Pointer!?
Taiwan's Driver Developer
LittleX
驱动牛犊
驱动牛犊
  • 注册日期2001-07-14
  • 最后登录2015-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望55点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分1分
27楼#
发布于:2002-07-01 12:47
swift,将jmp MyFunction改为长跳转(jmp 0100:MyFuction),就不需要计算相对偏移。在win系列的防火墙中使用过,没有问题。
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2002-07-01 12:50
怎么是0100?
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2002-07-01 12:53
JMP后面可以跟你的地址,不过如果你要在机器码中利用的话,里面EA后面跟的地址是一段偏移,实际上是你的地址与当前地址差再减去JMP XXXXXXXX指令本身所占的字节数,所以简单点还是用PUSH
RET,机器码为68H,你的地址,0C3H。



能否举个例子?晕,呵呵!
LittleX
驱动牛犊
驱动牛犊
  • 注册日期2001-07-14
  • 最后登录2015-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望55点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分1分
30楼#
发布于:2002-07-01 15:52
sorry,是0008
cwj53061871
驱动老牛
驱动老牛
  • 注册日期2002-03-08
  • 最后登录2013-01-10
  • 粉丝2
  • 关注0
  • 积分38分
  • 威望463点
  • 贡献值0点
  • 好评度162点
  • 原创分0分
  • 专家分0分
31楼#
发布于:2002-07-22 17:05
你应该学学汇编。。。。 :o :o :o :o
毛主席说:自力更生,坚苦朴素
stower
驱动牛犊
驱动牛犊
  • 注册日期2001-06-08
  • 最后登录2010-05-19
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望32点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2002-07-23 11:09
为何不用debug调试工具呢你?
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
33楼#
发布于:2002-07-23 12:23
你这样吧!
UCHAR Buffer[6]={0X68,0,0,0,0,C3}
然后把你的函数地址放在*(PULONG)&Buffer[1]=你的函数名,这样就可以了然后是jmp到你的这个buffer里面去就可以
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
34楼#
发布于:2002-07-24 11:04
还没搞定?
看看这个贴子吧。http://www.driverdevelop.com/forum/viewthread.php?tid=17544
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
35楼#
发布于:2002-07-24 11:18
谢谢大家这么帮忙,真的感动!5555555555

:)

我正在开始学汇编,所以这个问题我先放一放了,
等我道行够深的时候,再去想了,谢谢各位了!

不过汇编中有太多不懂了,可能要求教于大家了,希望各位能够帮忙  :)
上一页 下一页
游客

返回顶部