  | 
					  | 
					  |  
					
					
	
    
 | 
                  
                    | 
                    | 					
				  
				            
					            
						            
							            
								            | 
									            
								             | 
            								
								            
									            
	Windows内核
	帖子发起人: Thomson   发起时间: 2010-01-29 00:20 上午   回复: 6
	
	
 
 
	 
		
			
				
					
						
							
							   
							
   
							
							
						 | 
						
						    
						      
						        | 
							          帖子排序: 
							            
						         | 
						        
							          
							          
						         | 
						       
						     
						 | 
					 
				 
			 | 
		 
	 
	
			
				
					
						
							
								
									
										
											
												
												 
                            2010-01-29, 00:20 上午
                        
											 | 
										 
										
											
												
													 
													
														Thomson
													
													
														 
														
  
														 注册: 2008-07-03
														
														 发 贴: 211
														
													
											  | 
											
												
													
														
															
																
																
																	Global low level hook 为什么需要inject DLL? 
																
															
														 | 
													 
													
														| 
														  
														 | 
													 
												 
												
											 | 
										 
										
											
												
													
														
															 
														 | 
														
															
																
																	
																		
要注册一个global的键盘和鼠标 low level hook, 为什么一定要把callback写在dll里面,dll又是被怎么inject到其它process里面的呢?
																		 
																	 | 
																 
															 
														 | 
													 
													
														| 
															
														 | 
														
															IP 地址: 已记录  
														 | 
														
															报告
														 | 
													 
												 
											 | 
										 
									 
								 | 
							 
						 
					 | 
				 
			 
		
			
				
					
						
							
								
									
										
											
												
												 
                            2010-01-29, 14:05 下午
                        
											 | 
										 
										
											
												
													 
													
														sPhinX
													
													
														 
														
  
														 注册: 2008-06-28
														
														 发 贴: 50
														
													
												 
											 | 
											
												
													
														
															
																
																
																	Re: Global low level hook 为什么需要inject DLL? 
																
															
														 | 
													 
													
														| 
														  
														 | 
													 
												 
												
											 | 
										 
										
											
												
													
														
															 
														 | 
														
															
																
																	
																		
正好我这两天也在想这个问题,随便乱说一下。
 
 其实你的第二个问题可以算是回答了第一个问题,因为需要能够让callback被回调,就需要让它在目标进程里面,而让callback进入目标进程最简单的办法就是Inject dll,我个人理解理论上来说可以自己写一套机制,来只插入代码到目标进程中,但是系统既然提供dll这种相对简单稳定的机制,自然是拿来用就好。
 
 至于第二个问题,codeproject上一大堆讨论hook,inject的文章,我推荐一篇
 Three Ways to Inject Your Code into Another Process,
 http://www.codeproject.com/KB/threads/winspy.aspx
 其他的你可以自己去搜索一下
																		 
																	 | 
																 
															 
														 | 
													 
													
														| 
															
														 | 
														
															IP 地址: 已记录  
														 | 
														
															报告
														 | 
													 
												 
											 | 
										 
									 
								 | 
							 
						 
					 | 
				 
			 
		
			
				
					
						
							
								
									
										
											
												
												 
                            2010-01-29, 14:37 下午
                        
											 | 
										 
										
											
												
													 
													
														Thomson
													
													
														 
														
  
														 注册: 2008-07-03
														
														 发 贴: 211
														
													
											  | 
											
												
													
														
															
																
																
																	Re: Global low level hook 为什么需要inject DLL? 
																
															
														 | 
													 
													
														| 
														  
														 | 
													 
												 
												
											 | 
										 
										
											
												
													
														
															 
														 | 
														
															
																
																	
																		
谢谢...嗯,有道理.
 
 对于除了keyboard和mouse的low level hook, 其它的hook确实是要inject dll, 我觉得是不是因为其它的message hook都是在处理相应message 前面或者后面触发,所以要把hook procedure所在的dll inject过去.. 但是low level由于是不任何的thread拿到message 前的处理,所以,放在原先注册hook的thread里面处理就行.  所以keyboard和mouse的low level hook是不需要inject dll的.
 
 
 不知道有没有关于这些hook的实现方面的资料.
																		 
																	 | 
																 
															 
														 | 
													 
													
														| 
															
														 | 
														
															IP 地址: 已记录  
														 | 
														
															报告
														 | 
													 
												 
											 | 
										 
									 
								 | 
							 
						 
					 | 
				 
			 
		
			
				
					
						
							
								
									
										
											
												
												 
                            2010-01-30, 11:35 上午
                        
											 | 
										 
										
											
												
													 
													
														格蠹老雷
													
													
														 
														
  
														 注册: 2005-12-19
														
														 发 贴: 1,303
														
													
												 
											 | 
											
												
													
														
															
																
																
																	Re: Global low level hook 为什么需要inject DLL? 
																
															
														 | 
													 
													
														| 
														  
														 | 
													 
												 
												
											 | 
										 
										
											
												
													
														
															 
														 | 
														
															
																
																	
																		
上调试器,一切就都清楚了。:-)
 从学习的角度看,了解一下各种hook挺好的,但是从软件安全和开发实践的角度来看,hook已经是不鼓励使用的方法了。
																		 
																	 | 
																 
															 
														 | 
													 
													
														| 
															
														 | 
														
															IP 地址: 已记录  
														 | 
														
															报告
														 | 
													 
												 
											 | 
										 
									 
								 | 
							 
						 
					 | 
				 
			 
		
			
				
					
						
							
								
									
										
											
												
												 
                            2010-01-31, 19:57 下午
                        
											 | 
										 
										
											
												
													 
													
														MJ0011
													
													
														 
														
  
														 注册: 2008-04-24
														
														 发 贴: 112
														
													
											  | 
											
												
													
														
															
																
																
																	Re: Global low level hook 为什么需要inject DLL? 
																
															
														 | 
													 
													
														| 
														  
														 | 
													 
												 
												
											 | 
										 
										
											
												
													
														
															 
														 | 
														
															
																
																	
																		
low level的应是在原始进程context下执行的,不用DLL也可以。
																		 
																	 | 
																 
															 
														 | 
													 
													
														| 
															
														 | 
														
															IP 地址: 已记录  
														 | 
														
															报告
														 | 
													 
												 
											 | 
										 
									 
								 | 
							 
						 
					 | 
				 
			 
		
			
				
					
						
							
								
									
										
											
												
												 
                            2010-01-31, 21:44 下午
                        
											 | 
										 
										
											
												
													 
													
														Thomson
													
													
														 
														
  
														 注册: 2008-07-03
														
														 发 贴: 211
														
													
												 
											 | 
											
												
													
														
															
																
																
																	Re: Global low level hook 为什么需要inject DLL? 
																
															
														 | 
													 
													
														| 
														  
														 | 
													 
												 
												
											 | 
										 
										
											
												
													
														
															 
														 | 
														
															
																
																	
																		
谢谢MJ0011, 如果是在原始的context下面执行的,那么是在哪个地方发message给这个原始线程的呢?RIT里面吗?
																		 
																	 | 
																 
															 
														 | 
													 
													
														| 
															
														 | 
														
															IP 地址: 已记录  
														 | 
														
															报告
														 | 
													 
												 
											 | 
										 
									 
								 | 
							 
						 
					 | 
				 
			 
		
			
				
					
						
							
								
									
										
											
												
												 
                            2010-02-05, 16:39 下午
                        
											 | 
										 
										
											
												
													 
													
														Oak
													
													
														 
														
  
														 注册: 2009-10-19
														
														 发 贴: 14
														
													
											  | 
											
												
													
														
															
																
																
																	Re: Global low level hook 为什么需要inject DLL? 
																
															
														 | 
													 
													
														| 
														  
														 | 
													 
												 
												
											 | 
										 
										
											
												
													
														
															 
														 | 
														
															
																
																	
																		
NAT垫,替换原始汇编命令,跳转到你的函数。自己hook差不多就是这个原理。
 如果前方没NAT,就把前五个字节命令 move ebp, esp; push ebp; 替换掉。跳到你的函数里。
																		 
																	 | 
																 
															 
														 | 
													 
													
														| 
															
														 | 
														
															IP 地址: 已记录  
														 | 
														
															报告
														 | 
													 
												 
											 | 
										 
									 
								 | 
							 
						 
					 | 
				 
			 
		
	
	
		
			| 
				高端调试 » 内核探秘 » Windows内核 » Re: Global low level hook 为什么需要inject DLL?
			 | 
			
				
			 | 
		 
	 
	
 
								             | 
                                              | 					
								            
									            
								             | 
							             
						             
					             
				             
			          
                     |