某仓管软件(delphi)的核心算法,软件已经爆了,侥幸跟到算法,发现该软件是通过将得到的BIOS数据通过计算转换为字符串即注册码,无奈汇编基础太菜(属于查字典一族),请各位详细指点一二。
00508F20 /$55 PUSH EBP
00508F21 |.8BEC MOV EBP,ESP
00508F23 |.83C4 F0 ADD ESP,-10
00508F26 |.53 PUSH EBX
00508F27 |.56 PUSH ESI
00508F28 |.8BF1 MOV ESI,ECX
00508F2A |.8955 FC MOV DWORD PTR SS:[EBP-4],EDX
00508F2D |.8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00508F30 |.E8 4BBEEFFF CALL csoft.00404D80 ; D7.System.@LStrAddRef(void;void):Pointer;
00508F35 |.33C0 XOR EAX,EAX
00508F37 |.55 PUSH EBP
00508F38 |.68 AF8F5000 PUSH csoft.00508FAF
00508F3D |.64:FF30 PUSH DWORD PTR FS:[EAX]
00508F40 |.64:8920 MOV DWORD PTR FS:[EAX],ESP
00508F43 |.33DB XOR EBX,EBX
00508F45 |.8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00508F48 |.E8 4BBCEFFF CALL csoft.00404B98 ; D7.System.@LStrLen(String):Integer;
00508F4D |.85C0 TEST EAX,EAX
00508F4F |.76 1C JBE SHORT csoft.00508F6D
00508F51 |.BA 01000000 MOV EDX,1
以下为循环取字符串,然后将取出的字符转换为ASCII码,进行计算,过程不复杂,先加码值,
然后*2,得到的值+该值*7,重复循环,直至取完。
00508F56 |>8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4]
00508F59 |.0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]
00508F5E |.03D9 |ADD EBX,ECX
00508F60 |.8BCB |MOV ECX,EBX
00508F62 |.03C9 |ADD ECX,ECX
00508F64 |.8D0C89 |LEA ECX,DWORD PTR DS:[ECX+ECX*7]
00508F67 |.8BD9 |MOV EBX,ECX
00508F69 |.42 |INC EDX
00508F6A |.48 |DEC EAX
00508F6B |.75 E9 \JNZ SHORT csoft.00508F56
从以下开始,看不懂了,晕!请各位帮忙看看,详细指点一二!
00508F6D |>69C3 39300000 IMUL EAX,EBX,4069 ;从这句起就对不上号了,计算出来的结果是1A4CB026E,
;而软件得到的正确结果却将第一位“1”截去了,何故!
00508F73 |.8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
00508F76 |.33C0 XOR EAX,EAX
00508F78 |.8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
00508F7B |.DF6D F0 FILD QWORD PTR SS:[EBP-10]
00508F7E |.D835 BC8F5000 FDIV DWORD PTR DS:[508FBC]
00508F84 |.D95D F8 FSTP DWORD PTR SS:[EBP-8]
00508F87 |.9B WAIT
00508F88 |.D945 F8 FLD DWORD PTR SS:[EBP-8]
00508F8B |.83C4 F4 ADD ESP,-0C
00508F8E |.DB3C24 FSTP TBYTE PTR SS:[ESP] ; |
00508F91 |.9B WAIT ; |
00508F92 |.8BC6 MOV EAX,ESI ; |
00508F94 |.E8 9F1EF0FF CALL csoft.0040AE38 ; \csoft.0040AE38
00508F99 |.33C0 XOR EAX,EAX
00508F9B |.5A POP EDX
00508F9C |.59 POP ECX
00508F9D |.59 POP ECX
00508F9E |.64:8910 MOV DWORD PTR FS:[EAX],EDX
00508FA1 |.68 B68F5000 PUSH csoft.00508FB6
00508FA6 |>8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00508FA9 |.E8 22B9EFFF CALL csoft.004048D0 ; D7.System.@LStrClr(void;void);
00508FAE \.C3 RETN
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!