popsky 发表于 2013-12-16 07:57

【吾爱2013CM大赛解答】--苏紫方璇--内嵌汇编KeyGen



偷了懒,就直接内嵌了部分汇编,嘿嘿。。。不为得奖啥的,只是为了好玩。。。。

注册机的代码一并附上了,懒得下的朋友可以直接看核心代码。。

function HexToInt(const S: String): DWORD;
asm
PUSH EBX
PUSH ESI
MOV ESI, EAX
MOV EDX,
XOR EAX, EAX
XOR ECX, ECX
TEST ESI, ESI
JZ @@2
TEST EDX, EDX
JLE @@2
MOV BL, $20
@@0:
MOV CL,
INC ESI
OR CL, BL
SUB CL, '0'
JB @@2
CMP CL, $09
JBE @@1
SUB CL, 'a'-'0'-10
CMP CL, $0A
JB @@2
CMP CL, $0F
JA @@2
@@1:
SHL EAX, 4
OR EAX, ECX
DEC EDX
JNZ @@0
JMP @@3
@@2:
XOR EAX, EAX
@@3:
POP ESI
POP EBX
RET
end;

function GiveMeKey(szstring:PChar):string;stdcall;
var
i,DwTemp:DWORD;
begin
Result:='';
for i:=0 to Length(szstring) - 1 do
begin
    DwTemp:=hexToInt(szstring);
    ASM
      PUSHAD
      MOV EBX,szstring
      ADD EBX,I
      XOR EAX,EAX
      MOV AL,BYTE PTR DS:
      LEA EAX,DWORD PTR DS:
      CDQ
      SUB EAX,EDX
      SAR EAX,1
      AND EAX,$FF
      MOV DwTemp,EAX
      POPAD
    end;
    Result:=Result+inttohex(DwTemp,2);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text :=GiveMeKey(PChar(Edit1.Text));
end;







beijing007 发表于 2013-12-16 07:59

黑夜伴影 发表于 2013-12-16 08:12

厉害啊 大牛,内联汇编我还不会呢。学习下怎么修改代码。

a070458 发表于 2013-12-16 22:20

{:1_918:}怎么不教一下怎么从程序找出代码内嵌使用

Hmily 发表于 2013-12-16 23:33

哥们网址写错啦

popsky 发表于 2013-12-16 23:43

Hmily 发表于 2013-12-16 23:33 static/image/common/back.gif
哥们网址写错啦

额,对不住,下次注意,汗颜。。。。
页: [1]
查看完整版本: 【吾爱2013CM大赛解答】--苏紫方璇--内嵌汇编KeyGen