首页
论坛
专栏
课程

[旧帖] [邀请码已发][原创]EZSuper v2.2.1104.677.Full 爆破分析 0.00元

2010-2-5 21:52 3155

[旧帖] [邀请码已发][原创]EZSuper v2.2.1104.677.Full 爆破分析 0.00元

2010-2-5 21:52
3155
软件介绍

易宝超级管家EZSuper 是一款由第三方为盛大易宝遥控器开发的万能驱动程序,此驱动程序不依懒于盛大易宝遥控原有的任何一种驱动程序,可以完全独立使用。盛大易宝的用户使用此驱动程序后,可根据自己使用的软件任意设置多组遥控按键配置,使用过程中EZSuper在后台实时检测用户正在使用的软件并自动调用合适的按键配置,从而让易宝遥控器无声无色地支持绝大部分软件,成为真证的电脑万能遥控器。

软件观察

1、此软件分为Trail试用版和Full完全版两种,其中试用版无法保存设置,完全版通过遥控器上的绿色KEY键获取遥控器机身码,使用key文件进行验证。
2、试用版和完全版功能除了不能保存设置外功能完全一致。
3、验证成功后会在任务栏弹出气泡图标。

破解过程

1、用peid 0.94查询,发现并没有加壳,这对在下这种第二次破解软件的新手来说的确是非常大的帮助。

2、直接运行Full版本发现,启动时需要加载key文件。由于通过试用版在下发现,它的验证是需要获取遥控器的机身码的,所以即使直接跳过应该也无济于事。所以我开始尝试构造KEY。

key文件选择时提示key文件是一个dat文件,而且鉴于大多数软件为了编写方便,这种文件一般都实际上为文本文件,于是新建一txt文件,添加如下内容

    123456

运行,导入这个key文件,弹出List index out of bounds (1),于是猜测key文件包含多行,于是添加内容

    234567
    345678
    456789

再次运行发现出现如下图有意思的内容


于是,可以发现,key文件的第一行为机身号,第二行为用户名,第三行为注册时间。但是无论怎么构造key文件,依然会弹出List index out of bounds (n)的对话框,于是,在下就想到试用版中,这里是填写了信息的,去看看他的内容是什么。

3、用OllyICE打开EZSuper v2.2.1104.678.Trail,查找>所有参考文本字串,查找Unlimited,于是乎发现一些很有意思的内容:

    6mAyd9KizPOq2yCwZ7w
    B426ZvplwW74Gxkmf8U
    uExR13Jie9gvM8PNf7k
    rN3F6YQxuTn0rv6npAs
    gWaIwSUtOvFO8Lqk/4E
    PyMrtUhgIbvcv1/xl8E
    qdECjCgvbzxDhyKRIYM
    n3MQ6VYSQ/GXBMZrizU
    7EIe9WLnG/QvAKbup/c
    r0DP0NnQCka9binVf5w
    vkC1/pRxSfmQJLSjqb4
    9ZbzRunDvv7vQQF20qE
    jb9uEm7Kchx89YAhREM
    c/0/R88+uWRcpUG9pJo
    c6NZx7qkOoS6lM7l/mU
    cxiSHoe3e40JTnFaeyU
    5B1AUzirZMBXG/QSYV6QM3n64xFwUgSGkmv9U7a
    <Unlimited>
    2009-10-04
    001AC4D2
    EF93CC3E
    1C60C413
    0C70C412
    DCA0CC1F
    CCB0CC1E
    FC80CC1F
    EC90CC1E
    9CE0CC1B
    8CF0CC1A
    BCC0CC1B
    ACD0CC1A
    5C20C417
    4C30C416
    5B27C477
    7C00C417
    3549C493
    2C50C412
    5428C497
    3844C453
    DDA1CC1F
    CDB1CC1E
    DEA2CC3F
    CEB2CC3E
    5925C457
    4935C456
    7905C457
    6915C456
    8FF3CC3A
    1F63C433
    F884CC5F
    0A76C472
    2A56C472
    3A46C473
    DBA7CC7F
    99E5CC5B
    CBB7CC7E
    F272BD17
    F272BD14
    F272BD1E
    F272BD06
    F272BC16
    F272BF16
    F272BD56
    F272BD96
    B272BD16
    CD72BD16
    F232BD16
    F24DBD16

于是,尝试使用这些文本构造key文件,直到full版本不再报错,得到如下的key文件:

    970c6B232BD1660d69f782b56100e7cb2
    <Unlimited>
    2009-10-04
    001AC4D2
    EF93CC3E
    1C60C413
    0C70C412
    DCA0CC1F
    CCB0CC1E
    FC80CC1F
    EC90CC1E
    9CE0CC1B
    8CF0CC1A
    BCC0CC1B
    ACD0CC1A
    5C20C417
    4C30C416
    5B27C477
    7C00C417
    3549C493
    2C50C412
    5428C497
    3844C453
    DDA1CC1F
    CDB1CC1E
    DEA2CC3F
    CEB2CC3E
    5925C457
    4935C456
    7905C457
    6915C456
    8FF3CC3A
    1F63C433
    F884CC5F
    0A76C472
    2A56C472
    3A46C473
    DBA7CC7F
    99E5CC5B
    CBB7CC7E
    F272BD17
    F272BD14
    F272BD1E
    F272BD06
    F272BC16
    F272BF16
    F272BD56
    F272BD96
    B272BD16
    CD72BD16
    F232BD16
    F24DBD16
    5B1AUzirZMBXG/QSYV6QM3n64xFwUgSGkmv9U7a

然后在下发现,只要行数足够,内容可以任意变化。

4、构造完key后,使用OllyICE加载Full版本,进行动态调试,由于验证不成功后,任务栏的图标上,会弹出气泡提示,在网上查询后得知,这个功能是通过shell32.Shell_NotifyIcon的函数调用实现的。

使用OllyICE加载加载后,查找>当前模块中的名称 ,找到

    名称位于 EZSuper, 条目 471
    地址=00639338
    区段=.idata
    类型=输入
    名称=shell32.Shell_NotifyIconW

在这个地方下断

实际上,在这里下断后,会导致程序报错,回车进入,在具体的语句处:

    0058DD56  |.  E8 F9D6EBFF   call    <jmp.&shell32.Shell_NotifyIconW>

下断即可。

5、运行,并用遥控器按下绿色key后,断下程序,来到

    0058DD56  |.  E8 F9D6EBFF   call    <jmp.&shell32.Shell_NotifyIconW>
    0058DD5B  |.  EB 1F         jmp     short 0058DD7C
    0058DD5D  |>  8B83 84070000 mov     eax, dword ptr [ebx+784]
    0058DD63  |.  E8 D81EEBFF   call    0043FC40
    0058DD68  |.  8983 F0030000 mov     dword ptr [ebx+3F0], eax
    0058DD6E  |.  8D83 DC030000 lea     eax, dword ptr [ebx+3DC]
    0058DD74  |.  50            push    eax
    0058DD75  |.  6A 01         push    1
    0058DD77  |.  E8 D8D6EBFF   call    <jmp.&shell32.Shell_NotifyIconW>
    0058DD7C  |>  5B            pop     ebx
    0058DD7D  \.  C3            retn

很显然,这里已经开始显示提示了,等到提示真正弹出,F8跟踪回到到调用处(这里嵌套了好几次call,注意找到真正的起始地址)
    005A10E6  |.  E8 39CDFEFF   call    0058DE24

会发现这里是好大的一个块,这里尝试在这个调用上方下断

    005A0EDC  /.  55            push    ebp
    005A0F43  |> /8D4D E8       /lea     ecx, dword ptr [ebp-18]

这两个地方。然后再按一次绿色key,单步F8跟踪,然后在寄存器中看见一些很有意思的东西,我们key文件的内容都在这显示出来了,并且在过程中看见了一些计算中间量。

到这里,需要做的就很清楚了,如果需要内存注册机,可以发现最后的计算结果在这个call(005A1081  |.  E8 7259E6FF   call    004069F8)这里被传入寄存器,跟进这个call,看他做了点什么就好了。
毕竟这个软件是自己用为主,所以选择了爆破。发现在进入这个块之前,遥控器机身号就已经在ECX了,向上追踪代码:

    0059A3B9  |> \68 C4A75900   push    0059A7C4                         ;  UNICODE “970c”
    ………………..
    0059A433  |.  B8 DCA75900   mov     eax, 0059A7DC                    ;  UNICODE “%.2x%.2x%.2x%.2x%.2x”
    0059A438  |.  E8 7B39E7FF   call    0040DDB8
    0059A43D  |.  FF75 E8       push    dword ptr [ebp-18]
    0059A440  |.  68 14A85900   push    0059A814                         ;  UNICODE “0d69f782b56100e7cb2″
    0059A445  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
    0059A448  |.  05 8C000000   add     eax, 8C
    0059A44D  |.  BA 03000000   mov     edx, 3
    0059A452  |.  E8 95C0E6FF   call    004064EC

可见,头和尾都是固定的,而 “%.2x%.2x%.2x%.2x%.2x”就是获得机身码的参数,将其更改为key文件中的机身码,就会让他认为遥控器就是已注册的了。当然,爆破还有更好的方法,但是懒得去找关键跳了,并且似乎还得构造寄存器值,够用就好。。

破解总结

毕竟这是我第二次破解软件。。过程中也有很大的运气成分,让大家见笑了。。
这次破解,软件没有加壳、key文件不完整时也显示注册信息,还有试用版中包含了一个key的信息,加上在下的一点点人品,对这次破解予以了很大的帮助。

最后,破解仅仅为了学习,如果你喜欢这一款软件,请支持正版。

[公告]LV6级以上的看雪会员可以免费获得《2019安全开发者峰会》门票一张!!

上传的附件:
  • 0.png (10.90kb,183次下载)
  • 1.png (23.09kb,184次下载)
最新回复 (9)
riusksk 41 2010-2-5 22:55
2
0
恭喜LZ爆破成功
sjhk 2010-2-6 01:46
3
0
好长时间没来看雪了!!!

前段时间写程序!写得头晕晕的......终于写好了!

马上回到看雪瞧瞧........
Sync 2010-2-23 23:41
4
0
真巧,我认识你
javashr 2010-2-24 16:47
5
0
恭喜LZ爆破成功
祁门红茶 2010-2-24 17:09
6
0
恭喜注册码!!!
lppqq 2010-5-10 17:13
7
0
不错,希望能有楼主的QQ
raochao 2010-5-20 00:25
8
0
学习了  谢谢LZ
soho 2010-9-26 11:08
9
0
值得庆祝,不错!
wut 2010-10-15 09:15
10
0
楼主很不错!
游客
登录 | 注册 方可回帖
返回