首页
社区
课程
招聘
[原创]继续爆破Apex Movie Converter V3.38
2007-3-18 16:47 6989

[原创]继续爆破Apex Movie Converter V3.38

2007-3-18 16:47
6989
【文章标题】: 继续爆破Apex Movie Converter V3.38
【文章作者】: 壹只老虎
【作者邮箱】: tiger..tiger@163.com
【软件名称】: Apex Movie Converter V3.38
【软件大小】: 7878 KB
【下载地址】: http://www.skycn.com/soft/32959.html
【加壳方式】: 无
【保护方式】: 反调试+注册码验证
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: od+peid
【操作平台】: 盗版xpsp2
【软件介绍】: 是一款专业的视频转换软件。它可以将AVI, DivX, XviD, MPEG, WMV, MOV, ASF, QuickTime ,RM,RMVB转换为AVI, DivX 或者 XviD格式。并可以更改作者,视频大小等等。还可以设置视频剪辑的开始和终止点以截取想要获得的片断。它界面友好,转换速度快,质量无损。【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
        1:PEID查壳,无壳,Microsoft Visual C++ 6.0。
               
        2:od载入,字符串参考,发现--〉ASCII "Thanks for register Apex Movie Converter ."
  
        3:双击过去,来到这里。
  
           0040A833      50                push eax
           0040A834      E8 2796FFFF       call ApexMovi.00403E60              ;我看他这里是关键的算法,
           0040A839      83C4 04           add esp,4
           0040A83C      83F8 01           cmp eax,1
           0040A83F      0F85 A7000000     jnz ApexMovi.0040A8EC
           0040A845      6A 40             push 40
           0040A847      68 70664300       push ApexMovi.00436670               ; ASCII "Successful"(来到这里)
           0040A84C      68 44664300       push ApexMovi.00436644               ; ASCII "Thanks for register Apex Movie Converter ."
  
           注意这一句,0040A834      E8 2796FFFF       call ApexMovi.00403E60
           很明显是关键算法,但是这里爆破了也没用,因为软件启动的时候需要验证的,
           所以我就想他启动的时候可能也要调用这个函数,好吧,过去看看,ctrl+g,
           输入00403E60来到这里。
  
           00403E5F      90                nop
           00403E60      81EC 00030000     sub esp,300                          ; 程序断在这里,EAX=假码,EDX=真码
           00403E66      83C9 FF           or ecx,FFFFFFFF
           00403E69      33C0              xor eax,eax
           00403E6B      53                push ebx
           00403E6C      56                push esi
           00403E6D      8BB424 0C030000   mov esi,dword ptr ss:[esp+30C]       ; ESI=假码
           00403E74      57                push edi
           00403E75      8BFE              mov edi,esi                          ; EDI=假码
           00403E77      F2:AE             repne scas byte ptr es:[edi]
           00403E79      F7D1              not ecx
           00403E7B      49                dec ecx                              ; ECX=注册码长度
           00403E7C      83F9 30           cmp ecx,30                           ; 和48比较,不是就跳死亡
           00403E7F      0F85 E5000000     jnz ApexMovi.00403F6A
           00403E85      33DB              xor ebx,ebx                          ; EBX=0
           00403E87      B9 3F000000       mov ecx,3F                           ; ECX=3F
           00403E8C      8DBC24 0D010000   lea edi,dword ptr ss:[esp+10D]
           00403E93      889C24 0C010000   mov byte ptr ss:[esp+10C],bl
           00403E9A      F3:AB             rep stos dword ptr es:[edi]
           00403E9C      66:AB             stos word ptr es:[edi]
           00403E9E      AA                stos byte ptr es:[edi]
           00403E9F      B9 3F000000       mov ecx,3F
           00403EA4      33C0              xor eax,eax
           00403EA6      8D7C24 0D         lea edi,dword ptr ss:[esp+D]
           00403EAA      885C24 0C         mov byte ptr ss:[esp+C],bl
           00403EAE      F3:AB             rep stos dword ptr es:[edi]
           00403EB0      66:AB             stos word ptr es:[edi]
           00403EB2      AA                stos byte ptr es:[edi]
           00403EB3      B9 3F000000       mov ecx,3F
           00403EB8      33C0              xor eax,eax
           00403EBA      8DBC24 0D020000   lea edi,dword ptr ss:[esp+20D]
           00403EC1      889C24 0C020000   mov byte ptr ss:[esp+20C],bl
           00403EC8      F3:AB             rep stos dword ptr es:[edi]
           00403ECA      66:AB             stos word ptr es:[edi]
           00403ECC      AA                stos byte ptr es:[edi]
           00403ECD      8B3D BCE54200     mov edi,dword ptr ds:[<&MSVCRT.strnc>; msvcrt.strncpy
           00403ED3      6A 10             push 10
           00403ED5      8D8424 10010000   lea eax,dword ptr ss:[esp+110]
           00403EDC      56                push esi                             ; 假码压栈
           00403EDD      50                push eax                             ; 地址[122054]压栈
           00403EDE      FFD7              call edi
           00403EE0      8D4E 10           lea ecx,dword ptr ds:[esi+10]        ; ECX=假码后32位
           00403EE3      6A 10             push 10
           00403EE5      8D5424 1C         lea edx,dword ptr ss:[esp+1C]
           00403EE9      51                push ecx
           00403EEA      52                push edx
           00403EEB      FFD7              call edi
           00403EED      83C6 20           add esi,20
           00403EF0      6A 10             push 10
           00403EF2      8D8424 28020000   lea eax,dword ptr ss:[esp+228]
           00403EF9      56                push esi
           00403EFA      50                push eax
           00403EFB      FFD7              call edi
           00403EFD      8D8C24 30010000   lea ecx,dword ptr ss:[esp+130]       ; ECX=假码后16位
           00403F04      68 C8614300       push ApexMovi.004361C8               ; ASCII "880248DD39322D99"
           00403F09      51                push ecx
           00403F0A      889C24 48010000   mov byte ptr ss:[esp+148],bl
           00403F11      885C24 48         mov byte ptr ss:[esp+48],bl
           00403F15      889C24 48020000   mov byte ptr ss:[esp+248],bl
           00403F1C      E8 0FFEFFFF       call ApexMovi.00403D30               ; 算法(非常大个)
           00403F21      8D5424 38         lea edx,dword ptr ss:[esp+38]
           00403F25      68 B4614300       push ApexMovi.004361B4               ; ASCII "8DEEFCBEE82526C1"
           00403F2A      52                push edx
           00403F2B      8BF0              mov esi,eax
           00403F2D      E8 FEFDFFFF       call ApexMovi.00403D30
           00403F32      8BF8              mov edi,eax
           00403F34      8D8424 40020000   lea eax,dword ptr ss:[esp+240]
           00403F3B      68 B4614300       push ApexMovi.004361B4               ; ASCII "8DEEFCBEE82526C1"
           00403F40      50                push eax
           00403F41      E8 EAFDFFFF       call ApexMovi.00403D30
           00403F46      83C4 3C           add esp,3C
           00403F49      3BF3              cmp esi,ebx
           00403F4B      7E 1D             jle short ApexMovi.00403F6A          ; 关键比较1,爆破1
           00403F4D      3BFB              cmp edi,ebx
           00403F4F      7E 19             jle short ApexMovi.00403F6A          ; 关键比较2,爆破2
           00403F51      3BC3              cmp eax,ebx
           00403F53      7E 15             jle short ApexMovi.00403F6A          ; 关键比较3,爆破3
           00403F55      03C6              add eax,esi
           00403F57      33C9              xor ecx,ecx
           00403F59      3BC7              cmp eax,edi
           00403F5B      5F                pop edi
           00403F5C      0F94C1            sete cl
           00403F5F      5E                pop esi
           00403F60      8BC1              mov eax,ecx
           00403F62      5B                pop ebx
           00403F63      81C4 00030000     add esp,300
           00403F69      C3                retn
  
           爆破之后,注册名随便写,注册码只要是48位就可以了。
           就这样,OK。
  
--------------------------------------------------------------------------------
【经验总结】
  需要注意的几点:
  1:断点的选择,这个软件有反调试的模块,我的od异常了,不过还好,有个地方没做好,就是反调试代码在算法验证之后
  ,就是说,我们只要在反调试验证之前进行分析的话,那么,反调试功能就没用了,这是软件设计上的缺陷。
  2:关于算法分析取注册名和注册码,如果你可以去掉反调试功能的话,那么你可以在点击注册按钮的之后进行分析。如果
  不想去掉反调试的话,你可以在反调试之前断下来,这时候这册名和注册码是从注册表里面取得,软件在点击注册按钮之后
  验证发现非法注册码,就会在HKEY_CURRENT_USER\Software\Apex\Apex Movie Converter\code地方设置为空,把
  HKEY_CURRENT_USER\Software\Apex\Apex Movie Converter\user设置为"Unregistered",所以分析之前需要先手工把这两个
  地方写入测试数据,然后再进行分析,它就会用我们写入的测试数据进行计算.
  3:最近老是爆破,都不会算法分析了,每次遇到的软件的算法都好复杂,可能是没有以前那么耐心好了吧.
  呵呵!~~今天的第二篇文章了.
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年03月18日 16:43:30

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

收藏
免费 0
打赏
分享
最新回复 (10)
雪    币: 333
活跃值: (40)
能力值: ( LV9,RANK:730 )
在线值:
发帖
回帖
粉丝
wzwgp 18 2007-3-18 16:52
2
0
第一个学习!
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
KAN 6 2007-3-18 23:03
3
0
牛 X ,学习了,顶一下兄弟
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hejianwen 2007-3-22 10:40
4
0

完美爆破:0040A83F     /0F85 A7000000 jnz     0040A8EC

    改为:0040A83F     /0F85 A7000000 je     0040A8EC

保存即可..试试就知道..哈哈..
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
happytown 31 2007-3-22 12:31
5
0
兄弟,这是个典型的RSA算法,n也不大,很容易分解的。
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
壹只老虎 7 2007-3-24 03:23
6
0
最初由 happytown 发布
兄弟,这是个典型的RSA算法,n也不大,很容易分解的。


老大,你是怎么一下子看出来是RSA的,有什么特点吗?
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
花满楼 2007-3-29 16:44
7
0
最初由 hejianwen 发布

完美爆破:0040A83F /0F85 A7000000 jnz 0040A8EC

改为:0040A83F /0F85 A7000000 je 0040A8EC

........


这个不行,没有破完

在call,那里破解

mov eax,1

retn

就可以了,完美破解
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rchedu 2007-3-29 17:35
8
0
谢谢分享!!!~!
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
happytown 31 2007-3-30 09:33
9
0
最初由 壹只老虎 发布
老大,你是怎么一下子看出来是RSA的,有什么特点吗?

跟进:
00403F1C      E8 0FFEFFFF       call ApexMovi.00403D30
仔细分析分析。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ggsddu 2007-3-30 13:23
10
0
不错不错,借鉴一下
雪    币: 436
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lionking 2007-5-2 22:21
11
0
要我们得费好长时间才能找到。厉害。
游客
登录 | 注册 方可回帖
返回