共有回帖数 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号
意见反馈 |
关于直线 |
版权声明 |
会员须知