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

发布原因,主要是因为国内某安全软件长期存在的引擎问题.希望本文可以让其做实质性更新.

安全软件,要给用户,使用者以安全,而不是麻烦

.具体引擎问题表现,是扫描文件,创建一拷贝,再扫描这个拷贝的文件.

即使象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)创建者,该软件正运行着第二代特征码引擎,第

三代浮动特征码引擎能不能出来尚是未知数.

联系:jike_man@hotmail.com http://crackchina.nease.net/

(0)

相关推荐

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

    发布原因,主要是因为国内某安全软件长期存在的引擎问题.希望本文可以让其做实质性更新. 安全软件,要给用户,使用者以安全,而不是麻烦 .具体引擎问题表现,是扫描文件,创建一拷贝,再扫描这个拷贝的文件. 即使象AVP这种杀壳专家,见到壳也不会通通脱掉.也有很大的可能直接在壳中提取病毒 定义. 源代码如下,有部分删节,因本文并不是让所有的人都来写扫描器,且此引擎亦不再使用 . const  cBuf_Size = 65536; var fintbuffer:pbytearray; procedure 

  • 历代木马程序隐身的技术分析第1/2页

    最基本的隐藏:不可见窗体+隐藏文件 木马程序无论如何神秘,但归根究底,仍是Win32平台下的一种程序.Windows下常见的程序有两种: 1.Win32应用程序(Win32 Application),比如QQ.Office等都属于此行列. 2.Win32控制台程序(Win32 Console),比如硬盘引导修复程序FixMBR. 其中,Win32应用程序通常会有应用程序界面,比如系统中自带的"计算器"就有提供各种数字按钮的应用程序界面.木马虽然属于Win32应用程序,但其一般不包含窗体

  • 三网主机加速引擎 三代功能助网站腾飞

    非常不巧的是,国内存在电信网通南北互通问题,严重制约网站的访问速度,从而也影响到网民的快速查询.因此,为了不影响全国各地网民的访问,各个网站都采用不同的措施来解决这个发展瓶颈,其中从提升虚拟主机性能来提高网站访问速度的方法被普遍采用. 近日,国内五强虚拟主机提供商时代互联(www.now.cn/vhost)推出了三网主机,这款主机在解决网站访问速度的问题上就具有较明显的优势.据了解,三网主机支持电信,网通,香港机房,用户可以自由选择自由更换,这样能在三网中保证线路畅通,实现网站的快速访问. 除了

  • 基于Matlab制作伪3D第一视角迷宫小游戏

    目录 游戏效果 游戏原理说明 第一代程序计算交点方法 第二代程序计算交点方法 距离转换为线段长度 完整代码 游戏效果 使用键盘上方向键↑向前移动 使用键盘左右方向键调整← →朝向 游戏原理说明 原理很简单,如效果图所示,主要就是以角色视角方向发射大量的直线模拟视线,并计算直线与墙壁交点,获取每一条视线方向下,角色到墙壁的距离,然后根据近大远小的原理绘制不同长度的竖向直线模拟墙壁. 第一代程序计算交点方法 第一代程序是使用的polyshape对象(二维多边形对象)制作墙壁,polyshape对象重

  • iOS瀑布流的简单实现(Swift)

    这段时间突然想到一个很久之前用到的知识-瀑布流,本来想用一个简单的方法,发现自己走入了歧途,最终只能狠下心来重写UICollectionViewFlowLayout.下面我将用两种方法实现瀑布流,以及会介绍第一种实现的bug. <1>第一种 效果图如下所示: 这种实现方法的思路: 1)首先调用随机函数,产生随机高度,并把它保存到数组中 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollection

  • IOS 打包静态库详细介绍

    IOS 打包静态库详细介绍 一.前言 前段时间看的一本书上说:"隔着一段距离看,很多有趣的知识看起来都很唬人."比如说这篇我要总结的"静态库知识",在我初出茅庐的时候着实觉得那些后缀名为".frameworke".".a".".dylib"的文件很神秘,很高冷.那时我虽然知道只要导入一个库就能引用库里面很多封装好的东西,但对这个"库"究竟是什么"鬼",一直都是云里雾里

  • ASP.NET2.0数据库入门之SQL Server

    因为Access并不真正为高性能应用程序服务,所以一个希望有多个同时连接用户的站点必须部署一个比Access更适合的数据源.本文将讲述如何从Microsoft SQL Server(一种企业级RDMS)中获取数据. SQL Server完全版包括了三个部分.第一个是引擎,用于实际组织数据以及针对命令响应进行读取和写入操作.第二个是开发人员的工具软件包,用于对数据库进行操作,例如Query Analyzer和Data Transformation Services.最后一个是用于管理数据的工具,包

  • HTML技巧汇编

    1.怎样定义网页语言(字符集)?            在制作网页过程中,你首先要定义网页语言,以便访问者浏览器自动设置语言,而我们用所见即所得的HTML工具时,都没有注意到这个问题,因为它是默认设置.要设置的语言可以在HTML代码状态下找到: <meta http-equiv="Content Type" content="text/html; charset=gb2312"> 把charset=gb2312改换成其它语言代码即可,比如英文harset

  • 智能防火墙的技术特征

    防火墙已经被用户普遍接受,而且正在成为一种主要的网络安全设备.防火墙圈定一个保护的范围,并假定防火墙是唯一的出口,然后防火墙来决定是放行还是封锁进出的包.传统的防火墙有一个重大的理论假设-如果防火墙拒绝某些数据包的通过,则一定是安全的,因为这些包已经被丢弃.但实际上防火墙并不保证准许通过的数据包是安全的,防火墙无法判断一个正常的数据包和一个恶意的数据包有什么不同,而是要求管理员来保证该包是安全的.管理员必须告诉防火墙准许通过什么,防火墙则依据设置的规则来准许该包通过,这样管理员就必须承担策略错误

  • 三层交换机的应用及选择

    一. 第三层交换机基本原理简介 第三层交换机,实际上就好象是将传统交换器与传统路由器结合起来的网络设备,它既可以完成传统交换机的端口交换功能,又可完成部分路由器的路由功能.当然,这种二层设备与三层设备的结合,并不是简单的物理结合,而是各取所长的逻辑结合,其中最重要的表现是,当某一信息源的第一个数据流进入第三层交换机后,其中的路由系统将会产生一个MAC地址与IP地址映射表,并将该表存储起来,当同一信息源的后续数据流再次进入第三层交换时,交换机将根据第一次产生并保存的地址映射表,直接从二层由源地址传

随机推荐