飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5079|回复: 5

[原创] MP3 Splitter 3.1.1.0 汉化版算法分析 BY:NEXT 2010.2.2

[复制链接]
  • TA的每日心情
    开心
    2024-8-15 13:22
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2010-2-2 12:08:41 | 显示全部楼层 |阅读模式
    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:[0]                    ;  hr esp,运行四次
    --------------------------------------------------------------------------------------------------
    7C953FA2    3B45 F8         cmp eax,dword ptr ss:[ebp-8]             ; 一次
    7C953FA5    72 09           jb short ntdll.7C953FB0
    7C953FA7    3B45 F4         cmp eax,dword ptr ss:[ebp-C]
    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:[7C99E3FA],80
    7C953FC5    0F85 98C10100   jnz ntdll.7C970163
    7C953FCB    FF73 04         push dword ptr ds:[ebx+4]
    7C953FCE    8D45 EC         lea eax,dword ptr ss:[ebp-14]            ; 二次
    7C953FD1    50              push eax
    7C953FD2    FF75 0C         push dword ptr ss:[ebp+C]
    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:[eax],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:[ebp-18],esp
    004135AE   .  8BF4          mov esi,esp
    004135B0   .  893E          mov dword ptr ds:[esi],edi
    004135B2   .  56            push esi                                 ; /pVersionInformation
    004135B3   .  FF15 9CE24200 call dword ptr ds:[42E29C]               ; \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:[esp+19]              ;  //开始算法分析
    00401962   .  B0 39         mov al,39                                ;  //eax低位置39H
    00401964   .  3AD0          cmp dl,al                                ;  //试炼码第一位与真码第一位比较→第一位=9
    00401966   .  0F85 84000000 jnz MP3_Spli.004019F0                    ;  //不相等则跳向注册失败!
    0040196C   .  807C24 13 33  cmp byte ptr ss:[esp+13],33              ;  //试炼码第二位与33H比较→第二位=3
    00401971   .  75 7D         jnz short MP3_Spli.004019F0              ;  //不相等则跳向注册失败!
    00401973   .  384424 14     cmp byte ptr ss:[esp+14],al              ;  //试炼码第三位与39H比较→第三位=9
    00401977   .  75 77         jnz short MP3_Spli.004019F0              ;  //不相等则跳向注册失败!
    00401979   .  8A5424 15     mov dl,byte ptr ss:[esp+15]              ;  //试炼码第四位存入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:[esp+1A],al              ;  //试炼码第六位与37H比较→第六位=1
    0040198C   .  75 62         jnz short MP3_Spli.004019F0              ;  //不相等则跳向注册失败!
    0040198E   .  807C24 1B 34  cmp byte ptr ss:[esp+1B],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

    胜利截图:
    胜利截图.gif

    评分

    参与人数 1飘云币 +20 收起 理由
    月之精灵 + 20 您的贴子很精彩,希望能再次分享!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-2-2 13:25:04 | 显示全部楼层
    国产软件现在还有固定码?
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-2-2 13:26:21 | 显示全部楼层
    原帖由 pao 于 2010-2-2 13:25 发表
    国产软件现在还有固定码?

    不好意思哈,没看见汉化版几个字
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-3 23:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-2-2 17:33:10 | 显示全部楼层
    加亮鼓励一下哈/:018
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-10-9 11:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-2-11 08:48:40 | 显示全部楼层
    学习了,谢谢分享
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-2-14 15:37:45 | 显示全部楼层
    这个要慢慢看了,有点不太好理解...
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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