樊盟 发表于 2010-2-2 12:08:41

MP3 Splitter 3.1.1.0 汉化版算法分析 BY:NEXT 2010.2.2

MP3 Splitter 3.1.1.0 汉化版算法分析 BY:NEXT 2010.2.2

下载地址:http://www.skycn.com/soft/3603.html
直接下载:http://125.46.13.254:82/down/HA_MP3Splitter3.110fix_LRH.zip

软件介绍:
MP3 Splitter 3.1.1.0 汉化版
一款易用的Mp3分割工具。可以把大的Mp3文件切割成若干小的Mp3文件,
集成了Mp3播放器可以在分割之前试听,并支持根据文件大小或时间等进行分割。

PECompact 2.x -> Jeremy Collake

不脱壳直接分析算法,先到达OEP,然后查找字符串下断点:

ESP定律到达OEP:

00413593 > $B8 B8924400   mov eax,MP3_Spli.004492B8                ;载入程序后停在这里,F8两次
00413598   ?50            push eax
00413599   ?64:FF35 00000>push dword ptr fs:                  ;hr esp,运行四次
--------------------------------------------------------------------------------------------------
7C953FA2    3B45 F8         cmp eax,dword ptr ss:             ; 一次
7C953FA5    72 09         jb short ntdll.7C953FB0
7C953FA7    3B45 F4         cmp eax,dword ptr ss:
7C953FAA    0F82 D30E0000   jb ntdll.7C954E83
7C953FB0    50            push eax
7C953FB1    E8 67000000   call ntdll.7C95401D
7C953FB6    84C0            test al,al
7C953FB8    0F84 C50E0000   je ntdll.7C954E83
7C953FBE    F605 FAE3997C 8>test byte ptr ds:,80
7C953FC5    0F85 98C10100   jnz ntdll.7C970163
7C953FCB    FF73 04         push dword ptr ds:
7C953FCE    8D45 EC         lea eax,dword ptr ss:            ; 二次
7C953FD1    50            push eax
7C953FD2    FF75 0C         push dword ptr ss:
7C953FD5    53            push ebx
7C953FD6    56            push esi
--------------------------------------------------------------------------------------------------
004492EB    53            push ebx                                 ; 三次
004492EC    51            push ecx
004492ED    57            push edi
004492EE    56            push esi
004492EF    52            push edx
--------------------------------------------------------------------------------------------------
0044937A- FFE0            jmp eax                                  ; 四次到这里,F8到OEP!
0044937C    93            xchg eax,ebx
0044937D    35 41000000   xor eax,41
00449382    0000            add byte ptr ds:,al
--------------------------------------------------------------------------------------------------
00413593 > $6A 60         push 60                                  ;程序OEP
00413595   .68 002D4300   push MP3_Spli.00432D00
0041359A   .E8 350E0000   call MP3_Spli.004143D4
0041359F   .BF 94000000   mov edi,94
004135A4   .8BC7          mov eax,edi
004135A6   .E8 C5EBFFFF   call MP3_Spli.00412170
004135AB   .8965 E8       mov dword ptr ss:,esp
004135AE   .8BF4          mov esi,esp
004135B0   .893E          mov dword ptr ds:,edi
004135B2   .56            push esi                                 ; /pVersionInformation
004135B3   .FF15 9CE24200 call dword ptr ds:               ; \GetVersionExA
--------------------------------------------------------------------------------------------------
很奇怪,程序载入后跟OEP竟然是一个地址,但是载入后查找字符串什么都看不到,本人很菜,希望前辈指点一下!

00413593 > $B8 B8924400   mov eax,MP3_Spli.004492B8                ;载入程序后停在这里,F8两次

00413593 > $6A 60         push 60                                  ;程序OEP
--------------------------------------------------------------------------------------------------
查找字符串,然后跟随到代码找段首下断点开始分析:

超级字串参考
地址       反汇编                                    文本字串
00401010   mov eax,MP3_Spli.0042E5B0               |\tC
00401752   push MP3_Spli.0042E81C                  请输入正确的注册名!
00401770   push MP3_Spli.0042E7F4                  请输入正确的注册码!
0040199E   push MP3_Spli.0042E7D8                  注册成功!o(∩_∩)o
004019B4   push MP3_Spli.0042E7CC                  username
004019B9   push MP3_Spli.0042E7C4                  Option
004019D1   push MP3_Spli.0042E7B0                  registration_code
004019D6   push MP3_Spli.0042E7C4                  Option
004019F4   push MP3_Spli.0042E798                  注册失败!
00401CA2   push MP3_Spli.0042CE08                  感bC

无关紧要的代码就不贴了,直接看下面的算法分析过程

算法分析:

0040195E   > \8A5424 19   mov dl,byte ptr ss:            ;//开始算法分析
00401962   .B0 39         mov al,39                              ;//eax低位置39H
00401964   .3AD0          cmp dl,al                              ;//试炼码第一位与真码第一位比较→第一位=9
00401966   .0F85 84000000 jnz MP3_Spli.004019F0                  ;//不相等则跳向注册失败!
0040196C   .807C24 13 33cmp byte ptr ss:,33            ;//试炼码第二位与33H比较→第二位=3
00401971   .75 7D         jnz short MP3_Spli.004019F0            ;//不相等则跳向注册失败!
00401973   .384424 14   cmp byte ptr ss:,al            ;//试炼码第三位与39H比较→第三位=9
00401977   .75 77         jnz short MP3_Spli.004019F0            ;//不相等则跳向注册失败!
00401979   .8A5424 15   mov dl,byte ptr ss:            ;//试炼码第四位存入dl
0040197D   .B0 31         mov al,31                              ;//31H存入al
0040197F   .3AD0          cmp dl,al                              ;//比较dl,al→第四位=1
00401981   .75 6D         jnz short MP3_Spli.004019F0            ;//不相等则跳向注册失败!
00401983   .80F9 33       cmp cl,33                              ;//试炼码第五位与33H比较→第五位=3
00401986   .75 68         jnz short MP3_Spli.004019F0            ;//不相等则跳向注册失败!
00401988   .384424 1A   cmp byte ptr ss:,al            ;//试炼码第六位与37H比较→第六位=1
0040198C   .75 62         jnz short MP3_Spli.004019F0            ;//不相等则跳向注册失败!
0040198E   .807C24 1B 34cmp byte ptr ss:,34            ;//试炼码第七位与34H比较→第七位=4
00401993   .75 5B         jnz short MP3_Spli.004019F0            ;//不相等则跳向注册失败!
00401995   .80FB 36       cmp bl,36                              ;//试炼码第八位与36H比较→第八位=6
00401998   .75 56         jnz short MP3_Spli.004019F0            ;//不相等则跳向注册失败!
0040199A   >6A 00         push 0
0040199C   .6A 00         push 0
0040199E   .68 D8E74200   push MP3_Spli.0042E7D8                   ;注册成功!o(∩_∩)o

注册码为固定码:93913146

胜利截图:

pao 发表于 2010-2-2 13:25:04

国产软件现在还有固定码?

pao 发表于 2010-2-2 13:26:21

原帖由 pao 于 2010-2-2 13:25 发表 https://www.chinapyg.com/images/common/back.gif
国产软件现在还有固定码?
不好意思哈,没看见汉化版几个字

月之精灵 发表于 2010-2-2 17:33:10

加亮鼓励一下哈/:018

老万 发表于 2010-2-11 08:48:40

学习了,谢谢分享

慕天 发表于 2010-2-14 15:37:45

这个要慢慢看了,有点不太好理解...
页: [1]
查看完整版本: MP3 Splitter 3.1.1.0 汉化版算法分析 BY:NEXT 2010.2.2