在学校上网,用的是创联网络的宽带上网助手(版本是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. 无线路由器和计算机怎么连接网络连接,华为无线路由器怎么连接宽带上网

    一台新购买或者恢复出厂设置后的华为无线路由器,要实现连接宽带上网,需要经过以下设置步骤,本文学习啦小编主要介绍了华为无线路由器连接宽带上网的方法! 华为无线路由器连接宽带上网的方法 1.打开电脑中的浏 ...

  2. 宽带上网web认证计费系统 是什么

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  3. 小海豚上网助手 下载

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  4. 小海豚上网助手 v1.2 下载

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  5. 宽带上网加速器 免费

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  6. 怎样选择宽带上网产品--解读上海电信政企宽带新套餐

    企业怎样选择宽带上网产品--解读中国电信上海公司的政企宽带新套餐<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:o ...

  7. 蓝牙共享PC宽带上网

    alvinaline 发表于 2009-4-9 13:50 蓝牙共享PC宽带上网,期待高手再改进 我的P660没有WIFI,又想试一下手机用宽带的感觉,所以上网查了,也试了很久,初步有了效果.WM6和 ...

  8. 怎么查询上网帐号和上网口令_宽带上网账号和密码忘记了该怎么查询

    宽带上网账号和密码是专门用于宽带猫或路由器进行拨号上网的:当你的家庭办理了宽带网络之后,运营商都会提供一个上网账号和上网密码给您,只有在宽带猫里面配置好这个上网账号并输入密码之后,你的网络才能正常上网 ...

  9. 计算机怎么联网络,电脑怎么连接网络

    现在很多人都使用路由器来上网,已经不需要手动拨号连接了.但也有一些朋友还没使用路由器,或路由器临时不工作,需要拨号连接的,现在,汇学小编给大家就"电脑怎么连接网络"说说解决方法. ...

  10. win10系统如何连接宽带连接服务器,Win10系统如何连接宽带上网?,爱纯净官网

    Win10系统如何连接宽带上网?有不少朋友开通了宽带上网后,拿到了宽带的账号密码却不知道如何使用宽带拨号设置,现在使用Win10系统的用户越来越多了,但是有些朋友不知道Win10怎么连接宽带上网,其实 ...

最新文章

  1. CLASS ALV Event
  2. 同步工具之Semaphore信号量
  3. python 数据可视化利器(bokeh、pyecharts)
  4. 用批处理命令加WinRAR实现自动备份文件数据
  5. 电脑合上盖子不锁屏_笔记本电脑合上盖子或台式机离开后黑屏是“休眠”还是“睡眠”...
  6. jconsole使用
  7. Nodejs http request 报错 “ETIMEDOUT“,“ECONNRESET“ , “ENOTFOUND“,“ECONNREFUSED”,“EHOSTUNREACH“
  8. 联想计算机不能进入系统桌面,联想电脑无法重装系统-联想电脑怎么重装系统我的电脑启动后到不了桌面,最后屏幕上没有任何 爱问知识人...
  9. Android studio最新版2021安装教程超详细。
  10. python伪装ip地址_python伪造ip
  11. 纯CSS3炫酷3D星空动画特效
  12. 【四】狂神Java笔记-面向对象
  13. 德国计算机课程匹配度,匹配度对于德国留学有多重要
  14. 微软IE网络霸业十年回眸
  15. 最全LaTeX 数学公式、字母符号、上下标、列表矩阵、公式注释、分数二进制数、分割字符、逻辑集合论、否定符号等
  16. 电路原理图中的各种地(数字地、模拟地、信号地、直流地、交流地、屏蔽地)的区别
  17. 【Proteus仿真】【51单片机】简易信号发生器设计
  18. 深度图像转点云数据(激光雷达数据)
  19. kaldi教程_Kaldi语音识别快速入门
  20. DTCMS4.0建站流程

热门文章

  1. dog log 算子_log算子和dog算子
  2. 聚类之详解FCM算法原理及应用
  3. 【Delphi】如何在三轴加速器的频谱分析中使用FFT(快速傅里叶变换)算法
  4. 清北复交人浙南 计算机交叉学科项目大盘点
  5. 软件项目设计文档分类
  6. 微型计算机 介绍 gtx980m,卡皇GTX980M的横空出世_笔记本评测-中关村在线
  7. TM7705、TM7707使用
  8. 惠普暗影2 pro ubuntu16.04安装nvidia显卡驱动
  9. 串标是什么意思?用同一台电脑制作或上传投标书,会被认定为串标吗?
  10. 无线网络密码破解方法大全(附破解软件下载)