首页
社区
课程
招聘
[旧帖] [原创]对一个国外的视频转换软件的简单分析 0.00雪花
发表于: 2008-10-5 11:35 4199

[旧帖] [原创]对一个国外的视频转换软件的简单分析 0.00雪花

2008-10-5 11:35
4199
【文章标题】: 【原创】对一个国外的视频转换软件的简单分析
【文章作者】: wyART
【作者邮箱】: 243261920@163.com
【作者主页】: http://hi.csdn.net/haart/profile
【作者QQ号】: 243261920
【软件名称】: Absolute Video Converter V2.8
【软件大小】: 完全安装好3.56 MB
【下载地址】: http://www.iaudiosoft.com/(官方主页)
【加壳方式】: 没加壳
【保护方式】: 没发现
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: PEID,OD
【操作平台】: WIN XP Sp3
【软件介绍】: 一个国外的优秀的视频转换软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!本文仅供学习交流参考!
--------------------------------------------------------------------------------
【详细过程】
     谨以此献给和我一样的菜鸟们。高手略过。
     这是我的破文的处女作,呵呵。上次要转换一视频文件,网上找了一下,有的视频处理软件太大,有的界面做得太丑,平时我都是在华军,天空,霏凡淘软件,那天突发奇想    想看一下国外的软件下载网站做得怎么样,于是到网上狂搜一通,找到了http://www.soft32.com/这个国外的软件下载网站,发现界面做得不错,大家也可以去国外的网站        看看,和中国的对比对比,开眼看世界,与之同步,这样能及时掌握一些新的东西,呵呵。后来就找到了Absolute Video Converter V2.8这个软件,界面很漂亮,转换效果也不   错 ,但是共享的,我决定操起OD对其分析一下。

  用OD载入,F9运行,弹出软件主界面,点程序菜单的help下的Register...项,弹出注册窗口,输入
  用户名:PEDIY
  注册码:123456789
  弹出错误提示框,用F12暂停法返回到OD汇编窗口的004ED685行
  
  004ED674  |.  B9 FCD64E00   MOV ECX,Absolute.004ED6FC                ;  ASCII "Sorry"
  004ED679  |.  BA 04D74E00   MOV EDX,Absolute.004ED704                ;  ASCII "Invalid user name or registration code!"
  004ED67E  |.  A1 F8804F00   MOV EAX,DWORD PTR DS:[4F80F8]
  004ED683  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004ED685  |.  E8 B6F6F9FF   CALL Absolute.0048CD40
  
  找到段首下断,重新输入用户名,注册码注册,程序被断在004ED5F8,F8单步,跟踪过程如下。
  
  
  004ED5F8  /.  55            PUSH EBP
  004ED5F9  |.  8BEC          MOV EBP,ESP
  004ED5FB  |.  6A 00         PUSH 0
  004ED5FD  |.  6A 00         PUSH 0
  004ED5FF  |.  53            PUSH EBX
  004ED600  |.  8BD8          MOV EBX,EAX
  004ED602  |.  33C0          XOR EAX,EAX                              ;  EAX清零
  004ED604  |.  55            PUSH EBP
  004ED605  |.  68 A5D64E00   PUSH Absolute.004ED6A5
  004ED60A  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
  004ED60D  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004ED610  |.  8D55 FC       LEA EDX,[LOCAL.1]
  004ED613  |.  8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
  004ED619  |.  E8 02F5F7FF   CALL Absolute.0046CB20                   ;  取注册码名
  004ED61E  |.  8D55 F8       LEA EDX,[LOCAL.2]
  004ED621  |.  8B83 18030000 MOV EAX,DWORD PTR DS:[EBX+318]
  004ED627  |.  E8 F4F4F7FF   CALL Absolute.0046CB20                   ;  取注册码
  004ED62C  |.  A1 2C7E4F00   MOV EAX,DWORD PTR DS:[4F7E2C]
  004ED631  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004ED633  |.  8B4D F8       MOV ECX,[LOCAL.2]                        ;  注册码地址复制到ECX
  004ED636  |.  8B55 FC       MOV EDX,[LOCAL.1]                        ;  用户名地址复制到EDX
  004ED639  |.  E8 7A6B0000   CALL Absolute.004F41B8                       ;  关键CALL,跟进去
  004ED63E  |.  84C0          TEST AL,AL                               ;  比较AL,等于零就跳
  004ED640  |.  74 30         JE SHORT Absolute.004ED672               ;  不能跳,一跳就注册失败!
  004ED642  |.  A1 2C7E4F00   MOV EAX,DWORD PTR DS:[4F7E2C]
  004ED647  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004ED649  |.  8B55 FC       MOV EDX,[LOCAL.1]
  004ED64C  |.  E8 DF6E0000   CALL Absolute.004F4530
  004ED651  |.  6A 40         PUSH 40                                  ;  看下一行,注册成功的标志
  004ED653  |.  B9 B4D64E00   MOV ECX,Absolute.004ED6B4                ;  ASCII "Congratulations!"
  004ED658  |.  BA C8D64E00   MOV EDX,Absolute.004ED6C8                ;  ASCII "Register successfully!  Thank you for
  your support!"
  004ED65D  |.  A1 F8804F00   MOV EAX,DWORD PTR DS:[4F80F8]
  004ED662  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004ED664  |.  E8 D7F6F9FF   CALL Absolute.0048CD40
  004ED669  |.  8BC3          MOV EAX,EBX
  004ED66B  |.  E8 18BEF9FF   CALL Absolute.00489488
  004ED670  |.  EB 18         JMP SHORT Absolute.004ED68A
  004ED672  |>  6A 40         PUSH 40                                  ;  看下一行,注册成功的标志
  004ED674  |.  B9 FCD64E00   MOV ECX,Absolute.004ED6FC                ;  ASCII "Sorry"
  004ED679  |.  BA 04D74E00   MOV EDX,Absolute.004ED704                ;  ASCII "Invalid user name or registration
  code!"
  004ED67E  |.  A1 F8804F00   MOV EAX,DWORD PTR DS:[4F80F8]
  004ED683  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004ED685  |.  E8 B6F6F9FF   CALL Absolute.0048CD40
  004ED68A  |>  33C0          XOR EAX,EAX
  004ED68C  |.  5A            POP EDX
  004ED68D  |.  59            POP ECX
  004ED68E  |.  59            POP ECX
  004ED68F  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
  004ED692  |.  68 ACD64E00   PUSH Absolute.004ED6AC
  004ED697  |>  8D45 F8       LEA EAX,[LOCAL.2]
  004ED69A  |.  BA 02000000   MOV EDX,2
  004ED69F  |.  E8 2071F1FF   CALL Absolute.004047C4
  004ED6A4  \.  C3            RETN
  
  注意004ED639这一行   004ED639  |.  E8 7A6B0000   CALL Absolute.004F41B8                算法的关键CALL,跟进去。
  
  004F41B8  /$  55            PUSH EBP
  004F41B9  |.  8BEC          MOV EBP,ESP
  004F41BB  |.  83C4 E4       ADD ESP,-1C
  004F41BE  |.  53            PUSH EBX
  004F41BF  |.  33DB          XOR EBX,EBX                              ;  EBX清零
  004F41C1  |.  895D F4       MOV [LOCAL.3],EBX
  004F41C4  |.  894D F8       MOV [LOCAL.2],ECX                        ;  把注册码复制到DWORD PTR SS:[EBP-8]
  004F41C7  |.  8955 FC       MOV [LOCAL.1],EDX                        ;  把用户名复制到DWORD PTR SS:[EBP-4]
  004F41CA  |.  8B45 FC       MOV EAX,[LOCAL.1]                        ;  用户名地址复制到EAX
  004F41CD  |.  E8 7E0AF1FF   CALL Absolute.00404C50
  004F41D2  |.  8B45 F8       MOV EAX,[LOCAL.2]                        ;  注册码地址放到EAX
  004F41D5  |.  E8 760AF1FF   CALL Absolute.00404C50
  004F41DA  |.  8D45 EC       LEA EAX,[LOCAL.5]
  004F41DD  |.  8B15 00DE4D00 MOV EDX,DWORD PTR DS:[4DDE00]            ;  Absolute.004DDE04
  004F41E3  |.  E8 4810F1FF   CALL Absolute.00405230
  004F41E8  |.  8D45 E4       LEA EAX,[LOCAL.7]
  004F41EB  |.  8B15 00DE4D00 MOV EDX,DWORD PTR DS:[4DDE00]            ;  Absolute.004DDE04
  004F41F1  |.  E8 3A10F1FF   CALL Absolute.00405230
  004F41F6  |.  33C0          XOR EAX,EAX                              ;  EAX清零
  004F41F8  |.  55            PUSH EBP
  004F41F9  |.  68 7A424F00   PUSH Absolute.004F427A
  004F41FE  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
  004F4201  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004F4204  |.  33DB          XOR EBX,EBX
  004F4206  |.  8D55 EC       LEA EDX,[LOCAL.5]
  004F4209  |.  A1 8C7C4F00   MOV EAX,DWORD PTR DS:[4F7C8C]            ;  65537
  004F420E  |.  E8 7DA2FEFF   CALL Absolute.004DE490
  004F4213  |.  8D55 E4       LEA EDX,[LOCAL.7]
  004F4216  |.  A1 907C4F00   MOV EAX,DWORD PTR DS:[4F7C90]            ;  一串30位的类似MD5的字符串
  004F421B  |.  E8 70A2FEFF   CALL Absolute.004DE490
  004F4220  |.  8D45 FC       LEA EAX,[LOCAL.1]
  004F4223  |.  50            PUSH EAX
  004F4224  |.  8D4D E4       LEA ECX,[LOCAL.7]
  004F4227  |.  8D55 EC       LEA EDX,[LOCAL.5]
  004F422A  |.  8B45 FC       MOV EAX,[LOCAL.1]                        ;  用户名放到EAX
  004F422D  |.  E8 4AC6FEFF   CALL Absolute.004E087C
  004F4232  |.  8D55 F4       LEA EDX,[LOCAL.3]                        ;  用户名放到EDX
  004F4235  |.  8B45 FC       MOV EAX,[LOCAL.1]
  004F4238  |.  E8 2B9EFEFF   CALL Absolute.004DE068                   ;  关键算法产生注册真码
  004F423D  |.  8B45 F8       MOV EAX,[LOCAL.2]                        ;  假码
  004F4240  |.  8B55 F4       MOV EDX,[LOCAL.3]                        ;  真码出现
  004F4243  |.  E8 6409F1FF   CALL Absolute.00404BAC                   ;  真假码比较
  004F4248  |.  75 02         JNZ SHORT Absolute.004F424C              ;  不等则AL置零,注册失败
  004F424A  |.  B3 01         MOV BL,1
  004F424C  |>  33C0          XOR EAX,EAX
  004F424E  |.  5A            POP EDX
  004F424F  |.  59            POP ECX
  004F4250  |.  59            POP ECX
  004F4251  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
  004F4254  |.  68 81424F00   PUSH Absolute.004F4281
  004F4259  |>  8D45 E4       LEA EAX,[LOCAL.7]
  004F425C  |.  8B15 00DE4D00 MOV EDX,DWORD PTR DS:[4DDE00]            ;  Absolute.004DDE04
  004F4262  |.  B9 02000000   MOV ECX,2
  004F4267  |.  E8 E010F1FF   CALL Absolute.0040534C
  004F426C  |.  8D45 F4       LEA EAX,[LOCAL.3]
  004F426F  |.  BA 03000000   MOV EDX,3
  004F4274  |.  E8 4B05F1FF   CALL Absolute.004047C4
  004F4279  \.  C3            RETN
  
   
  该软件采用了采用了明码比较的方式,只要随意输入用户名和注册假码,到004F4243下断,在EDX可看到真码。用Keymake很容易写出内存注册机。
  
--------------------------------------------------------------------------------
【经验总结】
  本来我还想分析一下该软件的注册算法,写出算法注册机的,但是发现关键CALL里有几个call有很复杂的算法处理过程,今天
  是国庆长假的最后一天,明天又上课了,限于水平和时间,没能把注册算法研究出来,不过已经能根据任意用户名追到真码
  了。另外我还在这软件的官方网站上载了其他产品,发现他们的注册算法几乎一模一样,连带着整个网站的软件产品都可以
  轻易的追出注册码来。危害很大,因此做软件要善于运用不同的方法来保护自己的软件。
  欢迎大家加我QQ,与我分享交流!
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年10月05日 11:25:30

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 403
活跃值: (29)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
2
感兴趣的同仁可以去官方网站下载该软件,分析其注册算法,很有挑战性的!
2008-10-5 12:36
0
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好多啊,看的头都晕了。
2008-10-5 20:16
0
游客
登录 | 注册 方可回帖
返回
//