我的Flash播放器3.0简单分析(菜鸟级的破文高手就免看了)


这两天没有闲着在看雪论坛闲逛看到CCDebuger兄的“用 DeDe 辅助快速定位Delphi程序关键点动画演示”文章发现哦

有用DEDE的动画演示,我在想不错好东西哦下学习学习。下了找一看是Flash的动画不想用IE看,想想找一个播放器看

起会比较舒服点,于是就到天空软件找找。哎!不错一看就找到一个叫“我的Flash播放器3.0”好了就是他了立马Down

了安装。这个“我的Flash播放器3.0”真是不厚道哦捆绑一大堆软件,而且没有提示就是在后台乱搞一通,装完一看惨

桌面多一大堆图标。我卸载竟然不给,火!!!!我狂删。搞定后运行看到主窗口有未注册字样,出于Crack的条件反射当

然不喜欢看到的字样,于是用PEID查哦没有穿马甲是Borland Delphi 6.0 - 7.0语言写的不错我喜欢。再看注册栏给

出了一串给出一大堆字母+符号+数字,提示要把这大串东西发给作者然后付钱注册成正式版!这个软件明显是要注册文

件才注册成功典型的KEYFILE保护方式,狂晕了一阵醒了!!!用OD载入看看有什么东东在里面,再用字符串参考工具发

现如下:

Ultra String Reference,项目 679
 Address=004DCEB0
 Disassembly=MOV     EDX,MyFlashP.004DD2E4
 Text String=\key.reg

这样我就找到有用的东西了,接下来用记事本来作一个假的KEY FILE来试试。在记事乱打一通数字保存为key.reg文件

拷到安装目录里,再接下来顺着004DCEB0往上找合适的地方下断吧,唠叨半天了(别砸我这个菜鸟了,没有卖关子呢)

。。原归正转,往上找到004DCE04下断吧,




004DCE04    55              PUSH    EBP                                 ; 下断F2
004DCE05    8BEC            MOV     EBP,ESP
004DCE07    B9 09000000     MOV     ECX,9
004DCE0C    6A 00           PUSH    0
004DCE0E    6A 00           PUSH    0
004DCE10    49              DEC     ECX
004DCE11  ^ 75 F9           JNZ     SHORT MyFlashP.004DCE0C
004DCE13    51              PUSH    ECX
004DCE14    53              PUSH    EBX
004DCE15    56              PUSH    ESI
004DCE16    57              PUSH    EDI
004DCE17    8945 FC         MOV     DWORD PTR SS:[EBP-4],EAX
004DCE1A    33C0            XOR     EAX,EAX
004DCE1C    55              PUSH    EBP
004DCE1D    68 41D24D00     PUSH    MyFlashP.004DD241
004DCE22    64:FF30         PUSH    DWORD PTR FS:[EAX]
004DCE25    64:8920         MOV     DWORD PTR FS:[EAX],ESP
004DCE28    8D55 EC         LEA     EDX,DWORD PTR SS:[EBP-14]
004DCE2B    A1 90234E00     MOV     EAX,DWORD PTR DS:[4E2390]
004DCE30    8B00            MOV     EAX,DWORD PTR DS:[EAX]
004DCE32    8B80 F0020000   MOV     EAX,DWORD PTR DS:[EAX+2F0]
004DCE38    E8 3793F6FF     CALL    MyFlashP.00446174
004DCE3D    8D45 EC         LEA     EAX,DWORD PTR SS:[EBP-14]
004DCE40    BA 58D24D00     MOV     EDX,MyFlashP.004DD258
004DCE45    E8 4E79F2FF     CALL    MyFlashP.00404798                   ; 取机器码(3320040418:)7/+   

kgdfnfjhhep    ggggvgeE*^$KgJa20046587411)
004DCE4A    8B45 EC         MOV     EAX,DWORD PTR SS:[EBP-14]           ; EAX=机器码
004DCE4D    8D55 F0         LEA     EDX,DWORD PTR SS:[EBP-10]
004DCE50    E8 97D2FFFF     CALL    MyFlashP.004DA0EC                   ; ★★★运算注册码跟进!★★★
004DCE55    8B45 F0         MOV     EAX,DWORD PTR SS:[EBP-10]           ; 运算后得到值保存到010DBFF8
004DCE58    8D55 F4         LEA     EDX,DWORD PTR SS:[EBP-C]
004DCE5B    E8 B0BBF2FF     CALL    MyFlashP.00408A10
004DCE60    8B55 F4         MOV     EDX,DWORD PTR SS:[EBP-C]            ; EDX=运算好的值=010DDCF4
004DCE63    B8 10536700     MOV     EAX,MyFlashP.00675310
004DCE68    E8 BF76F2FF     CALL    MyFlashP.0040452C                   ; 010DDCF4转存到00675310
004DCE6D    A1 90234E00     MOV     EAX,DWORD PTR DS:[4E2390]
004DCE72    8B00            MOV     EAX,DWORD PTR DS:[EAX]
004DCE74    8B80 10030000   MOV     EAX,DWORD PTR DS:[EAX+310]
004DCE7A    8B15 10536700   MOV     EDX,DWORD PTR DS:[675310]           ; EDX=010DDCF4
004DCE80    E8 1F93F6FF     CALL    MyFlashP.004461A4
004DCE85    33C0            XOR     EAX,EAX
004DCE87    55              PUSH    EBP
004DCE88    68 DFCE4D00     PUSH    MyFlashP.004DCEDF
004DCE8D    64:FF30         PUSH    DWORD PTR FS:[EAX]
004DCE90    64:8920         MOV     DWORD PTR FS:[EAX],ESP
004DCE93    8D55 E4         LEA     EDX,DWORD PTR SS:[EBP-1C]
004DCE96    A1 98254E00     MOV     EAX,DWORD PTR DS:[4E2598]
004DCE9B    8B00            MOV     EAX,DWORD PTR DS:[EAX]
004DCE9D    E8 DAA6F8FF     CALL    MyFlashP.0046757C                   ; 获取主运行程序的路径
004DCEA2    8B45 E4         MOV     EAX,DWORD PTR SS:[EBP-1C]           ; EAX=C:\Program Files\我的

Flash播放器\MyFlashPlayer.exe
004DCEA5    8D55 E8         LEA     EDX,DWORD PTR SS:[EBP-18]
004DCEA8    E8 A3C2F2FF     CALL    MyFlashP.00409150                   ; 获取安装目录路径
004DCEAD    8D45 E8         LEA     EAX,DWORD PTR SS:[EBP-18]           ; EAX=C:\Program Files\我的

Flash播放器
004DCEB0    BA E4D24D00     MOV     EDX,MyFlashP.004DD2E4               ; ASCII "\key.reg"
004DCEB5    E8 DE78F2FF     CALL    MyFlashP.00404798                   ; 获取key.reg文件存放的路径
004DCEBA    8B55 E8         MOV     EDX,DWORD PTR SS:[EBP-18]           ; EAX=C:\Program Files\我的

Flash播放器\key.reg
004DCEBD    A1 90234E00     MOV     EAX,DWORD PTR DS:[4E2390]
004DCEC2    8B00            MOV     EAX,DWORD PTR DS:[EAX]
004DCEC4    8B80 0C030000   MOV     EAX,DWORD PTR DS:[EAX+30C]
004DCECA    8B80 20020000   MOV     EAX,DWORD PTR DS:[EAX+220]
004DCED0    8B08            MOV     ECX,DWORD PTR DS:[EAX]
004DCED2    FF51 68         CALL    DWORD PTR DS:[ECX+68]
004DCED5    33C0            XOR     EAX,EAX
004DCED7    5A              POP     EDX
004DCED8    59              POP     ECX
004DCED9    59              POP     ECX
004DCEDA    64:8910         MOV     DWORD PTR FS:[EAX],EDX
004DCEDD    EB 0A           JMP     SHORT MyFlashP.004DCEE9
004DCEDF  ^ E9 686DF2FF     JMP     MyFlashP.00403C4C
004DCEE4    E8 CB70F2FF     CALL    MyFlashP.00403FB4
004DCEE9    8D55 DC         LEA     EDX,DWORD PTR SS:[EBP-24]
004DCEEC    A1 98254E00     MOV     EAX,DWORD PTR DS:[4E2598]
004DCEF1    8B00            MOV     EAX,DWORD PTR DS:[EAX]
004DCEF3    E8 84A6F8FF     CALL    MyFlashP.0046757C                   ; 获取主运行程序的路径
004DCEF8    8B45 DC         MOV     EAX,DWORD PTR SS:[EBP-24]           ; EAX=C:\Program Files\我的

Flash播放器\MyFlashPlayer.exe
004DCEFB    8D55 E0         LEA     EDX,DWORD PTR SS:[EBP-20]
004DCEFE    E8 4DC2F2FF     CALL    MyFlashP.00409150                   ; 获取安装目录路径
004DCF03    8D45 E0         LEA     EAX,DWORD PTR SS:[EBP-20]           ; EAX=C:\Program Files\我的

Flash播放器
004DCF06    BA F8D24D00     MOV     EDX,MyFlashP.004DD2F8               ; ASCII "\ad.txt"
004DCF0B    E8 8878F2FF     CALL    MyFlashP.00404798                   ; 获取ad.txt文件存放的路径
004DCF10    8B55 E0         MOV     EDX,DWORD PTR SS:[EBP-20]           ; EDX=C:\Program Files\我的

Flash播放器\ad.txt
004DCF13    8B45 FC         MOV     EAX,DWORD PTR SS:[EBP-4]
004DCF16    8B80 B4040000   MOV     EAX,DWORD PTR DS:[EAX+4B4]
004DCF1C    8B80 20020000   MOV     EAX,DWORD PTR DS:[EAX+220]
004DCF22    8B08            MOV     ECX,DWORD PTR DS:[EAX]
004DCF24    FF51 74         CALL    DWORD PTR DS:[ECX+74]
004DCF27    C705 20536700 F>MOV     DWORD PTR DS:[675320],-1
004DCF31    8D55 D8         LEA     EDX,DWORD PTR SS:[EBP-28]
004DCF34    A1 90234E00     MOV     EAX,DWORD PTR DS:[4E2390]
004DCF39    8B00            MOV     EAX,DWORD PTR DS:[EAX]
004DCF3B    8B80 0C030000   MOV     EAX,DWORD PTR DS:[EAX+30C]
004DCF41    E8 2E92F6FF     CALL    MyFlashP.00446174                   ; 读取KEY.REG的假码
004DCF46    8B45 D8         MOV     EAX,DWORD PTR SS:[EBP-28]           ; EAX=假码
004DCF49    8D55 F8         LEA     EDX,DWORD PTR SS:[EBP-8]
004DCF4C    E8 BFBAF2FF     CALL    MyFlashP.00408A10
004DCF51    A1 90234E00     MOV     EAX,DWORD PTR DS:[4E2390]
004DCF56    8B00            MOV     EAX,DWORD PTR DS:[EAX]
004DCF58    8B80 0C030000   MOV     EAX,DWORD PTR DS:[EAX+30C]
004DCF5E    8B10            MOV     EDX,DWORD PTR DS:[EAX]
004DCF60    FF92 DC000000   CALL    DWORD PTR DS:[EDX+DC]
004DCF66    8D55 D0         LEA     EDX,DWORD PTR SS:[EBP-30]
004DCF69    A1 90234E00     MOV     EAX,DWORD PTR DS:[4E2390]
004DCF6E    8B00            MOV     EAX,DWORD PTR DS:[EAX]
004DCF70    8B80 10030000   MOV     EAX,DWORD PTR DS:[EAX+310]
004DCF76    E8 F991F6FF     CALL    MyFlashP.00446174                   ; 获取真码16进制长度21(10进制长

度为33)
004DCF7B    8B45 D0         MOV     EAX,DWORD PTR SS:[EBP-30]           ; 取前面33位字符作为真码出现(当

然不是明码的!!^_^)
004DCF7E    8D55 D4         LEA     EDX,DWORD PTR SS:[EBP-2C]
004DCF81    E8 8ABAF2FF     CALL    MyFlashP.00408A10
004DCF86    8B55 D4         MOV     EDX,DWORD PTR SS:[EBP-2C]           ; 真码出现(当然不是明码的!!^_^)
004DCF89    B8 10536700     MOV     EAX,MyFlashP.00675310
004DCF8E    E8 9975F2FF     CALL    MyFlashP.0040452C
004DCF93    A1 90234E00     MOV     EAX,DWORD PTR DS:[4E2390]
004DCF98    8B00            MOV     EAX,DWORD PTR DS:[EAX]
004DCF9A    8B80 10030000   MOV     EAX,DWORD PTR DS:[EAX+310]
004DCFA0    8B10            MOV     EDX,DWORD PTR DS:[EAX]
004DCFA2    FF92 DC000000   CALL    DWORD PTR DS:[EDX+DC]
004DCFA8    A1 10536700     MOV     EAX,DWORD PTR DS:[675310]           ; EAX=真码为33位长度数字+符号+

字母
004DCFAD    8B55 F8         MOV     EDX,DWORD PTR SS:[EBP-8]            ; EDX=假码
004DCFB0    E8 1F79F2FF     CALL    MyFlashP.004048D4                   ; 比较CALL
004DCFB5    0F84 A4000000   JE      MyFlashP.004DD05F                   ; 关键跳转_爆破点哦!


==========================================================================

跟进004DA0EC


004DA0FC    8945 FC         MOV     DWORD PTR SS:[EBP-4],EAX            ; 机器码送入0012FB50
004DA0FF    33C0            XOR     EAX,EAX                             ; EAX清0
004DA101    55              PUSH    EBP
004DA102    68 6CA14D00     PUSH    MyFlashP.004DA16C
004DA107    64:FF30         PUSH    DWORD PTR FS:[EAX]
004DA10A    64:8920         MOV     DWORD PTR FS:[EAX],ESP
004DA10D    8BC6            MOV     EAX,ESI
004DA10F    E8 C4A3F2FF     CALL    MyFlashP.004044D8                   ; 取机器码
004DA114    8B45 FC         MOV     EAX,DWORD PTR SS:[EBP-4]            ; EAX=机器码
004DA117    E8 74A6F2FF     CALL    MyFlashP.00404790                   ; 取BE
004DA11C    8BF8            MOV     EDI,EAX                             ; EDI=EAX=BE
004DA11E    85FF            TEST    EDI,EDI
004DA120    7E 28           JLE     SHORT MyFlashP.004DA14A             ; 小于或等于转移
004DA122    BB 01000000     MOV     EBX,1                               ; EBX=1
004DA127    8D45 F8         LEA     EAX,DWORD PTR SS:[EBP-8]
004DA12A    8B55 FC         MOV     EDX,DWORD PTR SS:[EBP-4]            ; EDX=机器码
004DA12D    0FB6541A FF     MOVZX   EDX,BYTE PTR DS:[EDX+EBX-1]         ; 依次取机器码送入EDX
004DA132    33D3            XOR     EDX,EBX                             ; EDX和EBX做异或运算,保存回到

EDX
004DA134    83F2 45         XOR     EDX,45                              ; EDX和45做异或运算,保存回到

EDX
004DA137    E8 7CA5F2FF     CALL    MyFlashP.004046B8                   ; 将机器码转存
004DA13C    8B55 F8         MOV     EDX,DWORD PTR SS:[EBP-8]            ; EDX=0012FB4C
004DA13F    8BC6            MOV     EAX,ESI                             ; EAX=ESI
004DA141    E8 52A6F2FF     CALL    MyFlashP.00404798
004DA146    43              INC     EBX                                 ; EBX+1
004DA147    4F              DEC     EDI                                 ; EDI-1(BE-1)
004DA148  ^ 75 DD           JNZ     SHORT MyFlashP.004DA127             ; 循环计算190次!!狂晕
004DA14A    8BC6            MOV     EAX,ESI
004DA14C    BA 84A14D00     MOV     EDX,MyFlashP.004DA184
004DA151    E8 42A6F2FF     CALL    MyFlashP.00404798
004DA156    33C0            XOR     EAX,EAX
004DA158    5A              POP     EDX
004DA159    59              POP     ECX
004DA15A    59              POP     ECX
004DA15B    64:8910         MOV     DWORD PTR FS:[EAX],EDX
004DA15E    68 73A14D00     PUSH    MyFlashP.004DA173
004DA163    8D45 F8         LEA     EAX,DWORD PTR SS:[EBP-8]
004DA166    E8 6DA3F2FF     CALL    MyFlashP.004044D8
004DA16B    C3              RETN
004DA16C  ^ E9 8F9DF2FF     JMP     MyFlashP.00403F00
004DA171  ^ EB F0           JMP     SHORT MyFlashP.004DA163
004DA173    5F              POP     EDI
004DA174    5E              POP     ESI
004DA175    5B              POP     EBX
004DA176    59              POP     ECX
004DA177    59              POP     ECX
004DA178    5D              POP     EBP
004DA179    C3              RETN

===========================================================================
                             

注册码算法过程

1、逐个取机器码的ASCII码,ASCII码和机器码自身的长度(是16进制的)做异或运算,得出值再和45做异或运算。

2、异或运算得出的值合并,取前33位作为真注册码。

结后语:

这个软件算法很简单适合我等算法入门菜鸟级,由于这个软件注册需要有找到一个KEYFILE文件,要找这到这个文件也

很容易这个文件名叫KEY.REG
文件格式也很简单就是一串注册码。希望能给入Crakc算法能提供点有用的信息吧!感谢您坚持看完我的菜文。有不好

不对的地方也希望您能给指正
一下3Q了!没想到会有这么简单注册运算过程的软件,算给我拾到软柿子了。

22:21 2006-1-15