網路資源、書韱、教學、學習、

星期六, 3月 10, 2012

某软件网络验证破解过程

首先OllyDbg加载程序。
0041865A > 6A 74 push 0x74
0041865C 68 58C24E00 push 004EC258
00418661 E8 F6010000 call 0041885C
00418666 33DB xor ebx, ebx
00418668 895D E0 mov dword ptr [ebp-0x20], ebx
0041866B 53 push ebx
干干净净,奇强。
打开程序,选择Vip。提示如下
---------引用--------------
网际速递友好提示
免费用户不能选择VIP 专用服务
器组!欢迎您充值成为我们的付
费VIP用户,享受尊贵的VIP服务
----------------------------
于是用插件寻找Ascll码,杀入。找到:
0040FC80 /7E 11 jle short 0040FC93
0040FC82 |68 18A04E00 push 004EA018 ; 网际速递友好提示 免费用户不能选择vip 专用服务 器组!欢迎您充值成为我们的付 费vip用户,享受尊贵的vip服务
0040FC87 |8BCD mov ecx, ebp
0040FC89 |E8 0252FFFF call 00404E90
0040FC8E |E9 47100000 jmp 00410CDA

Jle直接改为jmp.这句的意思我猜是判断下拉列表框的现行选中项师父大于9(0~9为免费服务器,其中0为自动选择。)
另外发现了这句:
Ultra String Reference, item 2082
Address=004117CB
Disassembly=push 004EA0A0
Text String=测试用户您好定时断线即将启动 游戏中请及时退出以免游戏断线 您可以30秒之后再次拨号加速, 充值vip即可享受不间断加速服务

同样也进入:
004117C5 /0F85 8A000000 jnz 00411855
004117CB |68 A0A04E00 push 004EA0A0 ; 测试用户您好定时断线即将启动 游戏中请及时退出以免游戏断线 您可以30秒之后再次拨号加速, 充值vip即可享受不间断加速服务
004117D0 |8D4D CC lea ecx, dword ptr [ebp-0x34]
004117D3 |C687 9C110000 0>mov byte ptr [edi+0x119C], 0x1
004117DA |FF15 1C224E00 call dword ptr [<&MFC71.#304>] ; MFC71.#304

Jmp掉。

0040F3AF /74 0C je short 0040F3BD
0040F3B1 |68 AC9A4E00 push 004E9AAC ; 欢迎免费体验网际速递 我们真诚期待您对我们的认可 !
0040F3B6 |8BCE mov ecx, esi
0040F3B8 |E8 D35AFFFF call 00404E90
0040F3BD 8B96 C8110000 mov edx, dword ptr [esi+0x11C8]

Jmp掉。

基本就把可以静态搞掉的繁琐问题和谐,于是保存全部修改,方便后面调试。
加载我们刚才保存的文件,F9。进程结束。直接执行文件。
拿出伟大的消息入口查找器,将图标拖到拨号按钮上。查找(注意不能处于调试状态。)
获得了拨号的函数入口地址:0x0040FAE0
OllyDbg加载,跑起程序。进程终止,Ctrl+F2重新加载,F9成功跑起。
Ctrl+G,粘贴0x0040FAE0

0040FAE0 6A FF push -0x1

F2下断。切回程序,按下拨号。OD成功拦下。
现在就该咱F8上场~
F2取消断点,跑吧~数据窗口获得:
0012F63C 003A97F8 ASCII "20091024"
0012F640 00000008
0012F644 00000000
0012F648 00000011
0012F64C 0012F878
0012F650 003A6DA8 ASCII "C:WINDOWSsystem32"
0012F654 003A9820 ASCII "C:WINDOWS"
0012F658 00000012
0012F65C 7C930202 RETURN to ntdll.7C930202 from ntdll.7C92E8E6
0012F660 7C93017B RETURN to ntdll.7C93017B from ntdll.7C9301D1
0012F664 7C9301BB RETURN to ntdll.7C9301BB from ntdll.7C92E8E6
0012F668 003A6548 ASCII "test"
0012F66C 7C220078 MFC71.7C220078
0012F670 003A97F8 ASCII "20091024"
0012F674 003A97F8 ASCII "20091024"
0012F678 003AA9E0 ASCII "php?name=general_products_pay">http://www.exunchi.com/mypage/index.php?name=general_products_pay"
0012F67C 003A6DE8 ASCII "test"
0012F680 003A6420 ASCII "C:WINDOWSsystem32 etapis32.dll"
0012F684 003AA9C0
0012F688 00000000
0012F68C 003A6E08 ASCII "091024"
0012F690 00000000

20091024正是今天的日期!
0041005E 85FF test edi, edi
00410060 C68424 5C010000>mov byte ptr [esp+0x15C], 0x12
00410068 BE 01000000 mov esi, 0x1
0041006D 0F87 2A010000 ja 0041019D
00410073 72 0A jb short 0041007F
00410075 397424 2C cmp dword ptr [esp+0x2C], esi
00410079 0F83 1E010000 jnb 0041019D ‘这句飞了,很可疑喔。
于是先Nop掉。下面一个同理Nop。
结果跑到004100CF FF15 70254E00 call dword ptr [<&MFC71.#578>] ; MFC71.#578
004100D5 8D8C24 88000000 lea ecx, dword ptr [esp+0x88]
004100DC E8 DD7E0000 call
004100E1 68 E0374E00 push 004E37E0
004100E6 8D4424 4C lea &



文章來自 http://www.2cto.com/Article/201002/44924.html

沒有留言:

張貼留言