在线情况
楼主
  • 头像
  • SСㄩМ
  • 级别
  • 门派
  • 声望+29
  • 财富10719
  • 银两213917
  • 经验123127
  • 文章3197
  • 注册2004-06-19
破解OICQ的密码算法(适合于初学者)
[COLOR=blue]此文章和OICQ本身没有什么联系,我只是想讲一下程序破解的原理和方法,我在这里会尽量用易懂的语言来描述,如果你是一个初学者,那么,此文就是为你而写的。

首先,在OICQ目录下,每个使用者号码下有一个叫matrix.cnt的文件,此文件的长度是20字节,它的内容就是此号码的原密码经过加密后对应的密文。要证明这一点非常容易,只要稍有一点电脑能力的人都可以证明,所以这里我就不费口舌了。在正式开始前,请用二进制编辑器打开此文件,熟悉一下内容。
启动OICQ,出现OICQ用户登录画面,选择你自己的号码,然后输入一个错误的密码,此时按CTRL+D进入SOFTICE画面,设置断点。我们事先应该都知道OICQ检查密码是否正确的工作原理,即:先用GetWindowText()来取得密码框中的密码字符串,将此字符串用其内定的算法进行加密,得出加密后的密文,然后从磁盘中读取matrix.cnt,与用户输入的密码的加密结果进行比较,如果相同,则用户输入的密码为正确密码。(或者先读文件,后读取密码框中的值)跟据这个原理,这们应该把断点设在readfile上,即输入:bpx readfile。返回程序界面,点击“登录”,出现SOFTICE的画面,指针停在KERNEL32!READFILE上。按一下F12跳过此函数,将进入OICQ的领空。
我们现在要做的就是特别注意转折语句,就是JZ,JNZ,JMP等第一个字符是J的语句。因为这们己经假设,程序中必定存在一行转折语句,当用户输入的是正解密码时,它跳转(或不跳转),而当用户输入错误密码时,它不跳转(或跳转)。小心地按F10单步执行代码,在出现转折语句处设下一断点(只是做一个记号),并且记录它们的跳转情况(榉岣徽咧滥睦镉斜匾露系愣睦锩挥斜匾钡匠绦虺鱿置苈氪砦蟮亩曰翱蛭埂?br> 这时候你可能己经花去了1分钟的时间。好的,现在输入正确的密码作为比较。同样单步地执行代码,你将看到上次你在跳转语句上作的记号。比较两次的跳转是否相同。
你将看到,当程序运行到这里时,前后两次的跳转方向不同:

.
00441C1B call 0046c256
00441C20 cmp eax, ebx
00441C22 jz 00441C28----->就是这里!
00441C24 mov esi, edi
.

分析一下这几个代码,它首先调用函数0046C256,然后比较EAX与EBX的值,如果EAX与EBX的值相同,就跳转。我们重新执行程序,发现当输入正确密码时,EAX=1,当输入错误密码时,EAX=0,而EBX总是0。所以,函数0046C256是一个可疑的函数!
按F8进入函数0046C256,我们要看看它做了什么工作。

:0046C256 mov eax, 004CD33C
:0046C25B call 00486B88
:0046C260 sub esp, 00000010
:0046C263 push esi
:0046C264 push edi
:0046C265 mov esi, ecx
:0046C267 mov eax, dword ptr [ebp+08]
:0046C26A and dword ptr [ebp-04], 00000000
:0046C26E push [eax-08]
:0046C271 push eax
:0046C272 lea eax, dword ptr [ebp-1C]
:0046C275 push eax
:0046C276 call 00456718
:0046C27B add esp, 0000000C
:0046C27E push 00000001
:0046C280 pop edi
:0046C281 cmp dword ptr [esi+04], edi
:0046C284 jbe 0046C29E
:0046C286 lea eax, dword ptr [ebp-1C]
:0046C289 push 00000010
:0046C28B push eax
:0046C28C lea eax, dword ptr [ebp-1C]
:0046C28F push eax
:0046C290 call 00456718
:0046C295 add esp, 0000000C
:0046C298 inc edi
:0046C299 cmp edi, dword ptr [esi+04]
:0046C29C jb 0046C286
:0046C29E int 03
:0046C29F mov byte ptr [eax], 6A
:0046C2A2 adc byte ptr [ebp+5056E445], cl
:0046C2A8 call 00487900
:0046C2AD mov esi, eax
:0046C2AF add esp, 0000000C
:0046C2B2 neg esi
:0046C2B4 sbb esi, esi
:0046C2B6 or dword ptr [ebp-04], FFFFFFFF
:0046C2BA lea ecx, dword ptr [ebp+08]
:0046C2BD inc esi
:0046C2BE call 004A0665
:0046C2C3 int 03
:0046C2C4 dec ebp
:0046C2C5 hlt
:0046C2C6 mov eax, esi
:0046C2C8 pop edi
:0046C2C9 pop esi
:0046C2CA mov dword ptr fs:[00000000], ecx
:0046C2D1 leave
:0046C2D2 ret 0004
.

按F10单步执行。我们发现在这个函数中有一个非常有意思的地方:

:0046C286 lea eax, dword ptr [ebp-1C]
:0046C289 push 00000010
:0046C28B push eax
:0046C28C lea eax, dword ptr [ebp-1C]
:0046C28F push eax
:0046C290 call 00456718
:0046C295 add esp, 0000000C
:0046C298 inc edi
:0046C299 cmp edi, dword ptr [esi+04]
:0046C29C jb 0046C286

程序反复地执行这些代码!
为了能看的更清楚些,我用C++语言来简述这几个语句:
for( long i=0 ; i< *(esi+04) ; i++)
{
eax=*(ebp-1c);
调用函数 00456718;
}

就是说,函数00456718要被调用很多次,这个次数就是ESI+04的值,用D ESI+04命令来查看其值,天哪!这不是

[/COLOR]
[url=http://www.binok.com/bbs/plug-ins/ad/get.asp?get=578][IMG]http://www.binok.com/bbs/images/gg.gif[/IMG][/URL]            
在线情况
2
  • 头像
  • 我本无名
  • 级别
  • 门派
  • 财富6
  • 银两1118
  • 经验3441
  • 文章893
  • 注册2004-03-27
这是破的老版QQ的吧???
我本无名。
[img]http://www.binok.com/bbs/info/1.asp[/img]
在线情况
3
  • 头像
  • 离欲阿修罗
  • 级别
  • 门派
  • 声望+48
  • 财富102756
  • 银两1809175
  • 经验138295
  • 文章2275
  • 注册2004-06-26
初学用SOFTICE?
你强
[imga]../images/upload/2006/10/14/203457.jpg[/imga]
[imga]../images/upload/2006/10/14/203700.jpg[/imga]
第一张叫做“执着”  尽管一只鸽子也没有 但她还是一直在努力
第二张叫做“快乐”  仿佛 就要飞起来了  不是她的心已经飞起来了
在线情况
4
  • 头像
  • =ACE=
  • 级别
  • 门派
  • 财富2
  • 银两102
  • 经验22234
  • 文章1072
  • 注册2004-06-24
偶QQ密码忘记的时候,都是用密码保护找回的。不过好象这个方法比腾讯快一点。
[img]http://bbS.cga.com.cn/UploadFiles/86/2005-8-14/9271161/20058149274522925.jpg[/img]
[SHADOW=255,GREEN,2][/SHADOW]
在线情况
5
  • 头像
  • SСㄩМ
  • 级别
  • 门派
  • 声望+29
  • 财富10719
  • 银两213917
  • 经验123127
  • 文章3197
  • 注册2004-06-19
那是当然。。
这个方法快
[url=http://www.binok.com/bbs/plug-ins/ad/get.asp?get=578][IMG]http://www.binok.com/bbs/images/gg.gif[/IMG][/URL]            
在线情况
6
  • 头像
  • 老大
  • 级别
  • 门派
  • 财富-497
  • 银两1508
  • 经验5682
  • 文章773
  • 注册2004-06-17
嘎嘎
滿大街都是猴子惟有我是齊天大聖
在线情况
7
  • 头像
  • SСㄩМ
  • 级别
  • 门派
  • 声望+29
  • 财富10719
  • 银两213917
  • 经验123127
  • 文章3197
  • 注册2004-06-19
你变鸭子了
[url=http://www.binok.com/bbs/plug-ins/ad/get.asp?get=578][IMG]http://www.binok.com/bbs/images/gg.gif[/IMG][/URL]            
在线情况
8
  • 头像
  • 级别
    • 银两9133
    • 经验7648
    • 文章379
    • 注册2005-01-11
    呼呼`1~~气死我了`~你这人怎么这么坏阿/``这样是不好的行为你知道么?
    大学从我身上下来,提上裤子对我说:青春留下,你走。于是,我明白~不是我上了大学`而是大学上了我。
    在线情况
    9
    • 头像
    • 专业惹祸
    • 级别
      • 财富1
      • 银两449
      • 经验4838
      • 文章518
      • 注册2005-01-02
      看不懂啊……还不如去揣测受害人的心理比较容易
      随时打任何人的主意

      因为我是坏掉的一个  
      在线情况
      10
      • 头像
      • 鸭子国王
      • 级别
      • 门派
      • 财富11
      • 银两58
      • 经验12825
      • 文章1358
      • 注册2004-03-27
      败类什么时候帮我搞一下?
      [IMG]http://binok.com/BBS/a/file.asp?lid=2363&s=huiseguiji[/IMG]
      在线情况
      11
      • 头像
      • 级别
        • 银两35
        • 经验343
        • 文章34
        • 注册2005-02-04
        楼主大哥明天你去找个IQ 180以上的初学者看他能不能弄得懂,弄得懂以后我是初学者
        灰色轨迹感谢您的参与
        Powered by LeadBBS 9.2 .
        Page created in 0.1431 seconds with 3 queries.