|
|
|
|
|
EZSUPER V2 盛大易宝管家 ,已经破解一半
这里是转自 足兆叉虫的垃圾桶 的思路与过程 EZSuper v2.2.1104.677.Full 爆破分析 软件介绍 易宝超级管家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文件中的机身码,就会让他认为遥控器就是已注册的了。当然,爆破还有更好的方法,但是懒得去找关键跳了,并且似乎还得构造寄存器值,够用就好。。 |
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值