| 
					阅读:4847回复: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,可惜我的分都给了,不过没关系,一会我再开一个,呵呵 | |
上一页
下一页
 
			
			
						
			
			
						
			
		 
							
 
				 
				
 
				 
				 
				