cyane 发表于 2011-2-27 22:21:12

MP3音频录音机V10注册算法分析

OD载入程序
.....
00586350|.E8 AFF8FFFF   call    00585C04                         ;专业版
00586355|.84C0          test    al, al
00586357|.74 04         je      short 0058635D
.....
00586389|.E8 76F8FFFF   call    00585C04                         ;标准版
0058638E|.84C0          test    al, al
00586390|.74 04         je      short 00586396
.....
005863C2|.E8 3DF8FFFF   call    00585C04                         ;企业版
005863C7|.84C0          test    al, al
005863C9      74 04         je      short 005863CF
.....
//上面是软件三个版本的验证处,不过都指向同一个验证函数
00585C04   $55            push    ebp
00585C05   .8BEC          mov   ebp, esp
.....
00585C53   .BA 885E5800   mov   edx, 00585E88                  ;user600
00585C58   .E8 3B0AE8FF   call    00406698
00585C5D   .75 07         jnz   short 00585C66
00585C5F   .33DB          xor   ebx, ebx
00585C61   .E9 D3010000   jmp   00585E39
00585C66   >8B45 FC       mov   eax, dword ptr
00585C69   .BA 9C5E5800   mov   edx, 00585E9C                  ;mar1_shengxun5
00585C6E   .E8 250AE8FF   call    00406698
00585C73   .75 07         jnz   short 00585C7C
00585C75   .33DB          xor   ebx, ebx
00585C77   .E9 BD010000   jmp   00585E39
00585C7C   >8B45 FC       mov   eax, dword ptr
00585C7F   .BA B85E5800   mov   edx, 00585EB8                  ;mar3_user460
00585C84   .E8 0F0AE8FF   call    00406698
00585C89   .75 07         jnz   short 00585C92
00585C8B   .33DB          xor   ebx, ebx
00585C8D   .E9 A7010000   jmp   00585E39
00585C92   >8B45 FC       mov   eax, dword ptr
00585C95   .BA D45E5800   mov   edx, 00585ED4                  ;mar3_user892
00585C9A   .E8 F909E8FF   call    00406698
00585C9F   .75 07         jnz   short 00585CA8
00585CA1   .33DB          xor   ebx, ebx
00585CA3   .E9 91010000   jmp   00585E39
00585CA8   >8B45 FC       mov   eax, dword ptr
00585CAB   .BA F05E5800   mov   edx, 00585EF0                  ;mar2_user289
//这里说明一下,要是注册名是上面出现的这些字符串,则注册失败
00585CB0   .E8 E309E8FF   call    00406698
00585CB5   .75 07         jnz   short 00585CBE
00585CB7   .33DB          xor   ebx, ebx
00585CB9   .E9 7B010000   jmp   00585E39
00585CBE   >84DB          test    bl, bl
00585CC0      75 30         jnz   short 00585CF2
00585CC2      A1 6C766000   mov   eax, dword ptr           ;专业版
00585CC7   .8B80 88030000 mov   eax, dword ptr
00585CCD   .8B40 40       mov   eax, dword ptr
00585CD0   .BA 0C5F5800   mov   edx, 00585F0C                  ;
//大数ADBF71744FAFA525027DDCA01646CF36ADD77406F6B6DB04F7A4D6760CFFE779
00585CD5   .E8 7E85FFFF   call    0057E258
00585CDA   .A1 6C766000   mov   eax, dword ptr
00585CDF   .8B80 88030000 mov   eax, dword ptr
00585CE5   .8B40 40       mov   eax, dword ptr
00585CE8   .BA 9C5F5800   mov   edx, 00585F9C                  ;
//大数E784C10634AFCC9A288ABEE7169F7681511AAF01BCA460A242BD0408094C842A
00585CED   .E8 1686FFFF   call    0057E308
00585CF2   >80FB 01       cmp   bl, 1
00585CF5   .0F85 91000000 jnz   00585D8C
00585CFB   .8D45 F0       lea   eax, dword ptr
00585CFE   .8B55 FC       mov   edx, dword ptr
00585D01   .E8 E611E8FF   call    00406EEC
00585D06   .8B55 F0       mov   edx, dword ptr
00585D09   .B8 2C605800   mov   eax, 0058602C                  ;mar6_p
//这里是专业版固定注册名,例如mar6_pxxx,xxx可取任何值
00585D0E   .E8 B51AE8FF   call    004077C8
00585D13   .85C0          test    eax, eax
00585D15   .7E 45         jle   short 00585D5C
00585D17   .8D4D EC       lea   ecx, dword ptr
00585D1A   .BA 03000000   mov   edx, 3
00585D1F   .8B45 F8       mov   eax, dword ptr
00585D22   .E8 9987E8FF   call    0040E4C0
00585D27   .8B45 EC       mov   eax, dword ptr
00585D2A   .BA 48605800   mov   edx, 00586048                  ;100
//这里是注册码前三位判断,只要是100即可
00585D2F   .E8 6409E8FF   call    00406698
00585D34   .75 26         jnz   short 00585D5C
00585D36   .8D4D E8       lea   ecx, dword ptr
00585D39   .BA 03000000   mov   edx, 3
00585D3E   .8B45 F8       mov   eax, dword ptr
00585D41   .E8 B287E8FF   call    0040E4F8
00585D46   .8B45 E8       mov   eax, dword ptr
00585D49   .BA 48605800   mov   edx, 00586048                  ;100
//这里是注册码后三位判断,只要是100即可
00585D4E   .E8 4509E8FF   call    00406698
00585D53   .75 07         jnz   short 00585D5C
00585D55   .B3 01         mov   bl, 1
00585D57   .E9 DD000000   jmp   00585E39
//下面为标准版验证需要的大数
00585D5C   >A1 6C766000   mov   eax, dword ptr
00585D61   .8B80 88030000 mov   eax, dword ptr
00585D67   .8B40 40       mov   eax, dword ptr
00585D6A   .BA 58605800   mov   edx, 00586058                  ;
//大数913BD69A2C1ED57663E0A08C9B0F21EB850FDF1858134999CCFD0F92479D1BB3
00585D6F   .E8 E484FFFF   call    0057E258
00585D74   .A1 6C766000   mov   eax, dword ptr
00585D79   .8B80 88030000 mov   eax, dword ptr
00585D7F   .8B40 40       mov   eax, dword ptr
00585D82   .BA E8605800   mov   edx, 005860E8                  ;
//大数FFE34316A702037A7F20A190E79461DBDBABFE1EC80121B6125CACC6A2C25A0E
00585D87   .E8 7C85FFFF   call    0057E308
00585D8C   >80FB 02       cmp   bl, 2
00585D8F   .75 30         jnz   short 00585DC1
//下面为企业版验证需要的大数
00585D91   .A1 6C766000   mov   eax, dword ptr
00585D96   .8B80 88030000 mov   eax, dword ptr
00585D9C   .8B40 40       mov   eax, dword ptr
00585D9F   .BA 78615800   mov   edx, 00586178                  ;
//大数01CFCF7876F8F572085E6F1C3BCB323151C1D42AD040547D8935E8C3C6963F9E
00585DA4   .E8 AF84FFFF   call    0057E258
00585DA9   .A1 6C766000   mov   eax, dword ptr
00585DAE   .8B80 88030000 mov   eax, dword ptr
00585DB4   .8B40 40       mov   eax, dword ptr
00585DB7   .BA 08625800   mov   edx, 00586208                  ;
//大数17D9EC779DF07909414B49F338868440AA15FC46F7029EA9C50A187C6A24DA61
00585DBC   .E8 4785FFFF   call    0057E308
00585DC1   >33D2          xor   edx, edx
00585DC3   .55            push    ebp
00585DC4   .68 EF5D5800   push    00585DEF
00585DC9   .64:FF32       push    dword ptr fs:
00585DCC   .64:8922       mov   dword ptr fs:, esp
00585DCF   .8D4D F4       lea   ecx, dword ptr
00585DD2   .A1 6C766000   mov   eax, dword ptr
00585DD7   .8B80 88030000 mov   eax, dword ptr
00585DDD   .8B55 F8       mov   edx, dword ptr             
00585DE0   .E8 B315FFFF   call    00577398                             ;验证注册码CALL
00585DE5   .33C0          xor   eax, eax
00585DE7   .5A            pop   edx
00585DE8   .59            pop   ecx
00585DE9   .59            pop   ecx
00585DEA   .64:8910       mov   dword ptr fs:, edx
00585DED   .EB 1F         jmp   short 00585E0E
00585DEF   .^ E9 A0F9E7FF   jmp   00405794
00585DF4      01            db      01
00585DF5      00            db      00
00585DF6      00            db      00
00585DF7      00            db      00
00585DF8   .60E84000      dd      recorder.0040E860
00585DFC   .005E5800      dd      recorder.00585E00
00585E00   .33DB          xor   ebx, ebx
00585E02   .E8 B9FCE7FF   call    00405AC0
00585E07   .EB 30         jmp   short 00585E39
00585E09   .E8 B2FCE7FF   call    00405AC0
00585E0E   >8B45 FC       mov   eax, dword ptr
00585E11   .E8 0609E8FF   call    0040671C
00585E16   .E8 11F9E8FF   call    0041572C
00585E1B   .50            push    eax
00585E1C   .8B45 F4       mov   eax, dword ptr
00585E1F   .E8 F808E8FF   call    0040671C
00585E24   .E8 03F9E8FF   call    0041572C
00585E29   .5A            pop   edx
00585E2A   .E8 85F6E8FF   call    004154B4
00585E2F   .85C0          test    eax, eax                             ;标准版/企业版二次验证
00585E31   .75 04         jnz   short 00585E37
00585E33   .B3 01         mov   bl, 1
00585E35   .EB 02         jmp   short 00585E39
.....
//这里先给出专业版的注册信息吧
user: mar6_pxxxxx
serial: 100xxxx100         x为任意字符

*******************************************************************************************
暂时提供企业版破解补丁,可实现企业版功能

liuqiangni 发表于 2011-3-1 00:16:48

根据你的算法写了一个文件补丁,直接用VC写的,这样不会被杀毒的盯上!

cyane 发表于 2011-3-1 21:41:27





以上是企业版的补丁,只要配合专业版就可以使用企业版功能
感谢liuqiangni提供的补丁!

liuqiangni 发表于 2011-3-1 21:58:40

回复 3# cyane


    我很想知道你是怎么下断的,前几天我尝试着断了下,没找到算法Call,可以加我QQ:181809575,交个朋友

cyane 发表于 2011-3-2 12:27:12

1、根据PEID的算法分析插件,可以发现程序中使用了哪些算法,并且可以检测是否有壳
2、运行一下程序看看效果,可以发现注册失败就弹出对话框
3、检查一下程序里的字符串,看看是否有什么有用信息,这里你会发现有几个大数(我上面的分析里面有写),并且PEID里也提示在那个位置有大数,所以就可以试着在大数那里下断点。
4、在OD中设置BP MessageBoxA断点,注册后,断下,这里如果调试可以知道,程序会先断在大数那里,然后经过N步才会弹出对话框,所以可以知道大数有可能是程序验证的一部分,然后在OD里回溯寻找就可以了,肯定会找到验证函数的头。
5、剩下的就是反复调试着看看了。
不知道说的是否够清楚,希望对看到的人有所借鉴就可以了。

漏网小鱼 发表于 2011-3-4 13:04:44

学习了。。。

liuqiangni 发表于 2011-3-7 18:00:07

悲剧了,爷被降级了,我靠。。。

鹤舞清枫 发表于 2011-3-15 00:21:47

回复 1# cyane


    感谢论坛各位大大,学习了

qinccckencn 发表于 2011-3-26 22:51:13

谢谢提供算法,好好学习!!

foxjinlin 发表于 2011-3-27 12:14:24

本帖最后由 foxjinlin 于 2011-3-27 12:17 编辑

支持算法分析

学习中

http://download.flywing.cn/swrecorder_pro.exe
页: [1] 2
查看完整版本: MP3音频录音机V10注册算法分析