|
【文章标题】: 新年捏到一批软柿子
【文章作者】: BeyondMe
【作者邮箱】: futuring@126.com
【作者主页】: http://hi.baidu.com/beyond0769
【软件名称】: Easy Disk Drive Safeguard 3.3
【下载地址】: http://www.softheap.com/
【加壳方式】: 无
【编写语言】: Delphi
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
好久没有玩算法,今天下载了一个小软件Easy Disk Drive Safeguard,准备分析一下,结果发现是软柿子一个。
只能说今年运气好哇,更有甚者,软柿子不只一个,Easy Disk Drive Safeguard的主页 http://www.softheap.com/ 所有的软件几乎都是一个算法,
看来是专业为我们菜鸟准备的,^_^
Delphi编写的,OD载入运行,输入假码出现错误提示,bp MessageBoxA 下载成功,alt+F9返回到程序领空,跳出来主算法过程如下:
0046AB08 /$ 55 PUSH EBP ; 主算法过程
0046AB09 |. 8BEC MOV EBP,ESP
0046AB0B |. B9 06000000 MOV ECX,6
0046AB10 |> 6A 00 /PUSH 0
0046AB12 |. 6A 00 |PUSH 0
0046AB14 |. 49 |DEC ECX
0046AB15 |.^ 75 F9 \JNZ SHORT disklock.0046AB10
0046AB17 |. 51 PUSH ECX
0046AB18 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
0046AB1B |. 33C0 XOR EAX,EAX
0046AB1D |. 55 PUSH EBP
0046AB1E |. 68 A8AC4600 PUSH disklock.0046ACA8
0046AB23 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0046AB26 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0046AB29 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
0046AB2C |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0046AB2F |. 8B80 AC030000 MOV EAX,DWORD PTR DS:[EAX+3AC]
0046AB35 |. E8 2260FDFF CALL disklock.00440B5C ; 读取假码
0046AB3A |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
0046AB3D |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
0046AB40 |. E8 EBB6FFFF CALL disklock.00466230
0046AB45 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
0046AB48 |. B8 884D4700 MOV EAX,disklock.00474D88
0046AB4D |. E8 EA9EF9FF CALL disklock.00404A3C
0046AB52 |. E8 11FDFFFF CALL disklock.0046A868 ; 关键算法函数
0046AB57 |. 8845 FB MOV BYTE PTR SS:[EBP-5],AL ; AL保存函数返回值
0046AB5A |. 807D FB 00 CMP BYTE PTR SS:[EBP-5],0 ; 如果AL=0则注册失败,=1注册成功
0046AB5E |. 0F84 F2000000 JE disklock.0046AC56 ; 不能跳
0046AB64 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0046AB67 |. C680 CC030000>MOV BYTE PTR DS:[EAX+3CC],1
0046AB6E |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0046AB71 |. 50 PUSH EAX
0046AB72 |. 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
0046AB75 |. B8 C0AC4600 MOV EAX,disklock.0046ACC0 ; ASCII "B9BB8C819888AB829FBA848389829ABE849788"
0046AB7A |. E8 91BBFFFF CALL disklock.00466710
0046AB7F |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
0046AB82 |. 50 PUSH EAX
0046AB83 |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]
0046AB86 |. B8 F0AC4600 MOV EAX,disklock.0046ACF0 ; ASCII "BE828B999A8C9F88B1C8BDBFA2AAA3ACA0A8C8"
0046AB8B |. E8 D8FDFFFF CALL disklock.0046A968
0046AB90 |. 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C]
0046AB93 |. A1 844D4700 MOV EAX,DWORD PTR DS:[474D84]
0046AB98 |. 59 POP ECX
0046AB99 |. E8 2EBDFFFF CALL disklock.004668CC
0046AB9E |. 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
0046ABA1 |. A1 884D4700 MOV EAX,DWORD PTR DS:[474D88]
0046ABA6 |. E8 ADBAFFFF CALL disklock.00466658
0046ABAB |. 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
0046ABAE |. 50 PUSH EAX
0046ABAF |. 8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]
0046ABB2 |. B8 20AD4600 MOV EAX,disklock.0046AD20 ; ASCII "BDBB8C819888AB829FBA848389829ABE849788"
0046ABB7 |. E8 54BBFFFF CALL disklock.00466710
0046ABBC |. 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
0046ABBF |. 50 PUSH EAX
0046ABC0 |. 8D55 D8 LEA EDX,DWORD PTR SS:[EBP-28]
0046ABC3 |. B8 F0AC4600 MOV EAX,disklock.0046ACF0 ; ASCII "BE828B999A8C9F88B1C8BDBFA2AAA3ACA0A8C8"
0046ABC8 |. E8 9BFDFFFF CALL disklock.0046A968
0046ABCD |. 8B55 D8 MOV EDX,DWORD PTR SS:[EBP-28]
0046ABD0 |. A1 844D4700 MOV EAX,DWORD PTR DS:[474D84]
0046ABD5 |. 59 POP ECX
0046ABD6 |. E8 95BDFFFF CALL disklock.00466970
0046ABDB |. 837D F4 00 CMP DWORD PTR SS:[EBP-C],0
0046ABDF |. 75 44 JNZ SHORT disklock.0046AC25
0046ABE1 |. E8 CEF9F9FF CALL disklock.0040A5B4
0046ABE6 |. 83C4 F4 ADD ESP,-0C
0046ABE9 |. DB3C24 FSTP TBYTE PTR SS:[ESP]
0046ABEC |. 9B WAIT
0046ABED |. 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
0046ABF0 |. E8 77F4F9FF CALL disklock.0040A06C
0046ABF5 |. 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C]
0046ABF8 |. 50 PUSH EAX
0046ABF9 |. 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]
0046ABFC |. B8 C0AC4600 MOV EAX,disklock.0046ACC0 ; ASCII "B9BB8C819888AB829FBA848389829ABE849788"
0046AC01 |. E8 0ABBFFFF CALL disklock.00466710
0046AC06 |. 8B45 D0 MOV EAX,DWORD PTR SS:[EBP-30]
0046AC09 |. 50 PUSH EAX
0046AC0A |. 8D55 CC LEA EDX,DWORD PTR SS:[EBP-34]
0046AC0D |. B8 F0AC4600 MOV EAX,disklock.0046ACF0 ; ASCII "BE828B999A8C9F88B1C8BDBFA2AAA3ACA0A8C8"
0046AC12 |. E8 51FDFFFF CALL disklock.0046A968
0046AC17 |. 8B55 CC MOV EDX,DWORD PTR SS:[EBP-34]
0046AC1A |. A1 844D4700 MOV EAX,DWORD PTR DS:[474D84]
0046AC1F |. 59 POP ECX
0046AC20 |. E8 4BBDFFFF CALL disklock.00466970
0046AC25 |> A1 A0F94600 MOV EAX,DWORD PTR DS:[46F9A0]
0046AC2A |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
0046AC2C |. 8B80 B0030000 MOV EAX,DWORD PTR DS:[EAX+3B0]
0046AC32 |. BA 50AD4600 MOV EDX,disklock.0046AD50 ; ASCII "Software (Ctrl+R)"
0046AC37 |. E8 2C7AFEFF CALL disklock.00452668
0046AC3C |. 6A 40 PUSH 40
0046AC3E |. B9 64AD4600 MOV ECX,disklock.0046AD64 ; ASCII "Information"
0046AC43 |. BA 70AD4600 MOV EDX,disklock.0046AD70 ; ASCII "Registration has been completed successfully!"
0046AC48 |. A1 A0FB4600 MOV EAX,DWORD PTR DS:[46FBA0]
0046AC4D |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
0046AC4F |. E8 0059FFFF CALL disklock.00460554
0046AC54 |. EB 22 JMP SHORT disklock.0046AC78
0046AC56 |> B8 884D4700 MOV EAX,disklock.00474D88
0046AC5B |. E8 889DF9FF CALL disklock.004049E8
0046AC60 |. 6A 10 PUSH 10
0046AC62 |. B9 A0AD4600 MOV ECX,disklock.0046ADA0 ; ASCII "Error"
0046AC67 |. BA A8AD4600 MOV EDX,disklock.0046ADA8 ; ASCII "Registration code is invalid!"
0046AC6C |. A1 A0FB4600 MOV EAX,DWORD PTR DS:[46FBA0]
0046AC71 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
0046AC73 |. E8 DC58FFFF CALL disklock.00460554
0046AC78 |> 33C0 XOR EAX,EAX
0046AC7A |. 5A POP EDX
0046AC7B |. 59 POP ECX
0046AC7C |. 59 POP ECX
0046AC7D |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
0046AC80 |. 68 AFAC4600 PUSH disklock.0046ACAF
0046AC85 |> 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34]
0046AC88 |. BA 08000000 MOV EDX,8
0046AC8D |. E8 7A9DF9FF CALL disklock.00404A0C
0046AC92 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
0046AC95 |. E8 4E9DF9FF CALL disklock.004049E8
0046AC9A |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
0046AC9D |. BA 02000000 MOV EDX,2
0046ACA2 |. E8 659DF9FF CALL disklock.00404A0C
0046ACA7 \. C3 RETN
=================
以上过程不必作过多解释,关键CALL在
0046AB52 |. E8 11FDFFFF CALL disklock.0046A868 ; 关键算法函数
只要这个函数返回1,则注册成功。F7进入看看。 |
|