吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8278|回复: 13
收起左侧

[原创] 新手简单算法分析 -- 超级MP3转换大师 V1.20 附上粗糙注册机

[复制链接]
vienna 发表于 2010-3-25 16:33
本帖最后由 vienna 于 2010-3-26 11:09 编辑

【文章标题】: 新手简单算法分析 -- 超级MP3转换大师 V1.20
【文章作者】: vienna
【作者主页】: http://hi.baidu.com/vi_orz
【软件名称】: 超级MP3转换大师 V1.20
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 注册码
【编写语言】: Delphi
【使用工具】: OD
【操作平台】: XP SP3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  载入,MessageBox断点断下错误
  
  
  004C4C60  /.  55            push ebp
  004C4C61  |.  8BEC          mov ebp,esp
  004C4C63  |.  6A 00         push 0
  004C4C65  |.  6A 00         push 0
  004C4C67  |.  53            push ebx
  004C4C68  |.  8BD8          mov ebx,eax
  004C4C6A  |.  33C0          xor eax,eax
  004C4C6C  |.  55            push ebp
  004C4C6D  |.  68 204D4C00   push MP3Conve.004C4D20
  004C4C72  |.  64:FF30       push dword ptr fs:[eax]
  004C4C75  |.  64:8920       mov dword ptr fs:[eax],esp
  004C4C78  |.  8D55 FC       lea edx,[local.1]
  004C4C7B  |.  8B83 20030000 mov eax,dword ptr ds:[ebx+320]
  004C4C81  |.  E8 DEFCF9FF   call MP3Conve.00464964
  004C4C86  |.  8B45 FC       mov eax,[local.1]
  004C4C89  |.  E8 66FAF3FF   call MP3Conve.004046F4
  004C4C8E  |.  85C0          test eax,eax
  004C4C90  |.  75 29         jnz short MP3Conve.004C4CBB              ;  是否填上用户名
  004C4C92  |.  6A 40         push 40
  004C4C94  |.  68 2C4D4C00   push MP3Conve.004C4D2C
  004C4C99  |.  68 344D4C00   push MP3Conve.004C4D34
  004C4C9E  |.  8BC3          mov eax,ebx
  004C4CA0  |.  E8 A764FAFF   call MP3Conve.0046B14C
  004C4CA5  |.  50            push eax                                 ; |hOwner
  004C4CA6  |.  E8 6525F4FF   call <jmp.&user32.MessageBoxA>           ; \MessageBoxA
  004C4CAB  |.  8B83 20030000 mov eax,dword ptr ds:[ebx+320]
  004C4CB1  |.  8B10          mov edx,dword ptr ds:[eax]
  004C4CB3  |.  FF92 C4000000 call dword ptr ds:[edx+C4]
  004C4CB9  |.  EB 4A         jmp short MP3Conve.004C4D05
  004C4CBB  |>  8D55 F8       lea edx,[local.2]
  004C4CBE  |.  8B83 24030000 mov eax,dword ptr ds:[ebx+324]
  004C4CC4  |.  E8 9BFCF9FF   call MP3Conve.00464964
  004C4CC9  |.  8B45 F8       mov eax,[local.2]
  004C4CCC  |.  E8 23FAF3FF   call MP3Conve.004046F4
  004C4CD1  |.  85C0          test eax,eax
  004C4CD3  |.  75 29         jnz short MP3Conve.004C4CFE              ;  是否填上注册码
  004C4CD5  |.  6A 40         push 40
  004C4CD7  |.  68 2C4D4C00   push MP3Conve.004C4D2C
  004C4CDC  |.  68 444D4C00   push MP3Conve.004C4D44
  004C4CE1  |.  8BC3          mov eax,ebx
  004C4CE3  |.  E8 6464FAFF   call MP3Conve.0046B14C
  004C4CE8  |.  50            push eax                                 ; |hOwner
  004C4CE9  |.  E8 2225F4FF   call <jmp.&user32.MessageBoxA>           ; \MessageBoxA
  004C4CEE  |.  8B83 24030000 mov eax,dword ptr ds:[ebx+324]
  004C4CF4  |.  8B10          mov edx,dword ptr ds:[eax]
  004C4CF6  |.  FF92 C4000000 call dword ptr ds:[edx+C4]
  004C4CFC  |.  EB 07         jmp short MP3Conve.004C4D05
  004C4CFE  |>  8BC3          mov eax,ebx
  004C4D00  |.  E8 3FF9FFFF   call MP3Conve.004C4644                   ;  跟进去
  004C4D05  |>  33C0          xor eax,eax
  004C4D07  |.  5A            pop edx
  004C4D08  |.  59            pop ecx
  004C4D09  |.  59            pop ecx
  004C4D0A  |.  64:8910       mov dword ptr fs:[eax],edx
  004C4D0D  |.  68 274D4C00   push MP3Conve.004C4D27
  004C4D12  |>  8D45 F8       lea eax,[local.2]
  004C4D15  |.  BA 02000000   mov edx,2
  004C4D1A  |.  E8 39F7F3FF   call MP3Conve.00404458
  004C4D1F  \.  C3            retn
  
  
  过了检测是否为空之后跟进
  
  
  004C4644   $  55            push ebp
  004C4645   .  8BEC          mov ebp,esp
  004C4647   .  33C9          xor ecx,ecx
  004C4649   .  51            push ecx
  004C464A   .  51            push ecx
  004C464B   .  51            push ecx
  004C464C   .  51            push ecx
  004C464D   .  51            push ecx
  004C464E   .  53            push ebx
  004C464F   .  56            push esi
  004C4650   .  57            push edi
  004C4651   .  8945 FC       mov dword ptr ss:[ebp-4],eax
  004C4654   .  33C0          xor eax,eax
  004C4656   .  55            push ebp
  004C4657   .  68 95474C00   push MP3Conve.004C4795
  004C465C   .  64:FF30       push dword ptr fs:[eax]
  004C465F   .  64:8920       mov dword ptr fs:[eax],esp
  004C4662   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]
  004C4665   .  E8 9A020000   call MP3Conve.004C4904                   ;  跟进
  004C466A   .  84C0          test al,al
  004C466C   .  0F84 DB000000 je MP3Conve.004C474D                     ;  判断是否将你输入的码放进注册表~算法在上面
  
  
  然后都差不多
  
  004C4964  |.  E8 03010000   call MP3Conve.004C4A6C                   ;  出现真码?这里跟~
  004C4969  |.  8B55 F4       mov edx,[local.3]
  004C496C  |.  58            pop eax
  004C496D  |.  E8 CEFEF3FF   call MP3Conve.00404840                   ;  这里比较,影响下面的
  
  ~~~~
  
  004C4A6C  /$  55            push ebp
  004C4A6D  |.  8BEC          mov ebp,esp
  004C4A6F  |.  51            push ecx
  004C4A70  |.  B9 04000000   mov ecx,4
  004C4A75  |>  6A 00         /push 0
  004C4A77  |.  6A 00         |push 0
  004C4A79  |.  49            |dec ecx
  004C4A7A  |.^ 75 F9         \jnz short MP3Conve.004C4A75
  004C4A7C  |.  51            push ecx
  004C4A7D  |.  874D FC       xchg [local.1],ecx
  004C4A80  |.  53            push ebx
  004C4A81  |.  56            push esi
  004C4A82  |.  57            push edi
  004C4A83  |.  8BF9          mov edi,ecx
  004C4A85  |.  8955 FC       mov [local.1],edx
  004C4A88  |.  8B45 FC       mov eax,[local.1]
  004C4A8B  |.  E8 54FEF3FF   call MP3Conve.004048E4
  004C4A90  |.  33C0          xor eax,eax
  004C4A92  |.  55            push ebp
  004C4A93  |.  68 2D4C4C00   push MP3Conve.004C4C2D
  004C4A98  |.  64:FF30       push dword ptr fs:[eax]
  004C4A9B  |.  64:8920       mov dword ptr fs:[eax],esp
  004C4A9E  |.  8BC7          mov eax,edi
  004C4AA0  |.  E8 8FF9F3FF   call MP3Conve.00404434
  004C4AA5  |.  8B45 FC       mov eax,[local.1]
  004C4AA8  |.  E8 47FCF3FF   call MP3Conve.004046F4
  004C4AAD  |.  8BF0          mov esi,eax
  004C4AAF  |.  85F6          test esi,esi
  004C4AB1  |.  7E 26         jle short MP3Conve.004C4AD9
  004C4AB3  |.  BB 01000000   mov ebx,1
  004C4AB8  |>  8D4D EC       /lea ecx,[local.5]
  004C4ABB  |.  8B45 FC       |mov eax,[local.1]
  004C4ABE  |.  0FB64418 FF   |movzx eax,byte ptr ds:[eax+ebx-1]       ;  逐位“vienna”算ascii
  004C4AC3  |.  33D2          |xor edx,edx
  004C4AC5  |.  E8 4642F4FF   |call MP3Conve.00408D10                  ;  变成ascii
  004C4ACA  |.  8B55 EC       |mov edx,[local.5]                       ;  ascii放入edx
  004C4ACD  |.  8D45 F8       |lea eax,[local.2]
  004C4AD0  |.  E8 27FCF3FF   |call MP3Conve.004046FC
  004C4AD5  |.  43            |inc ebx
  004C4AD6  |.  4E            |dec esi                                 ;  算成7669656E6E61
  004C4AD7  |.^ 75 DF         \jnz short MP3Conve.004C4AB8
  004C4AD9  |>  8B45 F8       mov eax,[local.2]                        ;  放7669656E6E61入eax
  004C4ADC  |.  E8 13FCF3FF   call MP3Conve.004046F4
  004C4AE1  |.  8BF0          mov esi,eax
  004C4AE3  |.  85F6          test esi,esi
  004C4AE5  |.  7E 2C         jle short MP3Conve.004C4B13
  004C4AE7  |.  BB 01000000   mov ebx,1
  004C4AEC  |>  8B45 F8       /mov eax,[local.2]                       ;  放7669656E6E61入eax
  004C4AEF  |.  E8 00FCF3FF   |call MP3Conve.004046F4
  004C4AF4  |.  2BC3          |sub eax,ebx                             ;  eax减ebx,c - 1,等于b放入eax
  004C4AF6  |.  8B55 F8       |mov edx,[local.2]                       ;  放7669656E6E61入edx
  004C4AF9  |.  8A1402        |mov dl,byte ptr ds:[edx+eax]            ;  把edx+eax的那位7669656E6E61的ascii放入dl
  004C4AFC  |.  8D45 E8       |lea eax,[local.6]
  004C4AFF  |.  E8 18FBF3FF   |call MP3Conve.0040461C
  004C4B04  |.  8B55 E8       |mov edx,[local.6]
  004C4B07  |.  8D45 F4       |lea eax,[local.3]
  004C4B0A  |.  E8 EDFBF3FF   |call MP3Conve.004046FC
  004C4B0F  |.  43            |inc ebx
  004C4B10  |.  4E            |dec esi                                 ;  这个循环是把vienna的ascii倒序,16E6E6569667
  004C4B11  |.^ 75 D9         \jnz short MP3Conve.004C4AEC
  004C4B13  |>  8D45 F8       lea eax,[local.2]
  004C4B16  |.  50            push eax
  004C4B17  |.  B9 04000000   mov ecx,4                                ;  ecx = 4
  004C4B1C  |.  BA 01000000   mov edx,1                                ;  edx = 1
  004C4B21  |.  8B45 F4       mov eax,[local.3]                        ;  16E6E6569667放入eax
  004C4B24  |.  E8 2BFEF3FF   call MP3Conve.00404954                   ;  这call好像拿了16E6E6569667的头4位16E6
  004C4B29  |.  8D45 F4       lea eax,[local.3]
  004C4B2C  |.  50            push eax
  004C4B2D  |.  B9 04000000   mov ecx,4
  004C4B32  |.  BA 05000000   mov edx,5
  004C4B37  |.  8B45 F4       mov eax,[local.3]
  004C4B3A  |.  E8 15FEF3FF   call MP3Conve.00404954
  004C4B3F  |.  8B45 F8       mov eax,[local.2]                        ;  16E6放入eax
  004C4B42  |.  E8 ADFBF3FF   call MP3Conve.004046F4
  004C4B47  |.  83F8 04       cmp eax,4
  004C4B4A  |.  7D 2F         jge short MP3Conve.004C4B7B              ;  跳了
  004C4B4C  |.  8B45 F8       mov eax,[local.2]
  004C4B4F  |.  E8 A0FBF3FF   call MP3Conve.004046F4
  004C4B54  |.  8BD8          mov ebx,eax
  004C4B56  |.  83FB 03       cmp ebx,3
  004C4B59  |.  7F 20         jg short MP3Conve.004C4B7B
  004C4B5B  |>  8D4D E4       /lea ecx,[local.7]
  004C4B5E  |.  8BC3          |mov eax,ebx
  004C4B60  |.  C1E0 02       |shl eax,2
  004C4B63  |.  33D2          |xor edx,edx
  004C4B65  |.  E8 A641F4FF   |call MP3Conve.00408D10
  004C4B6A  |.  8B55 E4       |mov edx,[local.7]
  004C4B6D  |.  8D45 F8       |lea eax,[local.2]
  004C4B70  |.  E8 87FBF3FF   |call MP3Conve.004046FC
  004C4B75  |.  43            |inc ebx
  004C4B76  |.  83FB 04       |cmp ebx,4
  004C4B79  |.^ 75 E0         \jnz short MP3Conve.004C4B5B
  004C4B7B  |>  8B45 F4       mov eax,[local.3]                        ;  把第二个4位的放入eax
  004C4B7E  |.  E8 71FBF3FF   call MP3Conve.004046F4
  004C4B83  |.  83F8 04       cmp eax,4
  004C4B86  |.  7D 2F         jge short MP3Conve.004C4BB7              ;  也是跳了
  004C4B88  |.  8B45 F4       mov eax,[local.3]
  004C4B8B  |.  E8 64FBF3FF   call MP3Conve.004046F4
  004C4B90  |.  8BD8          mov ebx,eax
  004C4B92  |.  83FB 03       cmp ebx,3
  004C4B95  |.  7F 20         jg short MP3Conve.004C4BB7
  004C4B97  |>  8D4D E0       /lea ecx,[local.8]
  004C4B9A  |.  8BC3          |mov eax,ebx
  004C4B9C  |.  C1E0 02       |shl eax,2
  004C4B9F  |.  33D2          |xor edx,edx
  004C4BA1  |.  E8 6A41F4FF   |call MP3Conve.00408D10
  004C4BA6  |.  8B55 E0       |mov edx,[local.8]
  004C4BA9  |.  8D45 F4       |lea eax,[local.3]
  004C4BAC  |.  E8 4BFBF3FF   |call MP3Conve.004046FC
  004C4BB1  |.  43            |inc ebx
  004C4BB2  |.  83FB 04       |cmp ebx,4
  004C4BB5  |.^ 75 E0         \jnz short MP3Conve.004C4B97
  004C4BB7  |>  8D45 F0       lea eax,[local.4]
  004C4BBA  |.  BA 444C4C00   mov edx,MP3Conve.004C4C44                ;  ASCII "MP3Conv268d58k"
  004C4BBF  |.  E8 08F9F3FF   call MP3Conve.004044CC
  004C4BC4  |.  8D45 DC       lea eax,[local.9]
  004C4BC7  |.  50            push eax
  004C4BC8  |.  B9 04000000   mov ecx,4
  004C4BCD  |.  BA 01000000   mov edx,1
  004C4BD2  |.  8B45 F0       mov eax,[local.4]
  004C4BD5  |.  E8 7AFDF3FF   call MP3Conve.00404954                   ;  把MP3Conv268d58k头4个英文字母拿出来,就是MP3C
  004C4BDA  |.  FF75 DC       push [local.9]
  004C4BDD  |.  68 5C4C4C00   push MP3Conve.004C4C5C
  004C4BE2  |.  FF75 F8       push [local.2]
  004C4BE5  |.  8D45 D8       lea eax,[local.10]
  004C4BE8  |.  50            push eax
  004C4BE9  |.  B9 05000000   mov ecx,5
  004C4BEE  |.  BA 05000000   mov edx,5
  004C4BF3  |.  8B45 F0       mov eax,[local.4]
  004C4BF6  |.  E8 59FDF3FF   call MP3Conve.00404954
  004C4BFB  |.  FF75 D8       push [local.10]                          ;  把第5到第10位的MP3Conv268d58k拿出来,onv26
  004C4BFE  |.  68 5C4C4C00   push MP3Conve.004C4C5C
  004C4C03  |.  FF75 F4       push [local.3]
  004C4C06  |.  8BC7          mov eax,edi
  004C4C08  |.  BA 06000000   mov edx,6
  004C4C0D  |.  E8 A2FBF3FF   call MP3Conve.004047B4                   ;  里面做一下排序,我的号是MP3C-16E6onv26-E656
  004C4C12  |.  33C0          xor eax,eax
  004C4C14  |.  5A            pop edx
  004C4C15  |.  59            pop ecx
  004C4C16  |.  59            pop ecx
  004C4C17  |.  64:8910       mov dword ptr fs:[eax],edx
  004C4C1A  |.  68 344C4C00   push MP3Conve.004C4C34
  004C4C1F  |>  8D45 D8       lea eax,[local.10]
  004C4C22  |.  BA 0A000000   mov edx,0A
  004C4C27  |.  E8 2CF8F3FF   call MP3Conve.00404458
  004C4C2C  \.  C3            retn
  004C4C2D   .^ E9 62F1F3FF   jmp MP3Conve.00403D94
  004C4C32   .^ EB EB         jmp short MP3Conve.004C4C1F
  004C4C34   .  5F            pop edi
  004C4C35   .  5E            pop esi
  004C4C36   .  5B            pop ebx
  004C4C37   .  8BE5          mov esp,ebp
  004C4C39   .  5D            pop ebp
  004C4C3A   .  C3            retn
  
  
  基本就是这样
  
  一、把输入的用户名变成大写十六进制ASCII然后倒序
  二、"MP3C-" + 倒序后的头4位 + "onv26-" + 倒序后的第5位至第8位就是注册码
  三、输入的用户名少于4位的话貌似会有点处理。。没看了~~
  
  例如输入vienna
  ASCII "7669656E6E61"  全部转成ASCII
  ASCII "16E6E6569667"  倒序
  ASCII "MP3C-16E6onv26-E656"   加上默认的字符,搞定
  
#include <iostream>

using namespace std;
void PrintCapital(int iUN);

int main() {
        char chUserName[20] = "";
        int iUserName[20];
        int i,iStrLen;

        cout << "输入用户名,中文好像不行~\n";
        cin >> chUserName;
        iStrLen = strlen(chUserName);

        for(i = 0;i < iStrLen;++i) {
                iUserName[i] = chUserName[i];
        }
        
        cout << "MP3C-";
        PrintCapital(iUserName[iStrLen-1]%16);
        cout << hex << iUserName[iStrLen-1]/16;

        PrintCapital(iUserName[iStrLen-2]%16);
        cout << hex << iUserName[iStrLen-2]/16;
        
        cout << "onv26-";
        
        PrintCapital(iUserName[iStrLen-3]%16);
        cout << hex << iUserName[iStrLen-3]/16;
        
        PrintCapital(iUserName[iStrLen-4]%16);
        cout << hex << iUserName[iStrLen-4]/16;

}


void PrintCapital(int iUN) {
        switch(iUN) {
                case 0xA:
                        cout << "A";
                        break;
                case 0xB:
                        cout << "B";
                        break;
                case 0xC:
                        cout << "C";
                        break;
                case 0xD:
                        cout << "D";
                        break;
                case 0xE:
                        cout << "E";
                        break;
                case 0xF:
                        cout << "F";
                        break;

                default:
                        cout << iUN;
        }
}
--------------------------------------------------------------------------------
【经验总结】
  也是昨天找来给自己入门分析算法的,适合新手。
  
--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!

                                                       2010年03月25日 下午 04:31:54

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

missviola 发表于 2010-3-25 18:08
[s:235]彩笔新手进来学习了!话说大大这个代码着色的效果怎么弄的啊?[s:219]
 楼主| vienna 发表于 2010-3-25 18:20
回复 2# missviola

xTiNt着色
http://www.skycn.com/soft/16115.html
missviola 发表于 2010-3-25 18:45
回复 3# vienna


    具体怎么用来生成破文的啊,大大可否具体指点一下~~[s:231]
 楼主| vienna 发表于 2010-3-25 19:08
回复 4# missviola


    破文是看雪的破文生成器~贴代码就用刚刚的工具着色~
    http://www.pediy.com/tools/other/ctc/ctc.rar
    [s:33] 膜拜大大~~
kelibaba 发表于 2010-3-30 04:31
我来看看头像的。。
Hmily 发表于 2010-3-31 17:45
写的很好,加精鼓励,期待更多佳作!
hzmhzmhzm 发表于 2010-5-4 20:34
回复 1# vienna


    程序的算法真的是难点,明码的好办点.暗码比较有点难度.谢谢老师指点.
混混angel 发表于 2010-5-30 20:41
支持学习
落雪飞花 发表于 2011-2-11 14:27
大牛级别的啊!膜拜
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-10 21:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表