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为任意字符
*******************************************************************************************
暂时提供企业版破解补丁,可实现企业版功能
根据你的算法写了一个文件补丁,直接用VC写的,这样不会被杀毒的盯上!
以上是企业版的补丁,只要配合专业版就可以使用企业版功能
感谢liuqiangni提供的补丁! 回复 3# cyane
我很想知道你是怎么下断的,前几天我尝试着断了下,没找到算法Call,可以加我QQ:181809575,交个朋友 1、根据PEID的算法分析插件,可以发现程序中使用了哪些算法,并且可以检测是否有壳
2、运行一下程序看看效果,可以发现注册失败就弹出对话框
3、检查一下程序里的字符串,看看是否有什么有用信息,这里你会发现有几个大数(我上面的分析里面有写),并且PEID里也提示在那个位置有大数,所以就可以试着在大数那里下断点。
4、在OD中设置BP MessageBoxA断点,注册后,断下,这里如果调试可以知道,程序会先断在大数那里,然后经过N步才会弹出对话框,所以可以知道大数有可能是程序验证的一部分,然后在OD里回溯寻找就可以了,肯定会找到验证函数的头。
5、剩下的就是反复调试着看看了。
不知道说的是否够清楚,希望对看到的人有所借鉴就可以了。 学习了。。。 悲剧了,爷被降级了,我靠。。。 回复 1# cyane
感谢论坛各位大大,学习了 谢谢提供算法,好好学习!! 本帖最后由 foxjinlin 于 2011-3-27 12:17 编辑
支持算法分析
学习中
http://download.flywing.cn/swrecorder_pro.exe
页:
[1]
2