分类:
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:驱动也可以用类似的方法进行编译生成。