ip checksum的汇编代码(200分)

  • 主题发起人 主题发起人 xiyf
  • 开始时间 开始时间
X

xiyf

Unregistered / Unconfirmed
GUEST, unregistred user!
谁如果有DELPHI下的checksum汇编代码,提供给我,本人愿意出1000分!
 
是不是找校验算法啊?找哪一种?
 
ip checksum
tcp 的检验和算法,需要汇编代码
 
在这里找汇编算法可不好找啊
在通讯方面用的较多的应该是CRC16吧,不知道你用的是哪一种?而且CRC16也有好几种生成
多项式,不知道你需要什么样的?说详细些,大家才能帮你啊
 
一般协议都是用C写的,要找汇编写的恐怕不是那么容易找。不如找个熟汇编的人翻成汇编。
WORD CheckSum(WORD *addr,WORD len)
{
DWORD lSum;
WORD wOddByte;
WORD wAnswer;

lSum=0l;
while(len>1) {
lSum+= *addr++;
len-=2;
}
if(len==1) {
wOddByte=0;
*((unsigned char*)&wOddByte)=*(unsigned char*)addr;
lSum+=wOddByte;
}
lSum=(lSum>>16)+(lSum&0xffff);
lSum+=(lSum>>16);
wAnswer=(unsigned int)~lSum;
return wAnswer;
}
 
C的代码与DELPHI的代码我都有了,而且已经在用了,我要汇编代码,主要考虑到这个
这个算法经常要用,想用汇编代码提高运算速度。
 
以下是我引用的一篇文章
PE CheckSum生成代码

作者:陆麟
转载请征得作者同意.
2002.9.13
--------------------------------------------------------------------------------
一段时间来一直很忙, 期间遇到公司变故, 工作更换, 很久没用更新主页. 今天再度开始.
PE文件中有个字段叫CHECK SUM. 用于检验PE文件的完整性. NT启动时的会检验文件的CHECKSUM, 以确保加载的文件是完整的文件而不是破损的文件.
在开发EXE/DLL时, 一般情况下生成CHECK SUM需要在LINK时加/RELEASE. 这样, CHECK SUM就被加入PE文件中. 否则,CHECK SUM为0. LINK不生成CHECK SUM. 如果需要写个修改PE的文件, 又涉及修改CHECKSUM, 那么通常的做法是调用IMAGEHLP.DLL的CheckSumMappedFile函数来获得.
在比较个别情况下, 并没用条件使用IMAGEHLP.DLL, 嘿嘿, 这种状况可不是谁都能碰到的.:) 那下面的代码就有用了.
汇编原型:
CheckSumFile PROTO ,:DWORD,:DWORD
实现:
CheckSumFile PROC USES esi ecx edx lpFile:DWORD, dwFileLen:DWORD
xor edx, edx
mov esi, lpFile
mov ecx, dwFileLen
shr ecx, 1
@CSumLoop:
movzx eax, word ptr [esi]
add edx, eax
mov eax, edx
and edx, 0ffffh
shr eax, 10h
add edx, eax
add esi, 2
loop @CSumLoop
mov eax, edx
shr eax, 10h
add ax, dx
add eax, dwFileLen
ret
CheckSumFile ENDP
 
后退
顶部