共有回帖数  0  个 
	 
	
	
	
     
          
          
               
				
			 
				
					 
 
            
				   - 
						
						
							 
									嘿嘿,其实没有标题那么高端只是用c语言来做点东西。赚点经验。
 不费话了。这篇帖子主要实现通过dll注射改变一个程序的行为,即调用一个程序本身的函数来改变他自己,以毒攻毒。像QQ生成自己聊天记录用世界上最先进的机器也要一千年,但是加密聊天记录是他做的,那么解密方法它肯定知道,那么就需要去调用QQ它里面写的函数,本文主要通过函数指针来实现。
 #includestdio.h
 #includestdlib.h
 #includewindows.h//为messageboxA提供原型
 int add(int a, int b)
 {
 printf("n%d %d", a, b);
 return a + b;
 }
 int add8848(int a, int b)
 {
 printf("%d %d", a, b);
 MessageBoxA(0, "hello china", "run", 0);
 return a + b;
 }
 //add与add8848函数是随意的两个函数,两个函数在屏幕上表示方式不一样,通过表现不同来查看是否调用函数。
 void main()
 {
 printf("%x %x", add, add8848);//打印add和add8848函数的地址
 int (*p)(int a,int b) = add;
 printf("n%x", &p);//打印指向函数指针的地址
 int i;
 while (1)
 {
 printf("n%d", p(1, 1));//先调用add函数,接下来用dll来使他调用add8848函数
 Sleep(2000);
 }
 
 
 system("pause");
 }
 这是个程序,要改变他,把他想象成QQ
 _declspec(dllexport) void go()//导出函数
 {
 int(**p)(int a, int b) = (int(**)(int a, int b))0x3cfef0;//指向函数指针的指针
 *p = (int(*)(int a, int b))0x12f1195;//改变指针,指向add8848函数
 }
 这是dll函数,记住这行代码不是生成exe文件而是生成dll文件。在vs里修改,下面给出截图。
  
 
  
 
  
 楼主 2015-07-27 22:10 回复 
 
 
   
             
                  
                  
 
 
 
     
	 
  
	Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
	
	意见反馈 | 
	关于直线 | 
	版权声明 | 
	会员须知