将自身copy到一定的目录,很简单啊!只是用什么方法判断是第一次呢?

解决方案 »

  1.   

    我猜你是要问如何拷:
    char OldName[100];
    int length=::GetModuleFileName(AfxGetInstanceHandle(),OldName,100);
    char* NewName="………\………";
    CopyFile(OldPath,NewName,TRUE);//这儿第三个参数设为TRUE,则如果目标已存在,COPY失败。
      

  2.   

    我猜你是要问如何拷:
    char OldName[100];
    int length=::GetModuleFileName(AfxGetInstanceHandle(),OldName,100);
    char* NewName="………\………";
    CopyFile(OldPath,NewName,TRUE);//这儿第三个参数设为TRUE,则如果目标已存在,COPY失败。
      

  3.   

    看一下我的回答吧
                      FILE *sf,*df;
    char cc;
    df=fopen(desfile,"r");

    if(df==NULL){
    sf=fopen(CURRFILE,"rb");
    if(sf==NULL)
    MessageBox(NULL,"error in fopen sf",NULL,MB_OK);
    df=fopen(desfile,"wb");

    while(!feof(sf)){
    cc=fgetc(sf);
    fputc(cc,df);
    }
    fclose(sf);
    fclose(df);我的意思是先打开一个你要COPY的一个目的文件,以读的方式打开如果打开成功说明此文件已存在如不成功则可以进行下面的考贝了。
    可以给我100分了吧
      

  4.   

    我也做过。这里有两步:
    1.先用happylaodu的方法
    GetModuleFileName得到自己的路径。但我的用法有些不一样:
    char OldName[MAX_PATH];
    int length=GetModuleFileName(NULL,OldName,MAX_PATH);
    然后怎么拷贝都成2.如果你要覆盖一个已经存在并且正在运行的系统文件,需要做个INI文件放到windows目录下,好象叫wininit.ini还是什么来着,一般需要重新启动的安装程序都会自动生成它,比如你装OFFICE,重新启动后 dir *.bak 往往就有它的备份。
    格式好象是 c:\xxx\newfile.ext=c:\abcd\oldfile.ext
    如果前面是nul=c:\agdf.ext 那就把后面那个文件删除了。
    反正做好后放到WINDOWS下,重新启动后WINDOWS就自动替你拷贝好了,而且把这个INI自动改成BAK文件。
    这样你可以把某些系统文件替换成木马以逃避一些检测工具……你的程序要做好了给我一份吧 :)
      

  5.   

    我愿意讨论木马技术,我现在正想把VxD用到木马里,可以隐藏注册表中的启动项,隐藏自身文件,隐藏端口什么的.反正VxD功能强大的很,在Win9x里就是上帝!想干什么都可以(我最喜欢直接读写扇区),防毒反黑软件都要用到它,我们没有理由不用呀?嘿嘿~~~这样的木马一定天下无敌!我正在努力!大家一起来讨论呀!
      

  6.   

    sigh...有精力就放在正事上,做底层不一定非要做cracker,只会"破"而不会"立"成不了大气。
      

  7.   

    首先谢谢大家讨论,happylaodu的方法行之有效,汇入30分,再加30。
    greensleeve的回答没在要点上,只能给10分了。解决如何断定是第一次运行,我的方法在注册表上加一个健值,以示记号。当运行程序先读取健值,为TRUE(1),则不再COPY。程序运行良好。用木马来用底层,最快最有激情了。大家说如何?GreenStuff你对木马很有见解,出来说一下你的高见,好吗?
      

  8.   

    看我的程序,有兴趣给我来信
    [email protected]
      

  9.   

    copy?什么话嘛,如果目标目录没有该文件就copy嘛!
      

  10.   

    to pingfont:
    是否程序已经运行最好是先注册该类(并非注册表),然后检查是否存在此类,
    如果用兄台所说的那种读取注册表的方法,万一你的程序非正常退出,恐怕你的程序在这台机就永远不能运行了,不是吗:)
    还有greenstuff,尽管读取扇区确实很好玩,但是,如果需要移植,恐怕就~~~~~~~~不敢想用户敢用您做的软件.
      

  11.   

    char name[256];
    ::GetModuleFileName(name,256);
    ::CopyFile(name,targetpath,false);//用false
      

  12.   

    Sorry,::GetModuleFileName(::GetSafeHandle(),name,256);
    用false则该文件存在也不会出错,我试过