欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

Cute Flv Video Converter V1.40算法分析+Delphi注册机源码

Cute Flv Video Converter V1.40算法分析+Delphi注册机源码

【破文标题】Cute Flv Video Converter V1.40算法分析+Delphi注册机源码
【破文作者】Playboysen
【作者邮箱】playboysen#126.com
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件大小】2.37 MB
【软件授权】国外软件/视频转换
【软件语言】英文
【原版下载】http://www.videotool.net/download/flvvideoconverter.exe
【保护方式】用户名 注册码
【软件简介】Cute FLV Video Converter is a easy-to-use video converter software. It can convert many video formats, e.g.DivX, XviD, MOV, MPEG, WMV, H.263,AVI,WMV,ASF to FLV Movie Video format. 
【破解声明】一点心得,愿与大家分享 o(∩_∩)o 版权所有,转载注明作者!
【破解内容】
        
     好长时间没有动手了,前段时间心血来潮玩了半个月脚本。
     这两天牛年之初,决定重返软件安全版闹一闹,没别的,图个热闹喜庆(*^__^*) 嘻嘻……
     踩点可知,程序VC++编写,无壳,未注册启动有Nag框,注册后不再显示,输入假码有错误提示。OD载入,下断点bp MessageBoxW或者查找字符串很容易可找到关键处
0040EDFD   .  6A 01         push 1
0040EDFF   .  E8 340F0000   call <jmp.&MFC42.#6334_CWnd::UpdateData>       ;取注册码
......
0040EE61   .  E8 C2090000   call <jmp.&MFC42.#858_CString::operator=>
0040EE66   .  8B17          mov edx,dword ptr ds:[edi]                     ;用户名放入
0040EE68   .  8B42 F8       mov eax,dword ptr ds:[edx-8]                   ;用户名长度放入
0040EE6B   .  85C0          test eax,eax
0040EE6D   .  75 2B         jnz short FlvVideo.0040EE9A                    ;检验用户名长度
0040EE6F   .  6A 40         push 40
0040EE71   .  68 4C7D4100   push 00417D4C                                 ;warning
0040EE76   .  68 247E4100   push 00417E24                                  ;please enter registration name!
0040EE7B   .  8BCE          mov ecx,esi
0040EE7D   .  E8 D20D0000   call <jmp.&MFC42.#4224_CWnd::MessageBoxA>
0040EE82   .  68 03040000   push 403
0040EE87   .  8BCE          mov ecx,esi
0040EE89   .  E8 D00C0000   call <jmp.&MFC42.#3092_CWnd::GetDlgItem>
0040EE8E   .  8BC8          mov ecx,eax
0040EE90   .  E8 3F0C0000   call <jmp.&MFC42.#5981_CWnd::SetFocus>
0040EE95   .  E9 DE000000   jmp FlvVideo.0040EF78
0040EE9A   >  8B45 00       mov eax,dword ptr ss:[ebp]                     ;同上,检验注册码长度
0040EE9D   .  8B48 F8       mov ecx,dword ptr ds:[eax-8]
0040EEA0   .  85C9          test ecx,ecx
0040EEA2   .  75 2B         jnz short FlvVideo.0040EECF
0040EEA4   .  6A 40         push 40
0040EEA6   .  68 4C7D4100   push 00417D4C                                 ;warning
0040EEAB   .  68 047E4100   push 00417E04                                  ;please enter registration code!
......
0040EEEE   .  8D4C24 1C     lea ecx,dword ptr ss:[esp+1C]
0040EEF2   .  C64424 30 00  mov byte ptr ss:[esp+30],0
0040EEF7   .  E8 C4010000   call FlvVideo.0040F0C0                         ;看堆栈,用户名和注册码入栈可知此应为关键call,F7进入
0040EEFC   .  84C0          test al,al
0040EEFE   .  74 65         je short FlvVideo.0040EF65                     ;关键跳
0040EF00   .  8D4C24 14     lea ecx,dword ptr ss:[esp+14]
0040EF04   .  E8 A7010000   call FlvVideo.0040F0B0
跟入0040EEF7关键call,分析算法
0040F0C0  /$  6A FF         push -1
0040F0C2  |.  68 70144100   push FlvVideo.00411470                         ;SE 句柄安装
0040F0C7  |.  64:A1 0000000>mov eax,dword ptr fs:[0]
0040F0CD  |.  50            push eax
0040F0CE  |.  64:8925 00000>mov dword ptr fs:[0],esp
0040F0D5  |.  51            push ecx
0040F0D6  |.  53            push ebx
0040F0D7  |.  55            push ebp
0040F0D8  |.  56            push esi
0040F0D9  |.  57            push edi
0040F0DA  |.  8BE9          mov ebp,ecx
0040F0DC  |.  8B7C24 28     mov edi,dword ptr ss:[esp+28]                  ;注册码放入edi供下面检验使用
0040F0E0  |.  33DB          xor ebx,ebx
0040F0E2  |.  33C9          xor ecx,ecx
0040F0E4  |.  C74424 1C 010>mov dword ptr ss:[esp+1C],1
0040F0EC  |.  8B57 F8       mov edx,dword ptr ds:[edi-8]                   ;用户名放入edx
0040F0EF  |.  3BD3          cmp edx,ebx
0040F0F1  |.  7E 18         jle short FlvVideo.0040F10B
0040F0F3  |>  8A0439        /mov al,byte ptr ds:[ecx+edi]                  ;所输入注册码必须是数字
0040F0F6  |.  3C 30         |cmp al,30
0040F0F8  |.  0F8C 8F000000 |jl FlvVideo.0040F18D
0040F0FE  |.  3C 39         |cmp al,39
0040F100  |.  0F8F 87000000 |jg FlvVideo.0040F18D
0040F106  |.  41            |inc ecx
0040F107  |.  3BCA          |cmp ecx,edx
0040F109  |.^ 7C E8         \jl short FlvVideo.0040F0F3
0040F10B  |>  8B7424 24     mov esi,dword ptr ss:[esp+24]                  ;用户名放入
0040F10F  |.  8B56 F8       mov edx,dword ptr ds:[esi-8]                   ;用户名长度放入
0040F112  |.  3BD3          cmp edx,ebx
0040F114  |.  74 77         je short FlvVideo.0040F18D
0040F116  |.  33C0          xor eax,eax
0040F118  |.  33C9          xor ecx,ecx
0040F11A  |.  3BD3          cmp edx,ebx
0040F11C  |.  7E 0D         jle short FlvVideo.0040F12B
0040F11E  |>  0FBE1C31      /movsx ebx,byte ptr ds:[ecx+esi]               ;用户名逐位相加,值放入eax,设为K
0040F122  |.  03C3          |add eax,ebx
0040F124  |.  41            |inc ecx
0040F125  |.  3BCA          |cmp ecx,edx
0040F127  |.^ 7C F5         \jl short FlvVideo.0040F11E
0040F129  |.  33DB          xor ebx,ebx                                    ; 提醒:下面参与运算的所有数值都是十六进制数值
0040F12B  |>  8D0CC0        lea ecx,dword ptr ds:[eax+eax*8]               ; 9*K
0040F12E  |.  57            push edi                                       ; /atol函数,大概功能是StrtoInt,此处edi是其唯一的参数(注意下面几行运算并不是atol的参数)
0040F12F  |.  8D0C88        lea ecx,dword ptr ds:[eax+ecx*4]               ; |9K*4+K
0040F132  |.  8D0C49        lea ecx,dword ptr ds:[ecx+ecx*2]               ; |(9K*4+K)*3
0040F135  |.  8D1489        lea edx,dword ptr ds:[ecx+ecx*4]               ; |(((9K*4+K)*3)*5
0040F138  |.  8D0450        lea eax,dword ptr ds:[eax+edx*2]               ; |((((9K*4+K)*3)*5)*2+K
0040F13B  |.  8D34C5 040248>lea esi,dword ptr ds:[eax*8+5480204]           ; |((((9K*4+K)*3)*5)*2+K)*8+5480204 == ESI
0040F142  |.  FF15 9C254100 call dword ptr ds:[<&MSVCRT.atol>]             ; \atol
0040F148  |.  83C4 04       add esp,4
0040F14B  |.  3BC6          cmp eax,esi                                    ;比较假码和运算值(真码)
0040F14D  |.  75 3E         jnz short FlvVideo.0040F18D
0040F14F  |.  51            push ecx
这里我必须要提醒大家一下,上面参与运算的所有数值都是十六进制数值,一定要注意,举个例子:
9K*4+K=24K+K=25K(不是37K,你可以用计算器计算一下9h*4h是不是等于24h)
我在写注册机的时候就很不幸地陷入了自己粗心留下的陷阱,困惑了好长时间!
知道了这一点,其实算法就很简单了
((((9K*4+K)*3)*5)*2+K)*8+5480204
=22B8*K+5480204
我们来看一下Delphi注册机的源码实现部分,我就偷个懒,直接用我自己的注册机模板套一下(http://bbs.pediy.com/showthread.php?t=69440)
提醒大家,如果你遇到一些算法还原成高级语言时觉得比较繁琐,建议学会灵活运用嵌入汇编来编程:

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功