阅读:4755回复:35
想把一段汇编写到一块内存中去,怎么办?
我有一段汇编代码,想要copy到一段内存中去,想让它能够执行,听说是要转化成二进制,可是我不知道怎么转?哪位知道,指点指点!
要编译吗?用masm32行吗?我想在win2000下执行! |
|
沙发#
发布于:2002-07-24 11:18
谢谢大家这么帮忙,真的感动!5555555555
:) 我正在开始学汇编,所以这个问题我先放一放了, 等我道行够深的时候,再去想了,谢谢各位了! 不过汇编中有太多不懂了,可能要求教于大家了,希望各位能够帮忙 :) |
|
板凳#
发布于:2002-07-24 11:04
还没搞定?
看看这个贴子吧。http://www.driverdevelop.com/forum/viewthread.php?tid=17544 |
|
地板#
发布于:2002-07-23 12:23
你这样吧!
UCHAR Buffer[6]={0X68,0,0,0,0,C3} 然后把你的函数地址放在*(PULONG)&Buffer[1]=你的函数名,这样就可以了然后是jmp到你的这个buffer里面去就可以 |
|
地下室#
发布于:2002-07-23 11:09
为何不用debug调试工具呢你?
|
|
5楼#
发布于:2002-07-22 17:05
你应该学学汇编。。。。 :o :o :o :o
|
|
|
6楼#
发布于:2002-07-01 15:52
sorry,是0008
|
|
7楼#
发布于:2002-07-01 12:53
JMP后面可以跟你的地址,不过如果你要在机器码中利用的话,里面EA后面跟的地址是一段偏移,实际上是你的地址与当前地址差再减去JMP XXXXXXXX指令本身所占的字节数,所以简单点还是用PUSH 能否举个例子?晕,呵呵! |
|
8楼#
发布于:2002-07-01 12:50
怎么是0100?
|
|
9楼#
发布于:2002-07-01 12:47
swift,将jmp MyFunction改为长跳转(jmp 0100:MyFuction),就不需要计算相对偏移。在win系列的防火墙中使用过,没有问题。
|
|
10楼#
发布于:2002-07-01 11:18
CALL会压栈,JMP不会就这区别。看看病毒程序的地址获取就知道了! \"压栈\"!? Change the Stack Pointer!? |
|
|
11楼#
发布于:2002-06-28 20:33
JMP后面可以跟你的地址,不过如果你要在机器码中利用的话,里面EA后面跟的地址是一段偏移,实际上是你的地址与当前地址差再减去JMP XXXXXXXX指令本身所占的字节数,所以简单点还是用PUSH
RET,机器码为68H,你的地址,0C3H。 |
|
|
12楼#
发布于:2002-06-24 07:45
哪里有? call前有push,一般是传递函数参数,或保存某些寄存器。 |
|
|
13楼#
发布于:2002-06-23 14:22
哪里有?
但我也看到了以call前有push压栈 |
|
14楼#
发布于:2002-06-23 14:20
CALL会压栈,JMP不会就这区别。看看病毒程序的地址获取就知道了!
|
|
|
15楼#
发布于: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有什么区别? 还有这个偏移是相对于什么的偏移,要怎样计算? 谢谢! |
|
16楼#
发布于:2002-06-22 18:22
程序装入后都被重定位了,所以只能是偏移,没有地址的说法。
jmp myhookprotocol肯定可行,myhookprotocol就是你的函数的偏移值,没问题前提是在C中嵌入汇编。 |
|
|
17楼#
发布于:2002-06-22 17:16
偏移是什么意思?
我的函数的地址不也是偏移吗? 你指的是相对于什么的偏移? |
|
18楼#
发布于:2002-06-21 13:45
谢谢fracker,谢谢9527,谢谢老大 跳转的不是地址,是偏移!!! |
|
|
19楼#
发布于:2002-06-21 13:20
谢谢fracker,谢谢9527,谢谢老大
如果我跳转到我自己的函数里,比如跳到myhookprotocol里, 汇编应该是这样的:jmp myhookprotocol(对吗?呵呵), 那么机器码里myhookprotocol函数用它的地址就行了吗? hoho,可惜我的分都给了,不过没关系,一会我再开一个,呵呵 |
|
上一页
下一页