首页
社区
课程
招聘
[原创]破解Adsl上网伴侣1.7
发表于: 2004-11-29 09:33 4492

[原创]破解Adsl上网伴侣1.7

2004-11-29 09:33
4492
Adsl上网伴侣1.7
【破解作者】 rainolt
【作者邮箱】 [email]rainolt@etang.com[/email]
【使用工具】 Peid0.92,OllyDBG1.10, Stripper 2.07
【破解平台】 Winxp
【软件名称】 Adsl上网伴侣1.7
【下载地址】 http://www2.pcdog.com/down4/adsl.exe
【软件简介】 它是一款自动化的ADSL上网拨号、记时、记费,记流量的软件。
    它可以使用指定的拨号软件或连接拨号上网。
    它能够自动检测在线和离线,自动记录上线和下线时间,自动统记每天和每月的在线时间和上网费用以及下载量和上传量。
    即时显示下载速度和上传速度。
    多种查看和统计方式供你选择,根据你的设置进行上网时间提醒及网络空闲提示。

【软件大小】 1.7M
【加壳方式】 ASProtect
【破解声明】 我是一只小小菜鸟,一点心得,与大家分享!
--------------------------------------------------------------------------------
【破解内容】

破解1.7版之前我参照了破解1.6版的破文,文中有不足之处请高手指点!
一、脱壳:
用Peid0.92侦测为ASProtect的壳,用Stripper2.07脱壳成功!
二、破解
运行adsltime.exe后,点退出,出现限期30天的警告!
将时间调后一年,运行,又出现限期30天的警告!(如下图)

该软件未注册没有功能限制,所以只要去除限期的提示就行!
用OD载入,查找ultra资源,找到“第30天,如想继续使用,请注册!”,双击找到相应的入口

0040E0B0   /$  64:A1 00000000    mov eax,dword ptr fs:[0]      <=========;入口
0040E0B6   |.  6A FF             push -1
0040E0B8   |.  68 35E64100       push ADSLTime.0041E635
0040E0BD   |.  50                push eax
.
.中间省略
.
0040E1A6   |.  E8 C1DB0000       call <jmp.&mfc71.#572>
0040E1AB   |.  C707 00244200     mov dword ptr ds:[edi],ADSLTime.0042>
0040E1B1   |.  68 28274200       push ADSLTime.00422728        <====== ;  30天到期
0040E1B6   |.  8D8E 4C0B0000     lea ecx,dword ptr ds:[esi+B4C]
0040E1BC   |.  C64424 18 09      mov byte ptr ss:[esp+18],9
0040E1C1   |.  FF15 D0F14100     call dword ptr ds:[<&mfc71.#304>]    ;  mfc71.7C16A59C
0040E1C7   |.  8B4C24 0C         mov ecx,dword ptr ss:[esp+C]
0040E1CB   |.  8BC6              mov eax,esi
0040E1CD   |.  64:890D 00000000  mov dword ptr fs:[0],ecx
0040E1D4   |.  5F                pop edi
0040E1D5   |.  5E                pop esi
0040E1D6   |.  5D                pop ebp
0040E1D7   |.  83C4 0C           add esp,0C
0040E1DA   \.  C2 0800           retn 8
找到“Local Calls from 004021BE, 00403330”,第一个是运行程序时检验注册与过期;第二个是退出时检验注册与过期。
先看第一个
00402177    .  8BCE              mov ecx,esi
00402179    .  C645 74 04        mov byte ptr ss:[ebp+74],4
0040217D    .  E8 6E0E0100       call ADSLTime.00412FF0      <======== 检验注册信息函数
00402182    .  84C0              test al,al
00402184       75 5D             jnz short ADSLTime.004021E3
00402186    .  E8 65020000       call ADSLTime.004023F0      
0040218B    .  84C0              test al,al
0040218D    .  75 16             jnz short ADSLTime.004021A5 <========;比较后,让它跳过过期检验,改成jmp
0040218F    .  6A 30             push 30                              ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
00402191    .  68 78FF4100       push ADSLTime.0041FF78               ; |Title = "ADSL上网伴侣"
00402196    .  68 58FF4100       push ADSLTime.0041FF58               ; |Text = "数据文件被破坏,请重新安装!"
0040219B    .  6A 00             push 0                               ; |hOwner = NULL
0040219D    .  FF15 90F74100     call dword ptr ds:[<&user32.MessageB>; \MessageBoxA
004021A3    .  EB 74             jmp short ADSLTime.00402219
004021A5    >  7C 03             jl short ADSLTime.004021AA
004021A7    >  EB 03             jmp short ADSLTime.004021AC
004021A9       E9                db E9
004021AA    >^ 74 FB             je short ADSLTime.004021A7
004021AC    >  E8 FF110100       call ADSLTime.004133B0
004021B1    .  84C0              test al,al
004021B3    .  74 2E             je short ADSLTime.004021E3           ;  关键跳转到过期提示
再看第二个
00403317   |.  8D4D EC           lea ecx,dword ptr ss:[ebp-14]
0040331A   |.  C645 FC 02        mov byte ptr ss:[ebp-4],2
0040331E   |.  E8 CDFC0000       call ADSLTime.00412FF0       <=======;检验注册信息函数
00403323   |.  84C0              test al,al
00403325       75 2C             jnz short ADSLTime.00403353          ;  让它跳过过期检验,改成jmp
00403327   |.  6A 00             push 0
00403329   |.  8D95 98F4FFFF     lea edx,dword ptr ss:[ebp-B68]
0040332F   |.  52                push edx
00403330   |.  E8 7BAD0000       call ADSLTime.0040E0B0
改完后,运行(如下图),

还有“未注册”的字样,认真看一下
有没有发现两个过程都有一个call ADSLTime.00412FF0检验注册信息函数,那么肯定还有一个是用来显示“未注册”的,
跟进call ADSLTime.00412FF0,点击入口处看到Local Calls from 0040217D, 00402A97, 0040331E
发现除了0040217D, 0040331E这两处以外用来显示过期以外,还有一个00402A97, 用来干什么呢?用来显示“未注册”呀!
点击右键前往00402A97那里到底有什么东东(如下图)


很明显啦!不让它显示不就行了,把
00402A97   |.  E8 54050100       call ADSLTime.00412FF0               ;  检验注册与未注册
00402A9C   |.  84C0              test al,al
00402A9E       74 1C             je short ADSLTime.00402ABC           ;  显示未注册

改成
00402A97   |.  E8 54050100       call ADSLTime.00412FF0               ;  检验注册与未注册
00402A9C   |.  84C0              test al,al
00402A9E       90                nop                                  ;  不操作,不让它显示未注册
00402A9F       90                nop
运行程序,(如下图)

ok了!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不知道这样算不算完全破解
2004-11-29 10:32
0
游客
登录 | 注册 方可回帖
返回
//