签到

06月20日
尚未签到

共有回帖数 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 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知