×

黑科技破QQ密码

黑科技破QQ密码(黑科技破密码软件)

hacker hacker 发表于2022-05-31 21:12:28 浏览58 评论5

5人参与发表评论

本文导读目录:
1、qq密码是如何被破的?
2、如何破qq密码
3、有一个五六年前的QQ想找回来可是资料什么东西全忘记了,还有没有什么黑科技能把那密码找回来吗,求大佬
4、qq密码忘了,但是我想知道那个密码怎么弄
5、QQ密码加密原理???
6、QQ暴力软件真的能找QQ号码的密码吗?

qq密码是如何被破的?

有时候,很容易被破,是因为黑客,盗号密码之类的,也不用太在意,如果里面有很多Q币之类的,建议你隔个1.2个月换一次,尽量不要和你的生日之类的有关联哦。。。

如何破qq密码

互联网发展到今天,在中国应该算是非常普及了,随着智能手机的推出和普及,人们逐渐从PC端转向了移动互联网时代,同时随着各方面的对网络安全意识的普及,一般的骗术可能能被大众识破,但今天我要说的这种骗术虽然已经在互联网存在了很多年,但直到今天依然还会在很多网站中看到相关的广告,主要原因就是这种骗术肯定还是会有人上当的,如果没有利润的话,骗子肯定不会搭着广告费去行骗。看到标题各位就应该已经清楚了,今天要说的就是——盗取QQ业务。

早期这类业务广告会出现在一些黑客类门户网站或论坛,后期这类广告已不单单是一个广告位,而是会单独制作一个承接此类业务的网站,通过“盗取QQ业务”衍生出来的还有盗取电子邮箱密码、盗取游戏密码,作为一个从2008年开始接触网络安全技术的人,羽度非凡在这里还是简单揭秘一下真正盗取账号的方法吧,不过具体的步骤就不要问我了,我也不会回答,因为我的目的就是让大家防止上当受骗,而不是用这种方法去欺骗别人。

虽然目前这类盗取账号业务的广告在互联网中比较少了,但前两天在一个贴吧中,我看到还有人在发帖寻找可以盗取QQ密码的人,而往往容易上当的就是这类人了,通过人性销售我们知道,大多数人在购买产品的时候,90%的人在付款的一刹那是冲动不理智的,这就是销售中所说的冲动购买率。而在骗取钱财的时候,最重要的一步就是让受骗人支付,支付的前提就是要让受骗人冲动,而我前面说的这类主动发贴寻找这类业务人的人一般都是冲动的,因此他们更容易上当受骗。

进入今天的正题,先说说我所知道盗取QQ的三种常规方法。

1.钓鱼网站。首先我们要知道什么是钓鱼网站,简单说我们经常受到的一些电信诈骗短信:“恭喜你成为《XX去哪儿》的幸运观众,请登录我们的官方网站www.xxx.com”,当我们打开短信中提供的网站时,发现质量差一些的钓鱼网站会在网站中放上几张节目官方的图片,然后加一个提交相关信息的表格就可以了;质量高一些的钓鱼网站会完全把官方网站扒下来,单看网站界面根本分不出到底是官网还是钓鱼网站。

通过钓鱼网站盗取QQ的方式就是模仿一个腾讯官方的网站,例如QQ邮箱的登陆界面或者QQ空间的登陆界面。当我们在这些假冒的登录页面中输入你的QQ账号和密码时,跳转的结果又会分为两种,一种是不论你输入多少次正确的QQ账号和密码,网站始终提示你:“账号/密码错误,请重新输入”,其实你的QQ号和密码已经发送到了钓鱼网站作者事先设置好的邮箱中了;另一种情况是当你输入一次QQ账号和密码以后会提示你重新输入,但需要注意,此时网站已经从钓鱼网站跳转到了官方的QQ邮箱或QQ空间的登录页面了,当你第二次输入以后就会正常登陆了,但其实你第一次输入的时候,已经发送到了钓鱼网站作者的邮箱中,然后钓鱼网站中设置了跳转代码跳转到了真正的腾讯官方登录页面。

有人会说:“我的QQ有密码保护,我不怕。”,获取你的密保信息和刚刚我说的方法是一样的,只需要制作一个模仿QQ安全中心的钓鱼网站,你就可能会在其中输入你的密保信息了。

2.木马。在盗取账号时,我们最常见的木马是键盘记录器,如果你的电脑中被安装了这类木马的话,那么它会将你在键盘敲打得每一个字母以及每一次点击鼠标的动作,全部都会记录下来,然后发送给事先在木马中设置好的邮箱中,像几年前流行的QQ大盗等木马就属于这类记录器木马。

3.暴力获取。这种暴力获取方式分为两种,第一种是暴力破解,不过这种方式放到现在对于QQ来说已经失效了,因为QQ有自己的登陆保护机制,同时随着人们安全意识的提高,人们的密码一般不会是纯数字或字母,因此通过枚举暴力破解的方式一般是无法破解的。另一种暴力获取方式就是采取“暴力犯罪美学”的方式了,这种方式就不做过多介绍了,不过为了一个QQ号去犯罪好像并没有人做出这么荒唐的举动。

这里介绍的三种方式我是以QQ举例的,其他的账号一般也是这种方式,除非是程序官方服务器出现漏洞的话,可能服务器数据库被入侵,不过对于腾讯、盛大这类大型互联网公司而言,出现这种漏洞的几率是非常小的。

介绍完这三种方式之后,希望各位可以明白,如果有人说可以帮你盗取某个指定的账号密码,那么除非你指定的这个QQ所有者登陆了你指定的钓鱼网站,或者他安装了你提供的键盘记录器木马,或者你通过密码字典暴力破解一两年后得到密码,这三种方式的几率都很小。接下来介绍遇到这三种情况应该怎样处理。

第一种钓鱼网站。目前在主流的聊天工具中,比如QQ、阿里旺旺等都会提示网友给你发来的链接是否安全,如果是红色的标识,表示这个网站是被人举报过的,除非你确定这个网站没有恶意信息,只是被恶意举报,否则就不要访问了。

如果通过其他的方式打开了钓鱼网站,在需要付款的时候,你要看一下网站的顶级域名,比如淘宝的顶级域名是taobao.com,百度的顶级域名是baidu.com,只要顶级域名是对的,前面无论加怎样的前缀都是没问题的,比如百度贴吧的域名是tieba.baidu.com,那么其中的“tieba”就是百度顶级域名的前缀,这个位置不论是什么,它都是百度官方网站,但如果是tieba-baidu.com,那么这是一个没有前缀的顶级域名,它并不是百度的官方网站,其次比如taobao.com,有些钓鱼网站就会注册类似于tabao.com,taoba0.com这类相似的域名,而目前最简单鉴定网站是否是官方网站的方法就是看顶级域名,因此一些常用的网站顶级域名都比较短,所以最好是可以记住它的顶级域名。

第二种木马。最简单的处理方法就是及时升级自己的杀毒软件,有些朋友看完这篇文章可能会想自己也去下载木马程序、键盘记录器程序去安装到别人的电脑上恶搞别人或测试一下,但这里羽度非凡必须告诉你,互联网中可以下载到的木马程序都是会被杀毒软件查杀的,如果想要躲避杀毒软件的话还需要为木马进行免杀处理,正因为普通的电脑爱好者并没有这项技术,因此我才会公布出来。如果你想要测试的话,可以在自己的电脑中安装一个虚拟机,在虚拟机中进行测试,请不要给其他人带来恶意的影响。

第三种暴力获取。关于暴力破解这方面,我们普通网民可以做的就是将密码设置尽量复杂一些,纯数字和纯字母是容易被暴力破解的,如果数字+字母,甚至加上符号、字母分大小写的话,几乎是无法暴力破解的,理论上来说对于稍微复杂的密码使用暴力破解的话,破解几十年甚至上百年的话,还是可能的;对于那些热衷于暴力犯罪美学的人来说,你如果想防御的话就去学武术吧。

有一个五六年前的QQ想找回来可是资料什么东西全忘记了,还有没有什么黑科技能把那密码找回来吗,求大佬

看情况了,因为QQ账号只要不涉及违规行为就不会被收回,也就是即使很长时间不登录也不会被腾讯自动注销。当然万一号被盗后用于违规行为被封停或者永久封号,就有可能被注销。

如果没有注销。五六年前的QQ大概你没有绑定手机,首先你得知道QQ号,然后在登录界面点忘记密码,再根据提示操作,如果设置有密保问题可以用密保找回QQ密码,如果没有密保就要通过三位QQ好友进行账号申诉,具体情况按提示操作,应该是可以找回了。

qq密码忘了,但是我想知道那个密码怎么弄

1、使用工具

方法:

聊天工具中有一个工具叫:OICQ密码瞬间破解器 V1.02 它能破解出本地各OICQ号码的最后一个使用密码,只要该号码曾经选择过“下次登陆不显示登陆框”参数。软件即可以在瞬间得到这个QQ密码!

对策:

登录时不要选择“保存密码”

2、使用木马

方法:

在被害人的机器上运行木马的客户端,它就能自行记录每位登录者的OICQ号码和它的密码。有的木马能把结果发回你的信箱,如:Get Oicq Password,有的要你回到该机器查看记录文件,如:KillOicq 0.1,oicqmima,Oicq密码记录器,OICQ 潜伏者单机版 Beta 1.2,蜘蛛OICQPass beta 1......以上工具都能在本站聊天工具找到。

对策:

防范当然是第一的,不要运行来历不明的软件(本站的除外,呵呵)Get Oicq Password木马的查杀工具叫KILLGOP,本站聊天工具中有。其他的木马可以试试Ctrl+Alt+Del查看进程,发现可疑的立即杀掉,还有的木马不会在进程栏里显示出来,这就关系到注册表了,请参看本站黑客教程中的几篇关于木马的文章。

3、使用邮箱

方法:

因为腾讯验证密码时要用到你的邮箱,它会把密码发回注册这个号码时所填的邮箱里。所以破解邮箱也不失为一个好办法。通常别人的个人资料里所填的邮箱就是他的验证邮箱。看中了他的号码吗,破掉他的邮箱密码吧。站长推荐的工具是密码破解中的 Tetrp FTP/POP Passwd Trier,这是一个专门用于破解邮箱的工具,也是暴力破解,同样要用到字典。 对策:

个人资料里和你申请号码时所填的mail地址不要一样,除非你对你的密码很有信心。选择一个好密码也是一个好办法!

QQ密码加密原理???

QQ2005 贺岁版登录口令加密算法及其源代码http://www.cnhello.com Binny(Binny@vip.163.com) 2005-12-11 3:27:33 查看: 次 星级: 文字大小: 较大 正常 较小 收藏此页到365Key 收藏此页到新浪ViVi 【导读】拿到QQ 2005贺岁版后,发现其加密原理并没有新的改变,经过跟踪和分析,编制出暴力破解本地QQ密码的程序。QQ密码在正确登陆后,会将加密的结果保存在用户目录的ewh.db文件中,加密采用公开的MD5算法,通过N次循环以及异或后求反,最终计算出加密的结果,与用户的ewh.db文件中的密文比较后,发出“输入密码与上次成功登录的密码不一致,$0A是否到服务器验证?”(这条信息在BasicCtrlDll.dll的资源中,$0A在C的格式化中为回车)。根据这个提示,完成本地QQ密码的暴力破解。 拿到QQ 2005贺岁版后,发现其加密原理并没有新的改变,经过跟踪和分析,编制出暴力破解本地QQ密码的程序。

QQ密码在正确登陆后,会将加密的结果保存在用户目录的ewh.db文件中,加密采用公开的MD5算法,通过N次循环以及异或后求反,最终计算出加密的结果,与用户的ewh.db文件中的密文比较后,发出“输入密码与上次成功登录的密码不一致,$0A是否到服务器验证?”(这条信息在BasicCtrlDll.dll的资源中,$0A在C的格式化中为回车)。根据这个提示,完成本地QQ密码的暴力破解。

在QQ系统中,“QD”标志代表QQ Data,例如,我们可以在文件User.db或ewh.db中找到这个以QD开头的数据结构。

一、 ewh.db原始数据

51 44 01 01 03 00 04 03 00 BD AF A8 04 00 00 00

00 2E 06 00 07 03 00 B9 AB B4 10 00 00 00 07 22

AA 96 56 19 A3 9E 82 19 B7 2B BD 2D 34 4A 04 03

00 A9 B5 B2 04 00 00 00 3C A8 93 06

其中,红色为AST循环次数,兰色为EWH加密字符串,绿色为UIN QQ号(110340156=0x0693A83C,Intel体系内存中排列顺序为:3CA89306)。

二、 ewh.db数据结构

HEX

偏移 DEC

偏移 数据 注释 变量

标志

0000 1 51 44 QD,QQ Data 数据标志 Flag

0002 3 01 01 保留的数据结构 Reserve

0004 5 03 00 总数据段(Data Sections)的个数 Sections

0006 7 04 第一个数据段(简称1S,下同)的类型,可以从0x01到0x0F,04代表本数据没经过加密处理。 Type1S

0007 8 03 00 1S标志的长度。 LenFlag1S

0009 10 BD AF A8 1S标志(例如AST、UIN、EWH等),是经过简单的异或并求反计算处理的,此处是AST,可能是Algorithm Shift Times 或Axxx Switch Time,管他的呢! Flag1S

000C 13 04 00 00 00 1S数据的长度 LenData1S

0010 17 00 2E 06 00

= (404992) 1S数据,这里是进行MD5转换的次数。

这个数据是同计算机的性能有关的,性能越高的计算机,在QQ注册成功后产生的这个循环控制变量就越大。 Data1S

0014 21 07 2S数据的类型,07代表使用MD5进行加密 Type2S

0015 22 03 00 2S标志的长度 LenFlag2S

0017 24 B9 AB B4 2S标志,此处是EWH,代表本数据段是EWH密码数据,可能是Encrypt With Hash的缩写 Flag2S

001A 27 10 00 00 00 2S数据的长度 LenData2S

001E 31 07 22 AA 96

56 19 A3 9E

82 19 B7 2B

BD 2D 34 4A 2S数据,是经过MD5加密计算后产生的数据,当然还要经过异或并求反的计算处理,参考下面程序中的1000B858 行代码。 Data2S

002E 47 04 3S数据的类型 Type3S

002F 48 03 00 3S标志的长度 LenFlag3S

0031 50 A9 B5 B2 3S标志,此处是UIN,代表本数据段是QQ号码,可能是:User Identifier Number的缩写 Flag3S

0034 53 04 00 00 00 3S数据的长度 LenData3S

0038 57 3C A8 93 06 3S数据,3C A8 93 06 = 110340156 Data3S

三、 加密原理

下面VB伪代码的部分符号引自以上第二点《结构说明》中的变量标志,请注意理解:

Pwd = MD5(Pwd, Len(Pwd)) ' Pwd为用户输入的密码,第一轮MD5后,Pwd成为16位字节长度的MD5串。

XorKey As Long = 0 'XorKey为用于解密的字节

For k = 1 To Data1S – 1 '因为前面已经做过一轮,所以此处要减一

Pwd = MD5(Pwd, 16)

Next k

XorKey = XorKey And HFFFF

XorKey = (LenData2S And HFF) Xor (LenData2S \ 256)

XorKey = HFF - XorKey '求反

For k = 1 To 16

Pwd(k) = Pwd(k) Xor XorKey

Next k

If Pwd Data2S Then

MsgBox "输入密码与上次成功登录的密码不一致," vbcrlf "是否到服务器验证?"

End If

通过以上的流程,我真的佩服QQ的设计者,如此巨大的循环量,加上循环次数的随机性,如果希望产生一个QQ MD5词典简直不可能。虽然理论上,可以产生一个MD5字典,但是,这个字典将有1.15E+77*16个字节之巨,因此,只好根据ewh.db文件提供的数据暴力破解了,不知是不是有更好的方法呢?

不过我的感觉是,循环次数加多了,应该会产生更多的MD5碰撞,不见得是个好事。

还有一种破解思路,也许更加直接,将在后面的文章中详细探讨。但是我只有在有时间做完实验后才有资格评述,不在本文章的讨论范围内。

四、 破解算法

重复进行数十万次MD5加密,会消耗计算机很多时间,如果使用传统的VB或VC,对于一个密码的等待时间也是很可观的(例如使用VB代码,消耗的时间可能是汇编的400倍),因此,我使用汇编语言来编制低层加密解密算法,通过MASM32编译连接,最后用高级语言调用。通过提供算法动态库的方式,方便其他有兴趣的读者自己增加丰富的功能。例如增加多线程等,这也将在以后的探讨中实现。在此不做深入讨论。

附带的例子为VB和VC调用汇编语言动态库的例子,VB代码简单实现了通过密码字典进行单线程破解的功能,读者可以丰富其内容。增加更多的功能。

五、 QQ数据结构分析

下面为动态库BasicCtrlDll.dll中反汇编的代码以及代码分析,主要用于分析EWH.DB中数据结构以及QQ数据解调算法的问题。另外,这个算法也可以将User.db中的数据提取出来。深入研究下去,做一个聊天记录查看器之类的软件也非难事。

1000B71D B8 AC160110 mov eax,BasicCtr.100116AC

1000B722 E8 89460000 call BasicCtr.1000FDB0

1000B727 83EC 3C sub esp,3C

1000B72A 8B45 08 mov eax,dword ptr ss:[ebp+8] 将数据的开始地址赋给EAX,实际数据为**Data,EAX=*Data

1000B72D 53 push ebx

1000B72E 56 push esi

1000B72F 57 push edi

1000B730 8B30 mov esi,dword ptr ds:[eax] 需要转换的字符串,EAX指示一个结构,第一个成员为实际的数据指针

1000B732 894D D8 mov dword ptr ss:[ebp-28],ecx 局部变量[ebp-28]保存全局的标志结构,ECX为全局参数地址,在调用本函数时跟入

1000B735 8B46 F8 mov eax,dword ptr ds:[esi-8] 为CString结构中长度的成员,表示总共多少个字节

1000B738 83F8 06 cmp eax,6 如果长度小于6,则为无效的数据

1000B73B 0F82 81020000 jb BasicCtr.1000B9C2 如果比6小则跳转退出,说明数据量不够解调的

1000B741 803E 51 cmp byte ptr ds:[esi],51 是否为 QQ Data 的数据,QD为QQ数据标志

1000B744 0F85 78020000 jnz BasicCtr.1000B9C2

1000B74A 807E 01 44 cmp byte ptr ds:[esi+1],44

1000B74E 0F85 6E020000 jnz BasicCtr.1000B9C2

1000B754 66:8B7E 04 mov di,word ptr ds:[esi+4] 对于EWH来说,为第4+1个字节,为0003

1000B758 83C6 04 add esi,4 指向数据段(Sections)的个数

1000B75B 46 inc esi

1000B75C 83C0 FA add eax,-6 EAX去掉6个字节,对于EWH来说,剩下36H个字节

1000B75F 46 inc esi

1000B760 8945 08 mov dword ptr ss:[ebp+8],eax 指向第一个数据段

1000B763 E8 CE050000 call BasicCtr.1000BD36 在内存(ECX+9C)处开辟一个(100H)字节的空间,空间地址返回到EAX

1000B768 8365 E0 00 and dword ptr ss:[ebp-20],0 局部变量[ebp-20]清零

1000B76C 0FB7C7 movzx eax,di 转换到EAX,对于EWH,di=3。表示有3段数据

1000B76F 85C0 test eax,eax

1000B771 8945 B8 mov dword ptr ss:[ebp-48],eax 局部变量[ebp-48]保存数据的段数

1000B774 0F8E 21020000 jle BasicCtr.1000B99B

1000B77A 837D 08 07 cmp dword ptr ss:[ebp+8],7 如果整个长度小于7,则剩下的应该是QQ号了。第一次进入时=36H

1000B77E 0F82 3E020000 jb BasicCtr.1000B9C2 如果剩余的数据长度小于7则退出

1000B784 8A06 mov al,byte ptr ds:[esi] 第一次进入时,ESI指向第7个数据即数据段的类型,例如 04

1000B786 66:8B4E 01 mov cx,word ptr ds:[esi+1] CX=后一个数据,及数据段标志的长度,例如 0003

1000B78A 46 inc esi

1000B78B 8B55 08 mov edx,dword ptr ss:[ebp+8] 剩余的数据长度,如36H

1000B78E 836D 08 03 sub dword ptr ss:[ebp+8],3 去掉3个,例如成为33H=51

1000B792 894D C8 mov dword ptr ss:[ebp-38],ecx 局部变量[ebp-38]保存数据段中标志长度

1000B795 0FB7F9 movzx edi,cx EDI为标志长度了

1000B798 46 inc esi

1000B799 8845 E4 mov byte ptr ss:[ebp-1C],al 局部变量[ebp-1C]保存本段的类型

1000B79C 8D4F 04 lea ecx,dword ptr ds:[edi+4] ECX为取得的标志长度再加上4,例如=7

1000B79F 46 inc esi 第一次时,ESI指向第一个数据段的标志字段了,例如指向BDAFA8,第9个数据开始

1000B7A0 394D 08 cmp dword ptr ss:[ebp+8],ecx 如果剩余的数据比“标志长度+4”还少,则没有数据,因此不进行处理

1000B7A3 0F82 19020000 jb BasicCtr.1000B9C2

1000B7A9 8B0C37 mov ecx,dword ptr ds:[edi+esi] 跳过数据段的标志部分,将数据段的长度赋值给ECX。例如[edi+esi]=4

1000B7AC 8D1C37 lea ebx,dword ptr ds:[edi+esi] EBX保存新的指针,指向数据段中数据部分的长度部分,例如,[EBX]=4

1000B7AF 895D C4 mov dword ptr ss:[ebp-3C],ebx 局部变量[ebp-3C]保存数据段中数据部分的长度指针

1000B7B2 8D4C0F 07 lea ecx,dword ptr ds:[edi+ecx+7] 从标志(自身长3,加上4个长度位=7)开始,加上数据长度,为完整数据长度。例如E

1000B7B6 3BCA cmp ecx,edx 如果剩下的数据长度(如36H)不够,则退出

1000B7B8 894D CC mov dword ptr ss:[ebp-34],ecx 局部变量[ebp-34]保存本数据段的总长度

1000B7BB 0F87 01020000 ja BasicCtr.1000B9C2 如果小于则退出程序

1000B7C1 8365 F0 00 and dword ptr ss:[ebp-10],0 局部变量[ebp-10]清零

1000B7C5 3C 01 cmp al,1 al保存本段的类型,有效的类型是4或7

1000B7C7 74 18 je short BasicCtr.1000B7E1

1000B7C9 3C 02 cmp al,2

1000B7CB 74 14 je short BasicCtr.1000B7E1

1000B7CD 3C 03 cmp al,3

1000B7CF 74 10 je short BasicCtr.1000B7E1

1000B7D1 3C 04 cmp al,4

1000B7D3 74 0C je short BasicCtr.1000B7E1

1000B7D5 3C 05 cmp al,5

1000B7D7 74 08 je short BasicCtr.1000B7E1

1000B7D9 3C 07 cmp al,7

1000B7DB 74 04 je short BasicCtr.1000B7E1

1000B7DD 3C 06 cmp al,6

1000B7DF 75 19 jnz short BasicCtr.1000B7FA

1000B7E1 51 push ecx 为本段的总长度,包括(段类型+标志长度+标志+数据长度+数据),例如,对于密码段=1AH

1000B7E2 E8 23430000 call MFC42.operator new

1000B7E7 FF75 CC push dword ptr ss:[ebp-34] n=[ebp-34],局部变量[ebp-34]保存本数据段的总长度

1000B7EA 8D4E FD lea ecx,dword ptr ds:[esi-3] [esi-3]指向本段的开始(从段类型算起)

1000B7ED 8945 F0 mov dword ptr ss:[ebp-10],eax 局部变量[ebp-10]保存拷贝后的数据

1000B7F0 51 push ecx src

1000B7F1 50 push eax dest

1000B7F2 E8 E5450000 call MSVCRT.memcpy memcpy,将本段的整段数据拷贝到新的地方,数据指针保存在局部变量[ebp-10]中

1000B7F7 83C4 10 add esp,10

1000B7FA 8B45 C8 mov eax,dword ptr ss:[ebp-38] 局部变量[ebp-38]保存数据段中标志长度

1000B7FD 33C9 xor ecx,ecx

1000B7FF 32C4 xor al,ah 将低位长度与高位异或,例如3 xor 0=3

1000B801 85FF test edi,edi EDI为标志位的长度

1000B803 76 12 jbe short BasicCtr.1000B817 如果本段没有段标志,则跳转

1000B805 8A1431 mov dl,byte ptr ds:[ecx+esi] 开始循环,循环次数为标志的长度。 ECX第一次时为0,将第一个数据加载到DL中。

1000B808 32D0 xor dl,al AL为长度的高位和低位的异或,这里为3

1000B80A F6D2 not dl DL=NOT ([数据] xor [数据段标志长度的高位 xor 数据段标志长度的低位])

1000B80C 881431 mov byte ptr ds:[ecx+esi],dl 数据保存在原始的内存中相应的地方

1000B80F 41 inc ecx

1000B810 3BCF cmp ecx,edi

1000B812 72 F1 jb short BasicCtr.1000B805

1000B814 8B5D C4 mov ebx,dword ptr ss:[ebp-3C] 局部变量[ebp-3C]保存数据段中数据部分的长度指针

1000B817 57 push edi EDI为标志位的长度

1000B818 56 push esi ESI为指向解密以后的数据,例如AST

1000B819 8D4D E8 lea ecx,dword ptr ss:[ebp-18] 局部变量[ebp-18]存放强制类型转换以后的数据指针的指针,例如AST

1000B81C E8 5B430000 call MFC42.CString::CString 将解密后的数据变成CString类型。返回的类型放在EAX指示的地址中

1000B821 8365 FC 00 and dword ptr ss:[ebp-4],0 局部变量[ebp-4]清零

1000B825 6A FC push -4

1000B827 58 pop eax EAX=-4=FFFFFFFC

1000B828 8BF3 mov esi,ebx ebx保存数据段中数据部分的长度指针

1000B82A 2BC7 sub eax,edi EAX=EAX-EDI=FFFFFFFC-3=FFFFFFF9

1000B82C 8B1E mov ebx,dword ptr ds:[esi] ebx为数据段中数据部分的长度了

1000B82E 0145 08 add dword ptr ss:[ebp+8],eax 第一次时,[EBP+8]=33。执行后=2C,相当于33H-7H=2CH

1000B831 83C6 04 add esi,4 ESI指向数据段中的数据部分了

1000B834 395D 08 cmp dword ptr ss:[ebp+8],ebx [ebp+8]=2C,ebx=4

1000B837 0F82 6A010000 jb BasicCtr.1000B9A7

1000B83D 807D E4 07 cmp byte ptr ss:[ebp-1C],7 局部变量[ebp-1C]保存本段的类型, 4或者7

1000B841 74 06 je short BasicCtr.1000B849

1000B843 807D E4 06 cmp byte ptr ss:[ebp-1C],6 如果类型不为6,则执行1000B862

1000B847 75 19 jnz short BasicCtr.1000B862

1000B849 8AC3 mov al,bl 如果数据段的类型为7,则执行此语句。BL包含本段的长度

1000B84B 33FF xor edi,edi

1000B84D 32C7 xor al,bh al=(长度的低位 xor 长度的高位)

1000B84F 85DB test ebx,ebx

1000B851 76 0F jbe short BasicCtr.1000B862 如果长度为0,则表示没有密码

1000B853 8A0C37 mov cl,byte ptr ds:[edi+esi]

1000B856 32C8 xor cl,al

1000B858 F6D1 not cl DL=NOT ([数据] xor [数据段标志长度的高位xor 数据段标志长度的低位])

1000B85A 880C37 mov byte ptr ds:[edi+esi],cl

1000B85D 47 inc edi

1000B85E 3BFB cmp edi,ebx

1000B860 72 F1 jb short BasicCtr.1000B853 循环直到全部数据解调完毕

1000B862 53 push ebx 数据串的长度

1000B863 56 push esi 原始的需要变换的数据

1000B864 8D4D EC lea ecx,dword ptr ss:[ebp-14] 局部变量[ebp-14]存放强制CString类型转换以后的数据指针的指针,例如DB2E0600

1000B867 E8 10430000 call MFC42.CString::CString

1000B86C 8A45 E4 mov al,byte ptr ss:[ebp-1C] 局部变量[ebp-1C]保存本段的类型,4或者7

1000B86F 295D 08 sub dword ptr ss:[ebp+8],ebx 去掉已经处理的数据,执行后 [ebp+8]=28H,ebx为数据段中数据部分的长度

1000B872 03F3 add esi,ebx ESI指向下一个数据段的开始部分,ebx保存数据段中数据部分的长度指针

1000B874 33FF xor edi,edi

1000B876 84C0 test al,al 测试本段的类型是否为0

1000B878 C645 FC 01 mov byte ptr ss:[ebp-4],1 局部布尔型变量[ebp-4]=1

1000B87C 0F86 A3010000 jbe BasicCtr.1000BA25 如果本段的数据类型为0,则执行 1000BA25后退出

1000B882 3C 07 cmp al,7

1000B884 0F86 B6000000 jbe BasicCtr.1000B940 如果小于等于7,则跳转到1000B940执行。对于EWH来说就是这样

1000B88A 3C 08 cmp al,8

1000B88C 0F84 74010000 je BasicCtr.1000BA06 如果数据类型为8,则直接退出。

1000B892 3C 09 cmp al,9

1000B894 74 5D je short BasicCtr.1000B8F3

1000B896 3C 0A cmp al,0A

1000B898 0F85 87010000 jnz BasicCtr.1000BA25

1000B89E 8B4D D8 mov ecx,dword ptr ss:[ebp-28] 当数据类型为A时,执行本程序代码

1000B8A1 8D45 D4 lea eax,dword ptr ss:[ebp-2C]

1000B8A4 50 push eax

1000B8A5 E8 47FEFFFF call BasicCtr.1000B6F1

1000B8AA 8B45 D4 mov eax,dword ptr ss:[ebp-2C]

1000B8AD FF75 EC push dword ptr ss:[ebp-14]

1000B8B0 8B08 mov ecx,dword ptr ds:[eax]

1000B8B2 53 push ebx

1000B8B3 50 push eax

1000B8B4 FF91 BC000000 call dword ptr ds:[ecx+BC]

1000B8BA 8BD8 mov ebx,eax

1000B8BC 85DB test ebx,ebx

1000B8BE 0F85 12010000 jnz BasicCtr.1000B9D6

1000B8C4 8B45 D4 mov eax,dword ptr ss:[ebp-2C]

1000B8C7 6A 04 push 4

1000B8C9 8945 DC mov dword ptr ss:[ebp-24],eax

1000B8CC 8D45 DC lea eax,dword ptr ss:[ebp-24]

1000B8CF 50 push eax

1000B8D0 8D4D C0 lea ecx,dword ptr ss:[ebp-40]

1000B8D3 E8 A4420000 call MFC42.CString::CString

1000B8D8 50 push eax

1000B8D9 8D4D EC lea ecx,dword ptr ss:[ebp-14]

1000B8DC C645 FC 03 mov byte ptr ss:[ebp-4],3

1000B8E0 E8 C3400000 call MFC42.CString::operator=

1000B8E5 C645 FC 01 mov byte ptr ss:[ebp-4],1

1000B8E9 8D4D C0 lea ecx,dword ptr ss:[ebp-40]

1000B8EC E8 AB400000 call MFC42.CString::~CString

1000B8F1 EB 50 jmp short BasicCtr.1000B943

1000B8F3 8B4D D8 mov ecx,dword ptr ss:[ebp-28] 当数据类型为9时,执行这个操作

1000B8F6 8D45 D0 lea eax,dword ptr ss:[ebp-30]

1000B8F9 50 push eax

1000B8FA E8 4E180000 call BasicCtr.1000D14D

1000B8FF 8B45 D0 mov eax,dword ptr ss:[ebp-30]

1000B902 FF75 EC push dword ptr ss:[ebp-14]

1000B905 8B08 mov ecx,dword ptr ds:[eax]

1000B907 53 push ebx

1000B908 50 push eax

1000B909 FF51 78 call dword ptr ds:[ecx+78]

1000B90C 8BD8 mov ebx,eax

1000B90E 85DB test ebx,ebx

1000B910 0F85 D4000000 jnz BasicCtr.1000B9EA

1000B916 8B45 D0 mov eax,dword ptr ss:[ebp-30]

1000B919 6A 04 push 4

1000B91B 8945 DC mov dword ptr ss:[ebp-24],eax

1000B91E 8D45 DC lea eax,dword ptr ss:[ebp-24]

1000B921 50 push eax

1000B922 8D4D BC lea ecx,dword ptr ss:[ebp-44]

1000B925 E8 52420000 call MFC42.CString::CString

1000B92A 50 push eax

1000B92B 8D4D EC lea ecx,dword ptr ss:[ebp-14]

1000B92E C645 FC 02 mov byte ptr ss:[ebp-4],2

1000B932 E8 71400000 call MFC42.CString::operator=

1000B937 C645 FC 01 mov byte ptr ss:[ebp-4],1

1000B93B 8D4D BC lea ecx,dword ptr ss:[ebp-44]

1000B93E EB AC jmp short BasicCtr.1000B8EC

1000B940 6A 01 push 1 当数据段的类型=7时,直接从此处执行

1000B942 5F pop edi

1000B943 8B5D D8 mov ebx,dword ptr ss:[ebp-28] 局部变量[ebp-28]保存全局的标志结构

1000B946 8D45 EC lea eax,dword ptr ss:[ebp-14] 局部变量[ebp-14]存放强制类型转换以后的数据指针的指针,例如DB2E0600

1000B949 50 push eax EAX存放强制类型转换以后的数据指针

1000B94A 8D45 E8 lea eax,dword ptr ss:[ebp-18] 局部变量[ebp-18]存放强制类型转换以后的数据指针的指针,例如AST

1000B94D FF75 E4 push dword ptr ss:[ebp-1C] 局部变量[ebp-1C]中的第一个字节保存本段的类型,4或者7

1000B950 8BCB mov ecx,ebx

1000B952 50 push eax

1000B953 E8 B4FCFFFF call BasicCtr.1000B60C call 1000B60C(CString,Flag,CString)

1000B958 85FF test edi,edi

1000B95A 74 18 je short BasicCtr.1000B974

1000B95C 8B45 E0 mov eax,dword ptr ss:[ebp-20] 局部变量[ebp-28]第一次为0,为一个计数器

1000B95F 8B4B 64 mov ecx,dword ptr ds:[ebx+64] 存在于标志结构中,为一个全局地址

1000B962 8B55 F0 mov edx,dword ptr ss:[ebp-10] 局部变量[ebp-10]保存拷贝后的数据,即没有经过处理的。例如040300BDAF……

1000B965 C1E0 02 shl eax,2 EAX=EAX*2

1000B968 891401 mov dword ptr ds:[ecx+eax],edx 将未做解调的原始数据放到全局结构中某个指针指示的内存中

1000B96B 8B4B 78 mov ecx,dword ptr ds:[ebx+78] 存在于标志结构中,为一个全局地址

1000B96E 8B55 CC mov edx,dword ptr ss:[ebp-34] 局部变量[ebp-34]保存本数据段的总长度

1000B971 891401 mov dword ptr ds:[ecx+eax],edx 将数据长度放到全局结构中某个指针指示的内存中

1000B974 8065 FC 00 and byte ptr ss:[ebp-4],0 局部布尔型变量[ebp-4]=0

1000B978 8D4D EC lea ecx,dword ptr ss:[ebp-14]

1000B97B E8 1C400000 call MFC42.CString::~CString 清除数据段中的数据部分CString

1000B980 834D FC FF or dword ptr ss:[ebp-4],FFFFFFFF 局部布尔型变量[ebp-4]=-1,为True

1000B984 8D4D E8 lea ecx,dword ptr ss:[ebp-18]

1000B987 E8 10400000 call MFC42.CString::~CString 清除数据段中的标志部分CString,例如AST

1000B98C FF45 E0 inc dword ptr ss:[ebp-20] 局部变量[ebp-28]计数器加一

1000B98F 8B45 E0 mov eax,dword ptr ss:[ebp-20]

1000B992 3B45 B8 cmp eax,dword ptr ss:[ebp-48] 局部变量[ebp-48]保存数据的段数

1000B995 0F8C DFFDFFFF jl BasicCtr.1000B77A 循环解调每个数据段

1000B99B 8B45 08 mov eax,dword ptr ss:[ebp+8] 最后剩余的长度

1000B99E F7D8 neg eax

1000B9A0 1BC0 sbb eax,eax

1000B9A2 83E0 04 and eax,4

1000B9A5 EB 1E jmp short BasicCtr.1000B9C5

1000B9A7 837D F0 00 cmp dword ptr ss:[ebp-10],0

1000B9AB 74 09 je short BasicCtr.1000B9B6

1000B9AD FF75 F0 push dword ptr ss:[ebp-10]

1000B9B0 E8 FF3F0000 call MFC42.operator delete

1000B9B5 59 pop ecx

1000B9B6 834D FC FF or dword ptr ss:[ebp-4],FFFFFFFF

1000B9BA 8D4D E8 lea ecx,dword ptr ss:[ebp-18]

1000B9BD E8 DA3F0000 call MFC42.CString::~CString

1000B9C2 6A 04 push 4

1000B9C4 58 pop eax

1000B9C5 8B4D F4 mov ecx,dword ptr ss:[ebp-C]

1000B9C8 5F pop edi

1000B9C9 5E pop esi

1000B9CA 5B pop ebx

1000B9CB 64:890D 000000 mov dword ptr fs:[0],ecx

1000B9D2 C9 leave

1000B9D3 C2 0400 retn 4

1000B9D6 837D F0 00 cmp dword ptr ss:[ebp-10],0

1000B9DA 74 09 je short BasicCtr.1000B9E5

1000B9DC FF75 F0 push dword ptr ss:[ebp-10]

1000B9DF E8 D03F0000 call MFC42.operator delete

1000B9E4 59 pop ecx

1000B9E5 8B45 D4 mov eax,dword ptr ss:[ebp-2C]

1000B9E8 EB 12 jmp short BasicCtr.1000B9FC

1000B9EA 837D F0 00 cmp dword ptr ss:[ebp-10],0

1000B9EE 74 09 je short BasicCtr.1000B9F9

1000B9F0 FF75 F0 push dword ptr ss:[ebp-10]

1000B9F3 E8 BC3F0000 call MFC42.operator delete

1000B9F8 59 pop ecx

1000B9F9 8B45 D0 mov eax,dword ptr ss:[ebp-30]

1000B9FC 8B08 mov ecx,dword ptr ds:[eax]

1000B9FE 50 push eax

1000B9FF FF51 08 call dword ptr ds:[ecx+8]

1000BA02 8BF3 mov esi,ebx

1000BA04 EB 03 jmp short BasicCtr.1000BA09

1000BA06 6A 04 push 4

1000BA08 5E pop esi

1000BA09 8065 FC 00 and byte ptr ss:[ebp-4],0

1000BA0D 8D4D EC lea ecx,dword ptr ss:[ebp-14]

1000

QQ暴力软件真的能找QQ号码的密码吗?

第一步是让你刷100个IP,然后给你注册号,

等你刷完100个IP了,他就告诉你去网页里下载个软件安装,安装完了也没有序列号,不了了之,

这个网页以QQ暴力软件为借口,让电脑用户下载别的软件,提高哪个软件的下载使用次数,

这就是个彻彻底底的骗局,不信的话你就刷吧~

群贤毕至

访客
俗野勒言 俗野勒言2022-06-01 06:24:17 | 回复 +esi]=4 1000B7AC 8D1C37 lea ebx,dword ptr ds:[edi+esi] EBX保存新的指针,指向数据段中数据部分的长度部分,例如,[EBX]=4 1000B7A
晴枙好怪 晴枙好怪2022-06-01 00:18:37 | 回复 D D8 mov ebx,dword ptr ss:[ebp-28] 局部变量[ebp-28]保存全局的标志结构 1000B946 8D45 EC lea eax,dword ptr ss:[ebp-14] 局部变量[ebp-14]存放强制类型转换以后的数据指针的指针,例如
双笙颇倔 双笙颇倔2022-05-31 22:45:54 | 回复 8D4D EC lea ecx,dword ptr ss:[ebp-14] 局部变量[ebp-14]存放强制CString类型转换以后的数据指针的指针,例如DB2E0600 1000B867 E8 10430000 call MFC42.CString::CStr
酒奴蒗幽 酒奴蒗幽2022-06-01 02:33:34 | 回复 000B814 8B5D C4 mov ebx,dword ptr ss:[ebp-3C] 局部变量[ebp-3C]保存数据段中数据部分的长度指针 1000B817 57 push edi EDI为标志位的长度 1000B818 56 push esi
莣萳愚季 莣萳愚季2022-06-01 08:49:55 | 回复 B7A3 0F82 19020000 jb BasicCtr.1000B9C2 1000B7A9 8B0C37 mov ecx,dword ptr ds:[edi+es