菜鸟学堂之标志位破解“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
传说中的沙发。。 拜读过了。不错。挺细致的。 :loveliness:
新手应该多读一些此类的文章。 学习了 :) :handshake 受教了。感谢!:) 比较详细啊,谢谢! Add oil
记得以前和这个类似的系列,是带MD5自校验的 最好能说下修改原理啊...分析下 标志位爆破是很有效的省时省力的方法,感谢大侠分享 實際測試下不成功? 学习了,谢谢楼主
页:
[1]
2