创联网络宽带上网助手的脱壳
在学校上网,用的是创联网络的宽带上网助手(版本是2.3410),好像很多学校都用它来上网,但是它的限制非常多,不能用NAT,不能用代理,不能有多IP,不能有………一大堆的限制。于是,我决定就拿它开刀试试。
一.工具准备:
1.ollyice,貌似地球人都知道呃;
2.peid,不说了
3. ASPR脱壳脚本
4. ImportREC
5.HideToolz,隐藏进程用
二.勘壳
知己知彼,才能百战不殆。用PEid看看它用了什么壳先,发现是aspr的,在网上搜了下,发现没有好用点的自动脱壳机,但找到了一个ASPR脱壳脚本(没错就是传说中的Volx大侠写的),那好,现在就开始吧。
三.脱壳
现在就OD载入,提示有压缩代码,点确定继续。然后,先运行Hide Toolz,选择OD进程,右键hide 隐藏OD进程,为什么呢,因为如果不隐藏的话有可能会导致脚本脱壳失败,为了确保成功,最好还是隐藏的好哈~~~,在接下来就是用脚本了,点右键-运行脚本-选Aspr2.XX_unpacker_v1.0SC.osc。屏幕一阵狂闪,最后提示有偷窃代码(图3)。点确定,接下来干什么呢,当然是记下OEP啦,点击 查看-记录,记下IAT的地址和大小和OEP的地址(是相对地址哦)。看看目录下是不是多了一个文件,果然,多了一个de_Dot1xClient程序,但是双击却提示”应用程序正常初始化失败”。
下面就开始第2步,修复输入表。
打开刚刚出错的那个文件,打开ImportREC,选择文件进程de_Dot1xClient.exe,在OEP中输入刚刚OD记录中的得到的0000DAB2,这时候不要点IAT AutoSearch,因为在刚刚OD提示有偷窃代码,所以可能用自动也未必找的到IAT,在RVA中输入OD中的IAT相对地址:015000,Size中输入2F4,再点击GET IMPORTS获得输入表。很快就出来结果了,点击show Invalid看看有没有值为NO的,呵呵,很好,全是YES。最后点击Fix Dump,选择刚刚的那个文件,确定。
好了,现在运行de_Dot1xClient_.exe试试,OK,正常运行,在用PEID看看,发现一切正常,也没有提示有壳了,嘿嘿,到这里说明前面的脱壳步骤已经完成了。
四.突破限制
现在用OD打开,程序停在40DAB2,然后就是参看字符串参考,居然没有相关的信息……看来只能下中断了,因为在客户端发现反代理或多IP时,都会有相应的对话框提示,所以,最先想到了用最简单的对话框断点,然后再开代理或连无线什么的,出现提示,再看能不能断下来。在命令行那输入bpx MessageBoxA,然后当然就是运行了,按下F9,发现OD停住了,但却不是在我们下的断点那里停的,这是因为我们脱壳不完全造成的,但现在我们直接忽略它,按shift+F9,忽略异常运行,按2次后就弹出了界面,点击连接,继续按下2次shirt+f9直到认证成功,然后程序马上被停了下来。很奇怪吧,平时认证成功后,就直接弹出一个网页,就没有任何提示了,但现在却被MessageBoxA断点断了下了,这是为什么呢,让我们把所有断点禁止掉,按CTRL+F2重新开始,几次shirt+F9后认证成功后,哈哈,发现了吧,它提示软件检测失败,请核实你是否更改客户端,这下倒省了不少事情哈。现在再次激活全部断点,重新再来,很快程序被断在刚刚的那个提示代理对话框那。在向上看,看到了LoadStringA这个API调用把那句出错提示装入到了MessageBox,。结果就显示了上面的提示了。继续向前,看到如下代码,
还有
就是运行了这些代码,才导致了我们无法用代理,无法用NAT,无法........
最后来到这里:
00406EEE CC int3
00406EEF CC int3
00406EF0 /$ 8B4424 0C mov eax, dword ptr [esp+C]
00406EF4 |. 83EC 08 sub esp, 8
00406EF7 |. 83F8 67 cmp eax, 67
看来我们现在是断在一个函数里面,看看是哪里调用的这个函数呢,在406ef0上左键,OD提示:CALL来至4080b0。我们跟过去看看,“右键”-“转到CALL来至4080b0”,来到这里:
004080B8 . E8 33EEFFFF call 00406EF0
004080BD . 83C4 10 add esp, 10
004080C0 . 5F pop edi
004080C1 . 5E pop esi
004080C2 . 5D pop ebp
004080C3 . B8 01000000 mov eax, 1
004080C8 . 5B pop ebx
004080C9 . 81C4 58020000 add esp, 258
004080CF . C2 1000 retn 10
pop,add esp,xxx,retn,还是一个函数,再向前看看,来到这句
0040809B mov ecx, dword ptr [esp+278] ; Case 590 of switch 00407378
OD提示:跳转来自 00407DC5,继续跟,“右键”-“转到跳转来自00407DC5”,来到这里
00407DB7 . C2 1000 retn 10
00407DBA > 3D 90050000 cmp eax, 590
00407DBF . 0F87 0D030000 ja 004080D2
00407DC5 . 0F84 D0020000 je 0040809B
这就是传说中的那个跳转吗?分析下,先比较eax和590H的大小,大于则跳转,若等于,则跳到出错的那个CALL调用,貌似猜测成立。实践是检验真理的唯一标准,让我们试试看,记下地址407dc5,CTRL+F2重新开始,出现主界面后,CTRL+B,右键-禁用所有断点,然后,CTRL+G输入刚刚的那个记录的地址00407DC5,在je 0040809B这行“右键”-“二进制”-“用NOP填充”,这样一来程序流就没法进入那个出错的CALL调用了。试试看,点击连接,按下几次SHIRT+F9后,程序正常连接,连上无线,看看IP,果然成功了~~~
主要的限制解决了,但相信大家对认证成功后的弹出的那个网页很讨厌吧,既然都到这一步了,那就来把这也去掉了吧~~~弹出网页,会用什么API呢,弹出一个网页其实和运行一个程序是一样的道理,所以应该有可能是WinExec或ShellExecute,输入bpx WinExec 看看,没有,囧~~,万分紧张的输入bpx ShellExecute,按下ALT+B看看,呵呵,找到了4个断点,有2个是EXPLORER.EXE的(一开始我自己调试的时候,没仔细看就直接下了断点开始埋头跟踪了说,正郁闷为什么没反应才发现跟了半天是EXPLORER而不是iexplore,汗啊)。最后的那个就是说要找的iexplore调用断点啦~~
接下来怎么办相信不用我说也明白了吧,向上找,看有跳转跳过它没,果然找到了一个
0040C9BB |. C3 retn
0040C9BC |> 85F6 test esi, esi
0040C9BE |. 0F8E 98000000 jle 0040CA5C
0040C9C4 |. 81FE 00010000 cmp esi, 100
0040C9CA 0F8F 8C000000 jg 0040CA5C ;就是这个跳转
把jg改成jmp,在试试,果然,再也没有烦人的网页弹出了。
到现在所有的限制差不多都被处理了,没有烦人的网页弹出,可以用代理,可以边聊天边玩局域网游戏,世界终于自由了,呵呵。
五.
不知道大家有发现没,在宽带上网助手的根目录下,有一个linkageclientconfig.ini文件,在这里有2个键LastUserName,Identify,难道这就是我们的卡号和密码?但是我们看Identify却不像是密码,应该是被加密了。反正都到这步了,再跟踪下看看是怎么回事也不错哈。打开OD,因为是对ini文件操作,下GetprivateProfileStringA断点。运行程序看看,断在00402b0a这里,在向后看看,在调用了2次API函数后,获得了那2个键值,继续向下几步来到这里:
00402B78 |> /8A08 /mov cl, byte ptr [eax]
00402B7A |. |40 |inc eax
00402B7B |. |84C9 |test cl, cl
00402B7D |.^/75 F9 /jnz short 00402B78 ;计算用户账号位数
00402B7F |. 8D8C24 D00000>lea ecx, dword ptr [esp+D0]
00402B86 |. 51 push ecx ;加密串
00402B87 |. 2BC6 sub eax, esi
00402B89|. 50 push eax ;用户账号位数
00402B8A |. 52 push edx ; 账号
00402B8B |. E8 70F7FFFF call 00402300 ;关键CALL
00402B90 |. 8B15 88B14100 mov edx, dword ptr [41B188]
00402B96 |. 83C4 0C add esp, 0C
00402B99 |. 8D8C24 D00000>lea ecx, dword ptr [esp+D0] ;已解密密码串
00402BA0 |. 81C2 AE000000 add edx, 0AE
跟进00402B8B那个CALL,继续向下几步,来到这里
继续跟入,向下几步,你就会看到这段代码:
0040A98C |. C74424 0C 012>mov dword ptr [esp+C], 67452301
0040A994 |. C74424 10 89A>mov dword ptr [esp+10], EFCDAB89
0040A99C |. C74424 14 FED>mov dword ptr [esp+14], 98BADCFE
0040A9A4 |. C74424 18 765>mov dword ptr [esp+18], 10325476
呵呵,对于67452301,EFCDAB89,98BADCFE,10325476这4串数字,相信看过MD5加密的都知道,这就是算法的初始化链接变量,由于MD5加密比较复杂,这里就不继续跟踪了,按CTRL+F9跳出这个CALL,继续。大家应该记得前面CALL 0040a970前有一个缓冲区指针压栈,没错账号的MD5加密结果就在这里放着。再后面的代码,很明显就是对密码进行解密了:
00402336 |. E8 35860000 call 0040A970 ;这里进行对账号的MD5加密,过程很复杂的,有兴趣的自己看去
0040233B |. 83C4 0C add esp, 0C
0040233E |. 33C9 xor ecx, ecx
00402340 |. 85FF test edi, edi
00402342 |. 7E 43 jle short 00402387
00402344 |. 53 push ebx
00402345 |> 8A044E /mov al, byte ptr [esi+ecx*2] ;这里开始解密;取加密密码的第一位
00402348 |. 3C 39 |cmp al, 39 ;与‘9’比较,
0040234A |. 0FBEC0 |movsx eax, al
0040234D |. 7F 05 |jg short 00402354 ;大于则把它减去0x57,小于则减去0x30
0040234F |. 83E8 30 |sub eax, 30
00402352 |. EB 03 |jmp short 00402357
00402354 |> 83E8 57 |sub eax, 57
00402357 |> 8A544E 01 |mov dl, byte ptr [esi+ecx*2+1] ;取加密密码的第二位
0040235B |. C0E0 04 |shl al, 4 ;第一位的结果左移4位
0040235E |. 80FA 39 |cmp dl, 39
00402361 |. 88440C 1C |mov byte ptr [esp+ecx+1C], al
00402365 |. 0FBED2 |movsx edx, dl
00402368 |. 7F 05 |jg short 0040236F ;大于则把它减去0x57,小于则减去0x30
0040236A |. 83EA 30 |sub edx, 30
0040236D |. EB 03 |jmp short 00402372
0040236F |> 83EA 57 |sub edx, 57
00402372 |> 8BD9 |mov ebx, ecx
00402374 |. 83E3 0F |and ebx, 0F
00402377 |. 0AC2 |or al, dl ;第一位与第二位新结果做或运算
00402379 |. 32441C 0C |xor al, byte ptr [esp+ebx+C] ;把刚刚得到的结果与用户名的MD5加密结果的最后1个字节做异或
0040237D |. 88440C 1C |mov byte ptr [esp+ecx+1C], al ;保存结果~~
00402381 |. 41 |inc ecx
00402382 |. 3BCF |cmp ecx, edi
00402384 |.^ 7C BF /jl short 00402345
相信大家都看出来了,解密方法用C描述就是:
code[]为加密的密码串,resultOfMd5[]为账号的MD5加密结果
for(i=0;i<=15;i+=2){
if(code[i]>'9') //第i位
a=(code[i]-(unsigned char)0x57)<<4;
else
a=(code[i]-(unsigned char)0x30)<<4;
if(code[i+1]>'9') //第i+1位
b=(code[i+1]-(unsigned char)0x57);
else
b=(code[i+1]-(unsigned char)0x30);
a|=b;
a^=resultOfMd5[i/2];
key[i/2]=a;
}//解密过程
再下面我们就可以写一个密码读取器之类的,直接读取INI文件下的LastUserName,Identify键值,把UserName进行MD5加密,再与加密密码做上面的运算的出密码明文了。这样就可以直接读出账号和密码了,而不是找以前的那张上网卡了。
创联网络宽带上网助手的脱壳相关推荐
- 无线路由器和计算机怎么连接网络连接,华为无线路由器怎么连接宽带上网
一台新购买或者恢复出厂设置后的华为无线路由器,要实现连接宽带上网,需要经过以下设置步骤,本文学习啦小编主要介绍了华为无线路由器连接宽带上网的方法! 华为无线路由器连接宽带上网的方法 1.打开电脑中的浏 ...
- 宽带上网web认证计费系统 是什么
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 小海豚上网助手 下载
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 小海豚上网助手 v1.2 下载
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 宽带上网加速器 免费
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 怎样选择宽带上网产品--解读上海电信政企宽带新套餐
企业怎样选择宽带上网产品--解读中国电信上海公司的政企宽带新套餐<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:o ...
- 蓝牙共享PC宽带上网
alvinaline 发表于 2009-4-9 13:50 蓝牙共享PC宽带上网,期待高手再改进 我的P660没有WIFI,又想试一下手机用宽带的感觉,所以上网查了,也试了很久,初步有了效果.WM6和 ...
- 怎么查询上网帐号和上网口令_宽带上网账号和密码忘记了该怎么查询
宽带上网账号和密码是专门用于宽带猫或路由器进行拨号上网的:当你的家庭办理了宽带网络之后,运营商都会提供一个上网账号和上网密码给您,只有在宽带猫里面配置好这个上网账号并输入密码之后,你的网络才能正常上网 ...
- 计算机怎么联网络,电脑怎么连接网络
现在很多人都使用路由器来上网,已经不需要手动拨号连接了.但也有一些朋友还没使用路由器,或路由器临时不工作,需要拨号连接的,现在,汇学小编给大家就"电脑怎么连接网络"说说解决方法. ...
- win10系统如何连接宽带连接服务器,Win10系统如何连接宽带上网?,爱纯净官网
Win10系统如何连接宽带上网?有不少朋友开通了宽带上网后,拿到了宽带的账号密码却不知道如何使用宽带拨号设置,现在使用Win10系统的用户越来越多了,但是有些朋友不知道Win10怎么连接宽带上网,其实 ...
最新文章
- CLASS ALV Event
- 同步工具之Semaphore信号量
- python 数据可视化利器(bokeh、pyecharts)
- 用批处理命令加WinRAR实现自动备份文件数据
- 电脑合上盖子不锁屏_笔记本电脑合上盖子或台式机离开后黑屏是“休眠”还是“睡眠”...
- jconsole使用
- Nodejs http request 报错 “ETIMEDOUT“,“ECONNRESET“ , “ENOTFOUND“,“ECONNREFUSED”,“EHOSTUNREACH“
- 联想计算机不能进入系统桌面,联想电脑无法重装系统-联想电脑怎么重装系统我的电脑启动后到不了桌面,最后屏幕上没有任何 爱问知识人...
- Android studio最新版2021安装教程超详细。
- python伪装ip地址_python伪造ip
- 纯CSS3炫酷3D星空动画特效
- 【四】狂神Java笔记-面向对象
- 德国计算机课程匹配度,匹配度对于德国留学有多重要
- 微软IE网络霸业十年回眸
- 最全LaTeX 数学公式、字母符号、上下标、列表矩阵、公式注释、分数二进制数、分割字符、逻辑集合论、否定符号等
- 电路原理图中的各种地(数字地、模拟地、信号地、直流地、交流地、屏蔽地)的区别
- 【Proteus仿真】【51单片机】简易信号发生器设计
- 深度图像转点云数据(激光雷达数据)
- kaldi教程_Kaldi语音识别快速入门
- DTCMS4.0建站流程
热门文章
- dog log 算子_log算子和dog算子
- 聚类之详解FCM算法原理及应用
- 【Delphi】如何在三轴加速器的频谱分析中使用FFT(快速傅里叶变换)算法
- 清北复交人浙南 计算机交叉学科项目大盘点
- 软件项目设计文档分类
- 微型计算机 介绍 gtx980m,卡皇GTX980M的横空出世_笔记本评测-中关村在线
- TM7705、TM7707使用
- 惠普暗影2 pro ubuntu16.04安装nvidia显卡驱动
- 串标是什么意思?用同一台电脑制作或上传投标书,会被认定为串标吗?
- 无线网络密码破解方法大全(附破解软件下载)