找回密码
 注册
搜索
热搜: 回贴

常用ShellCode Hash算法-Delphi内镶BASM,ShellCode,Win32/64编程

2010-1-30 18:28| 发布者: admin| 查看: 191| 评论: 0|原作者: 云天青


常用ShellCode Hash算法-Delphi内镶BASM,ShellCode,Win32/64编程
2008年06月23日 星期一 下午 09:35
看到北极星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;






最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 15:23 , Processed in 0.177675 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部