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了!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课