中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 看雪学院专区 > Win32/Win64编程
常用ShellCode Hash算法-Delphi内镶BASM
作者:Anskya 时间:2006-12-15 14:08 出处:pediy.com 责编:月夜寒箫
              摘要:常用ShellCode Hash算法-Delphi内镶BASM
看到北极星GG~发布了这么多代码/..小弟自感惭愧..
最近精神好一点..也捣鼓了一点点东西...
看了一下ShellCode
发现有许多不同的字符串Hash..感觉蛮有意思的
在这里发出来一下

ShellCode 中应用最多的hash算法...

1.ror 13算法--刚开始用Pascal写.发现里面居然没有循环移位.指令唉~~
代码:
//与$D作循环移位计算 function GetRORHashEx(StrAPI:Pchar):DWORD; var   I:Integer; begin   Result := 0;   for I:= 0 to Length(StrAPI)-1 do   begin     asm       ror Result,$D     end;     Result := Result + ord(StrAPI[I]);   end; end;


PEID不知道是什么原理居然可以扫描出来算法..Poly Crc32?

2.Crc32b算法---小弟只在Coban2k的Hash Unit中看到过~Crc32a算法
但是感觉差不多~估计是因为有重复Hash出现所以开发了b算法
一下代码是..从zhengxin的 病毒代码中提取出来的

这里抱怨一下...BASM真难用..字符串赋值老是出错...
估计可能是..我用的Delphi 6的问题..郁闷的说
代码:
//Crc32b算法 function GetCrc32bHash(StrAPI:PChar):DWORD; asm   mov     esi, eax//算法太经典了~   xor     eax, eax   dec     eax   mov     edx, esi @@1:   cmp     byte ptr [edx], 0//判断字符串是否是00..是的话就结束   je      @@4   xor     al, [edx]   mov     bl, 8 @@2:   shr     eax, 1   jnc     @@3   xor     eax, 0EDB88320h//太熟悉了~~ @@3:   dec     bl   jnz     @@2   inc     edx   jmp     @@1 @@4:   not     eax   mov     Result,eax end;


3.xCrc32算法--一种Crc32b的变型算法...这个算法是从
z0mbie的 Crc算法库中提取出来的..自己加工了一下..
..呵呵~~不知道为什么在Delphi 10下就可以象我想的这么跑了
但是不知道为什么Delphi 6 就不正常了~~居然会把
第二个参数放在edx中??哪位高手能告诉我为什么会这样??
代码:
//xCrc32算法 function GetxCrc32Hash(StrAPI:PChar;StrSize:Integer):DWORD; asm   mov     ecx, edx            //将数据长度保存在ECX中   add     ecx, 1              //由于char *是以00结束的所以这里多循环一次   mov     edx, StrAPI         //将StrAPI指针保存在edx中...不知道为什么汇编参数不好用~   jecxz   @@4                 //是否循环完毕~ecx为0就.跳!   xor     eax, eax            //EAX清0   not     eax                 //翻转EAX---EAX=$FFFFFFFF @@1:   xor     al, [edx]   inc     edx   mov     bl, 8 @@2:   shr     eax, 1   jnc     @@3   xor     eax, 0EDB88320h @@3:   dec     bl   jnz     @@2   loop    @@1   not     eax @@4:   mov     Result,eax end;


附件附原代码+工程..
希望大家批评..
所上传文件
hash计算器.rar (上传时间2006-04-03,15:27,179.5 KB,34 次点击)
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有