lqiulu 发表于 2009-1-14 17:13

菜鸟学堂之标志位破解“isky-video-converter”

本帖最后由 lqiulu 于 2009-6-11 14:33 编辑

【文章标题】: 菜鸟学堂之标志位破解“isky-video-converter”
【文章作者】: LQIULU
【作者邮箱】: lqiulu@sohu.com
【软件名称】: isky-video-converter
【下载地址】: http://www.iskysoft.net/video-win.html
【保护方式】: 注册码
【使用工具】: od
【软件介绍】: iSkysoft VideoConverter视频转换器
【作者声明】: 程序为典型的标志位,适合新手练习用,呵呵,高手略过。
--------------------------------------------------------------------------------
【详细过程】
无壳delphi编写的程序。

①从字符串入手,OD载入,字符串插件查到不到什么有用的信息,按理说不会这样的啊,没办法,我们还是运行程序吧。F9运行。
程序运行出现了注册提示框,而程序的标题还有(unregistered)的字样。我们要注意程序的每个细节以帮助找到关键的地方。
先记下这个(unregistered)。

我们再用字符串插件查查看,说不定有想不到的结果呢。真的是这样。

“ 地址=00545A8B    反汇编=MOV EDX,0054669C   文本字串=(unregistered)”这个像就是程序标题的那个哦。双击进入汇编窗口。


005459C8   /$55                     PUSH EBP
005459C9   |.8BEC                     MOV EBP,ESP
005459CB   |.B9 23000000            MOV ECX,23
005459D0   |>6A 00                  /PUSH 0
005459D2   |.6A 00                  |PUSH 0
005459D4   |.49                     |DEC ECX
005459D5   |.^ 75 F9                  \JNZ SHORT 005459D0
005459D7   |.51                     PUSH ECX
005459D8   |.53                     PUSH EBX
005459D9   |.56                     PUSH ESI
005459DA   |.57                     PUSH EDI
005459DB   |.8BD8                     MOV EBX,EAX
005459DD   |.33C0                     XOR EAX,EAX
005459DF   |.55                     PUSH EBP
005459E0   |.68 32665400            PUSH 00546632
005459E5   |.64:FF30                  PUSH DWORD PTR FS:
005459E8   |.64:8920                  MOV DWORD PTR FS:,ESP
005459EB   |.B8 40665400            MOV EAX,00546640                        ;c
005459F0   |.E8 3BE3F9FF            CALL 004E3D30
005459F5   |.8BF0                     MOV ESI,EAX
005459F7   |.8D55 F4                  LEA EDX,DWORD PTR SS:
005459FA   |.A1 88F35400            MOV EAX,DWORD PTR DS:
005459FF   |.8B00                     MOV EAX,DWORD PTR DS:
00545A01   |.E8 CE8CF3FF            CALL 0047E6D4
00545A06   |.8B45 F4                  MOV EAX,DWORD PTR SS:
00545A09   |.8D55 F8                  LEA EDX,DWORD PTR SS:
00545A0C   |.E8 3747ECFF            CALL 0040A148
00545A11   |.8B55 F8                  MOV EDX,DWORD PTR SS:
00545A14   |.8D45 FC                  LEA EAX,DWORD PTR SS:
00545A17   |.E8 C0FAEBFF            CALL 004054DC
00545A1C   |.8D45 F0                  LEA EAX,DWORD PTR SS:
00545A1F   |.B9 64665400            MOV ECX,00546664                        ;s
00545A24   |.8B55 FC                  MOV EDX,DWORD PTR SS:
00545A27   |.E8 3CFBEBFF            CALL 00405568
00545A2C   |.8B45 F0                  MOV EAX,DWORD PTR SS:
00545A2F   |.E8 B8FAEBFF            CALL 004054EC
00545A34   |.50                     PUSH EAX
00545A35   |.E8 8AA1F3FF            CALL <JMP.&WS_Log.ConfigFileInit>
00545A3A   |.8BF8                     MOV EDI,EAX
00545A3C   |.E8 3BCDF9FF            CALL 004E277C      //这里就是关键call了。F7进入,对算法call进行修改。
00545A41   |.84C0                     TEST AL,AL
00545A43   |.75 09                  JNZ SHORT 00545A4E    //这里跳过未注册跳到注册版。
00545A45   |.E8 DECFF9FF            CALL 004E2A28         
00545A4A   |.84C0                     TEST AL,AL
00545A4C   |.74 25                  JE SHORT 00545A73       //这里跳到未注册。所以不能让其实现。
00545A4E   |>68 74665400            PUSH 00546674          //跳到这里就可以跳过未注册,也就是正式版了
00545A53   |.57                     PUSH EDI
00545A54   |.E8 8BA1F3FF            CALL <JMP.&WS_Log.ConfigGetStrPtr>
00545A59   |.8BD0                     MOV EDX,EAX
00545A5B   |.8D45 EC                  LEA EAX,DWORD PTR SS:
00545A5E   |.E8 05F3EBFF            CALL 00404D68
00545A63   |.8B55 EC                  MOV EDX,DWORD PTR SS:
00545A66   |.8B83 D0030000            MOV EAX,DWORD PTR DS:
00545A6C   |.E8 FB31F1FF            CALL 00458C6C
00545A71   |.EB 30                  JMP SHORT 00545AA3         //这里跳过未注册
00545A73   |>68 74665400            PUSH 00546674                //s跳到这里就是非注册版了。
00545A78   |.57                     PUSH EDI
00545A79   |.E8 66A1F3FF            CALL <JMP.&WS_Log.ConfigGetStrPtr>
00545A7E   |.8BD0                     MOV EDX,EAX
00545A80   |.8D45 E8                  LEA EAX,DWORD PTR SS:
00545A83   |.E8 E0F2EBFF            CALL 00404D68
00545A88   |.8D45 E8                  LEA EAX,DWORD PTR SS:
00545A8B   |.BA 9C665400            MOV EDX,0054669C            ;(unregistered)//这里就是字符串
00545A90   |.E8 93F3EBFF            CALL 00404E28
00545A95   |.8B55 E8                  MOV EDX,DWORD PTR SS:
00545A98   |.8B83 D0030000            MOV EAX,DWORD PTR DS:
00545A9E   |.E8 C931F1FF            CALL 00458C6C
00545AA3   |>68 AC665400            PUSH 005466AC                           ;s
00545AA8   |.E8 0FA1F3FF            CALL <JMP.&WS_Log.WSGetConfigStrPtr>
00545AAD   |.8B83 D0030000            MOV EAX,DWORD PTR DS:
00545AB3   |.8B40 68                  MOV EAX,DWORD PTR DS:
00545AB6   |.0FB615 CC665400          MOVZX EDX,BYTE PTR DS:
00545ABD   |.E8 1296EEFF            CALL 0042F0D4
00545AC2   |.B8 D0665400            MOV EAX,005466D0                        ;m
00545AC7   |.E8 64E2F9FF            CALL 004E3D30
00545ACC   |.8BD0                     MOV EDX,EAX
00545ACE   |.8B83 D0030000            MOV EAX,DWORD PTR DS:
00545AD4   |.8B40 68                  MOV EAX,DWORD PTR DS:
00545AD7   |.E8 AC91EEFF            CALL 0042EC88
00545ADC   |.68 74665400            PUSH 00546674                           ;s
=======================================================================================

跟进算法call。

004E277C   /$53                     PUSH EBX    //有七次调用,所以如果不在算法call里修改会增加不少的修改量。
004E277D   |.51                     PUSH ECX
004E277E   |.33C9                     XOR ECX,ECX
004E2780   |.B2 01                  MOV DL,1
004E2782   |.A1 60024E00            MOV EAX,DWORD PTR DS:
004E2787   |.E8 E8EFFFFF            CALL 004E1774
004E278C   |.890424                   MOV DWORD PTR SS:,EAX
004E278F   |.8BC4                     MOV EAX,ESP
004E2791   |.E8 FAFCFFFF            CALL 004E2490
004E2796   |.8B0424                   MOV EAX,DWORD PTR SS:
004E2799   |.E8 D2EAFFFF            CALL 004E1270
004E279E   |.8BD8                     MOV EBX,EAX
004E27A0   |.B2 01                  MOV DL,1
004E27A2   |.8B0424                   MOV EAX,DWORD PTR SS:
004E27A5   |.8B08                     MOV ECX,DWORD PTR DS:
004E27A7   |.FF51 FC                  CALL DWORD PTR DS:
004E27AA       8BC3                     MOV EAX,EBX   //标志位修改一下就ok了。MOV AL,1
004E27AC   |.5A                     POP EDX
004E27AD   |.5B                     POP EBX
004E27AE   \.C3                     RETN

保存修改,ok了,不再提示注册,关于里面也已经是注册的了,没有功能限制了。

至于修改文件后运行退出的问题,是程序有自校验,通过WS_Log.dll对程序进行MD5的校验。

003B59D4   8D8C24 88010000                     LEA ECX,DWORD PTR SS:
003B59DB   51                                  PUSH ECX
003B59DC   E8 BFEEFFFF                         CALL GetFileMD5       //取得程序的MD5值。
003B59E1   8D8E 00040000                     LEA ECX,DWORD PTR DS:
003B59E7   8D8424 04010000                     LEA EAX,DWORD PTR SS:
003B59EE   8BFF                              MOV EDI,EDI
003B59F0   8A10                              MOV DL,BYTE PTR DS:
003B59F2   3A11                              CMP DL,BYTE PTR DS:
003B59F4   75 1A                               JNZ SHORT 003B5A10
003B59F6   84D2                              TEST DL,DL
003B59F8   74 12                               JE SHORT 003B5A0C
003B59FA   8A50 01                           MOV DL,BYTE PTR DS:
003B59FD   3A51 01                           CMP DL,BYTE PTR DS:
003B5A00   75 0E                               JNZ SHORT 003B5A10
003B5A02   83C0 02                           ADD EAX,2
003B5A05   83C1 02                           ADD ECX,2
003B5A08   84D2                              TEST DL,DL
003B5A0A   ^ 75 E4                               JNZ SHORT 003B59F0
003B5A0C   33C0                              XOR EAX,EAX
003B5A0E   EB 05                               JMP SHORT 003B5A15
003B5A10   1BC0                              SBB EAX,EAX
003B5A12   83D8 FF                           SBB EAX,-1
003B5A15   85C0                              TEST EAX,EAX
003B5A17   74 42                               JE SHORT 003B5A5B      //这里必须跳
003B5A19   8D5424 04                           LEA EDX,DWORD PTR SS:
003B5A1D   52                                  PUSH EDX
003B5A1E   68 8CE83C00                         PUSH 003CE88C            ; UNICODE "M3 exception [%s]"
003B5A23   E8 68FAFFFF                         CALL WSLogEx


--------------------------------------------------------------------------------
【经验总结】
典型的标志位破解,注意观察程序的每个细节,说不定你就找到的破解之门。比如本程序的【unregistered】。

--------------------------------------------------------------------------------
【版权声明】: 本文原创于吾爱破解论坛, 转载请注明作者并保持文章的完整, 谢谢!
                                                       2009年01月14日 17:12:48

Squn 发表于 2009-1-14 18:30

传说中的沙发。。 拜读过了。不错。挺细致的。 :loveliness:

新手应该多读一些此类的文章。

wgz001 发表于 2009-1-14 21:26

学习了   :)

老唱片 发表于 2009-1-14 23:42

:handshake 受教了。感谢!:)

shsww 发表于 2009-1-15 21:02

比较详细啊,谢谢!

鹭影依凌 发表于 2009-1-15 21:33

Add oil
记得以前和这个类似的系列,是带MD5自校验的

dadafashi 发表于 2009-2-10 14:06

最好能说下修改原理啊...分析下

柯梦南 发表于 2009-5-20 08:52

标志位爆破是很有效的省时省力的方法,感谢大侠分享

a2213572 发表于 2009-6-4 11:37

實際測試下不成功?

大梦谁先觉 发表于 2009-6-4 12:00

学习了,谢谢楼主
页: [1] 2
查看完整版本: 菜鸟学堂之标志位破解“isky-video-converter”