Chinaunix首页 | 论坛 | 博客
  • 博客访问: 818382
  • 博文数量: 756
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:40
文章分类

全部博文(756)

文章存档

2011年(1)

2008年(755)

我的朋友

分类:

2008-10-13 16:10:52

用MSDev.exe来编译vc的工程有个缺点,就是不能实现随机乱序link,每次link的次序都一样,这样很容易被发现特征。

所以后来直接改用cl,link来进行编译。

并修改了nant.core的fileset原代码实现随机顺序。修改后代码如下:

        public StringCollection FileNames {
            get {
                if (!_hasScanned) {
                    Scan();
                }
    StringCollection tmeparcollection=_scanner.FileNames;
    int arraylen=tmeparcollection.Count;
    for(int i=0;i    {
     int swapfirst=GetRandIntExt(arraylen-1);
     int swapend=GetRandIntExt(arraylen-1);
     string temp=tmeparcollection[swapfirst];
     tmeparcollection[swapfirst]=tmeparcollection[swapend];
     tmeparcollection[swapend]=temp;
    }
    for(int i=0;i    {
     int swaptempindex=GetRandIntExt(arraylen-1);
     string temp=tmeparcollection[i];
     tmeparcollection[i]=tmeparcollection[swaptempindex];
     tmeparcollection[swaptempindex]=temp;
    }
                return tmeparcollection;
            }
        }

GetRandIntExt是用System.Security.Cryptography.RandomNumberGenerator实现的。

最终的编译脚本如下:

   
     
      
          
      

  

     
       
          
          
          
          
         

      

      
       
        
        
       

      
   

TODO:将msvcrt.lib中的.obj解出来,直接丢在int目录下面,但我还不知道怎么解开,虽然我可以再次编译一次。

BTW:驱动也可以用类似的方法进行编译生成。


--------------------next---------------------

阅读(322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~