麻烦把这几句VC代码翻译为delphi版!(100分)

  • 主题发起人 主题发起人 legoog
  • 开始时间 开始时间
L

legoog

Unregistered / Unconfirmed
GUEST, unregistred user!
int RXNetCommCore::makeLoginPack(char *sz_pwd,unsigned char *sz_outputPack)
{
DWORD TickCount = GetTickCount();
char countcheckFlag = ((char*)&TickCount)[2];
DWORD lpEncodeKeyStru = (DWORD)EncodeKeyStru;
WORD pwdSubHead = 0;
_asm
{
mov eax,lpEncodeKeyStru
mov dx, word ptr [eax+$EB]
xor dx, $521
mov pwdSubHead,dx
}
*(WORD *)(sz_outputPack) = pwdSubHead;
sz_pwd[$10] = countcheckFlag;
_asm
{
mov edi,lpEncodeKeyStru
add edi,$0DE
mov edx,sz_pwd
mov ecx,1
xor esi,esi
SubLoop:
mov ebx, ecx
and ebx, 1
mov bx, word ptr [edi+ebx*2]
xor bx, word ptr [esi+edx]
add ecx, 1
mov word ptr [edx], bx
add edx, 2
cmp ecx, $0A
jl SubLoop
}
for (int i = 2 ;
i <= $11 + 2;
i ++)
{
sz_outputPack = sz_pwd[i-2];
}

return 0;
}
 
function makeLoginPack(sz_pwd:PChar;sz_outputPack: pchar):Integer;
label SubLoop;
var
tickCount:DWORD;
countCheckFlag:Char;
lpEncodeKeyStru: DWORD;
pwdSubHead:word;
i:Integer;
begin
tickCount :=GetTickCount;
countCheckFlag:=(pchar(@tickcount))[2];
lpEncodeKeyStru:=DWORD( EncodeKeyStru);
pwdSubHead := 0;
asm
mov eax,lpEncodeKeyStru
mov dx, word ptr [eax+$EB]
xor dx, $521
mov pwdSubHead,dx
end;
(PWORD(sz_outputPack))^ := pwdSubHead;
sz_pwd[$10] := countcheckFlag;
asm
mov edi,lpEncodeKeyStru
add edi,$0DE
mov edx,sz_pwd
mov ecx,1
xor esi,esi
SubLoop:
mov ebx, ecx
and ebx, 1
mov bx, word ptr [edi+ebx*2]
xor bx, word ptr [esi+edx]
add ecx, 1
mov word ptr [edx], bx
add edx, 2
cmp ecx, $0A
jl SubLoop
end;
for I:=2 to $11 + 2do
begin

sz_outputPack := sz_pwd[i-2];
end;

Result:= 0;

end;
 
估计等等楼下会来一个叫pengs的,叫你点一个cnblog的,说什么找找,有资料可以帮到你。
然后他的网站上面不知道从哪弄来的一堆不知所谓的技巧:
1. 农历相关函数单元。有多个处理中国农历的函数。
2. 一个非常完整的取WINDOWS OS 版本信息的函数
3. 让程序自己更新本程序
4. 如何截取被看不见的视窗内容?
5. 如何暴力关闭一个服务程序?
6. DELPHI 中让嵌入窗体的 WebBrowser 控件无边框
7.Base64, Quoted-Printable 的解码与编码函数
8.DELPHI中对NT服务型程序的控制
9. Delphi 中取本机的计算机名、IP地址、Windows登录的用户名
10. SQL 数据库开发一些精典的代码
 
function makeLoginPack(sz_pwd:PChar;sz_outputPack: pchar):Integer;
label SubLoop;
var
tickCount:DWORD;
countCheckFlag:Char;
lpEncodeKeyStru: DWORD;
pwdSubHead:word;
i:Integer;
begin
tickCount :=GetTickCount;
countCheckFlag:=(pchar(@tickcount))[2];
lpEncodeKeyStru:=DWORD( EncodeKeyStru);
pwdSubHead := 0;
asm
mov eax,lpEncodeKeyStru
mov dx, word ptr [eax+$EB]
xor dx, $521
mov pwdSubHead,dx
end;
(PWORD(sz_outputPack))^ := pwdSubHead;
sz_pwd[$10] := countcheckFlag;
asm
mov edi,lpEncodeKeyStru
add edi,$0DE
mov edx,sz_pwd
mov ecx,1
xor esi,esi
SubLoop:
mov ebx, ecx
and ebx, 1
mov bx, word ptr [edi+ebx*2]
xor bx, word ptr [esi+edx]
add ecx, 1
mov word ptr [edx], bx
add edx, 2
cmp ecx, $0A
jl SubLoop
end;
for I:=2 to $11 + 2do
begin

sz_outputPack := sz_pwd[i-2];
end;

Result:= 0;

end;
 
后退
顶部