奥运倒计时: 设为首页 加入收藏
点击进入太平洋安全网首页
论坛登陆 用户名: 密码:
首页 新闻资讯 文章中心 黑客资源 黑客点睛 安全防护 软件下载 动画教程 商城中心 技术问答 论坛社区
文章 下载 图片
点睛  
 您现在的位置: 太平洋安全网 >> 黑客点晴 >> 免杀技术 >> 正文

Pclxav木马猎手第一代特征码引擎源代码

作者:佚名    黑客点晴来源:网络转载    点击数:    更新时间:2008-5-12
发布原因,主要是因为国内某安全软件长期存在的引擎问题,希望本文可以让其做实质性更新。  

安全软件,要给用户,使用者以安全,而不是麻烦。具体引擎问题表现,是扫描文件,创建一拷贝,再扫描这个拷贝的文件。  

即使象AVP这种杀壳专家,见到壳也不会通通脱掉。也有很大的可能直接在壳中提取病毒定义。  
源代码如下,有部分删节,因本文并不是让所有的人都来写扫描器,且此引擎亦不再使用。  

const cBuf_Size = 65536;  
var fintbuffer:pbytearray;  

procedure CheckInternalBuffer ( aPos : Integer );  

var  
 pFR : Integer;  
begin  
  if (fIntBufferPos = -1 ) or (aPos < fIntBufferPos) or ((aPos+16) >  
(fIntBufferPos+cBuf_size))  
  then begin  
     
     pFR := aPos - (cBuf_size div 2);  
     if pFR < 0  
     then  
       pFR := 0;  
     fIntFile.PosITion := pFR;  
     fIntFile.Read ( fIntBuffer^, cBuf_Size);  
     fIntBufferPos := pFR;  
  end;  
end;  
procedure FreeFile;  
begin  
  if fIntFile <> nil  
 then begin  
     
     fIntFile.Free;  
     fIntFile := nil;  
  end;  
end;  
function CanOpenFile ( const aName : string ) :Boolean;  
var  
 fHandle : THandle ;  
begin  
  Result := False;  
  //ReadOnly := True;  
  if FileExists ( aName )  
  then begin  
   fhandle:=CreateFileA(pchar(aname ) , GENERIC_READ, FILE_SHARE_READ ,  
NIL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);  
     if fhandle <> INVALID_HANDLE_VALUE  
     then begin  
       closehandle ( fHandle );  
       Result := True;  
        
     end;  
  end;  
end;  
function LoadFromFile(const Filename: string): Boolean;  
begin  
Result := True;  

  fIntFile := newreadfilestream ( filename );  
  try  
   fIntFile.PosITion := 0;  

    
   fdatasize2:=fintfile.Size;  
   fintbufferpos:=-1;  

   Result := True;  
  finally  
   
end  
end;  


function Find ( aBuffer : PChar ; const aCount , aStart , aEnd : Integer  
        ) : Integer;  
        // find something in the current file and return the  
posITion, -1 if not found  const IgnoreCase , SearchText : Boolean  
var  
// pCR : TCursor;  
 pChAct : Char;  
 pCMem , pCFind , pCHIT , pEnd : Integer;  
begin  
  Result := -1;  
  pEnd := aEnd;  
   
  if aCount < 1  
  then  
    ExIT;  

  if aStart + aCount > (pEnd+1)  
  then  
    ExIT; // will never be found, if search-part is smaller than  
searched data  
  try  

    pCMem := aStart;  
    PCFind := 0;  
    pCHIT := pCMem+1;  

    repeat  

       if pCMem > pEnd  
       then  
         ExIT;  

       CheckInternalBuffer ( pCMem );  
       PChAct := Char(fIntBuffer [ pCMem - fIntBufferPos]);  

       if ( PChAct = aBuffer[PCFind] )  
       then begin  
         if PCFind = (aCount-1)  
         then begin  
            Result := PCMem-aCount+1;  
            ExIT;  
         end  
         else begin  
            if PCFind = 0  
            then  
              PCHIT := PCMem+1;  
            Inc ( PCMem );  
            Inc ( PCFind );  
         end;  
       end  
       else begin  
         PCMem := PCHIT;  
         PCFind := 0;  
         PCHIT := PCMem+1;  
       end;  
    until False;  


  finally  
  //    Cursor := pCR;  
  end;  

end;  
function TForm1.check2(filename:string):boolean;  

const  
  cHexChars = ’0123456789ABCDEF’;  
var  h,n,x,  
findlen,FindPos,mypos : longint;  
   up , findstr:string;  
 pSTR : String;  
 pCT,pCT1: integer;         
 begin  
 result:=false;  
findstr,mypos给值:  
  mypos:=mypoint;  
    
 pSTR := ’’;  
 pCT1 := Length ( findstr ) div 2;  
 for pCT := 0 to (Length ( findstr ) div 2) -1  

 pStr := pStr + Char ( (Pos ( findstr[pCt*2+1] , cHexChars ) -1) * 16 +  
(Pos ( findstr[pCt*2+2] , cHexChars ) -1));  

  GetMem ( FindBuf , pCT1 );  
  try  
   
    FindLen := pCT1;  

    Move ( pStr[1] , FindBuf^, pCt1 );  
    
    FindPos :=Find (findstr, FindBuf , FindLen ,mypos, mypos+findlen-1)  
;  
    
  if FindPos = -1  
then exIT  

   else  
    
begin   

// do something!  
      result:=true;  
        exIT;  

    


    end;  
  finally  
  end;  
  end;  

支持多段定义的代码省略,无非也就是找到后再继续咯。  
支持?忽略部分字节的代码省略,无非改改函数。  
代码很乱,确实,本人一向不大喜欢排整齐,不然怎么出BUG(搞笑)  

此代码是从十六进制编辑器代码中分离的,由于原控件是为使用者编辑文件而作,所以默认是将文件拷到WINDOWS临时文件夹,再修改那个  
拷贝的文件,避免用户误操作。所以使用任何控件,还是得仔细检查源代码意图,必要时修改之,不然对使用者是不利的。  

关于国产杀软,江民不知错就改,剔除可查2000种病毒的某安全软件病毒码,就不能认为有度量;  
瑞星:如能提升国际病毒猎杀力,多多关注国外动向,还是有希望的;  
金山:不要免费赠送用户不需要的东西,未来会更好。  
国外杀软猎杀病毒能力:KAV>MCAFEE>NOD32 未知病毒猎杀力则相反。  

最后一点小小要求,望国人少使用国外多引擎检测,使得国产杀软的底气再足点吧。  

关于本文作者:jike,the2avpro(pclxav)创建者,该软件正运行着第二代特征码引擎,第三代浮动特征码引擎能不能出来尚是未知数。
黑客点晴录入:随风追忆    责任编辑:随风追忆 
  • 上一个黑客点晴:

  • 下一个黑客点晴:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     推荐点睛
    推荐黑客点晴[易语言二课]如何增加易语言的组件 ,以及组…
    推荐黑客点晴[易语言一课]简单了解与实例易语言
    推荐黑客点晴10秒钟让你和任意QQ号聊天
    推荐黑客点晴菜鸟黑客入门攻击及防范技巧
    推荐黑客点晴黑客利器流光使用技巧
    推荐黑客点晴PHP实战--入侵郑州广播在线
     热门点睛
    推荐黑客点晴[易语言一课]简单了解与实例易语言
    推荐黑客点晴10秒钟让你和任意QQ号聊天
    推荐黑客点晴菜鸟黑客入门攻击及防范技巧
    推荐黑客点晴黑客利器流光使用技巧
    推荐黑客点晴PHP实战--入侵郑州广播在线
    推荐黑客点晴灰鸽子简单写下载者做搭配
     本站推荐

    关于我们 | 联系方法 | 招聘信息 | 加入会员 | 诚征代理 | 广告服务 | 欢迎投稿 | 站长信箱 | 友情链接 | 网站地图
    24小时客服:0374-7126138 技术支持:0374-7126138 投诉电话:0374-7967536
    客服QQ:883039 售后QQ:827520 技术QQ:78305152 投稿-商业:576880739
    Copyright 太平洋科技 2003-2007 版权所有 All Rights Reserved
      许可证号:豫ICP备07005385号