银行 社区服务 每日签到 会员排行 网站地图
  • 4279阅读
  • 4回复

破解技术秒破教程加密分析

楼层直达
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
190
金币
80
威望
1
贡献值
0
乐币
0
主题
54
技术是一点点积累的,每天消化一点吧
以前的东西,绝对的经典

一、加密文件大体结构:
1、只加密文件内容时。偏移14-15h是对其后一直到文件头结束处也就是加密数据开始处的校验值。文件头中文件名后至文件头结束处是八字节的salt和5字节的未知区域(功能暂不详),加密数据后紧跟固定的结束字符串c4 3d 7b 00 40 07 00。
2、头和内容均加密时:偏移14-15h是salt2,尾部还出现一次。紧跟的是加密的文件头(头中尾部是salt1和5字节的未知区域)和加密的文件内容(压缩后再进行aes加密),最后就是salt2和经过aes加密的固定结束字符串。注:生成salt的函数调用了2次。

二、简述salt算法:
1、由SystemTime得到FileTime;
2、分别对FileTime的两个DWORD进行hash_process;
3、hash_final后得到的digest的最前面的两个DWORD就是salt。
三、加密过程:
1、先将salt接在unicode形式的密码后再用hash_final生成aesinit、aeskey、10轮round key。
2、压缩好的文件内容分组长为每一个分组128bit,开始加密前先与前一个分组xor生成一个state参与aes加密,第一个分组与aesinit进行xor。
四、隐患:
由于salt是随机产生,因而aeskey和round key也是随机的,文件加密结果就是随机的。这个变量的使用给我们提供了利用空间。插一句,假如由加密后数据逆推得到aeskey但由于是经过hash得到,这是不可逆的,所以不可能知道密码。唯一可行就是让其加密过程中自己将密码保存到salt处最好用可逆向的加密算法处理一下,这不会有任何影响,只是让它多了层含义。
以上是我的一点肤浅的认识,望批评指正!

第一步:用winhex将下面数据生成rar格式的文件。
526172211A0700CF907300000D0000000000000056947424965E00600000004900000002E3B1696DEE413D3B1D33310020000000C3EBC6C6B2E2CAD44279CCECD2D76C6F76652E74787400796AD234784B6DD58B0A427929591366006C6F7665002E7478742E2E5B7A2D7B7D2E2E39423843569449C8691BEC768E16663C5F9ED737AE6CDDC6178C0837F6BB88DAA8356B02A700C776FC0F1091C1D16712FC075A011D5B5DEF7E46966E8B878B80DABCDF9683C49165FFB993A77CDE8600A1262200F3D3D5315DF0FC4E2B3ACAA3943F142EC43D7B00400700
第二步:在winhex中取65h-71h一段数据ctrl+c后粘贴到密码输入框点确定完成秒破。(实例一)
实例二
526172211A0700CE997380000D00000000000000395B7A2D7B7D2E2ED417190FDC99688612D2B31773CD93FE082F30D3229C8F77F51B936AD003E65AADF605471FA4ED0E3655748BCC8F5FA5BFDE4651275A2AA306CB7999C579C249C5AF56A0D3744BD7A695586FEF9FB1AB146CA80DED886936DE3AB003EC44215BA8497E4C1A974D45810C8F1277726881548FBAB842BCF9E17B815C116260ADFEB9151DF97C6F93A673629691B767F883950018B7DE7C0D86FFF04A10905E32BD1DB015B709A298DB8D2C42DF23A131F2AD999AA3BB2316F031C5115c179a2f877a41393761683939
选中14h-1bh一段数据ctrl+c后粘贴到密码输入框中后面再加上dch-e3h处的ASCII字符,确定后即秒破了!信不信由你!

轩辕小聪的分析:
了楼主给的文件,再学习一下RAR文件头结构,算是明白楼主的意思:
RAR加密的原理,是将UNICODE格式的密码,与随机生成的一个8字节的SALT连在一起,根据它生成AES算法的密钥来进行加密。
而加密后的RAR中,除了加密后的原压缩内容之外,文件头结构还保存了这个SALT值用于解密。
原则上SALT的生成过程跟用户输入时的密码一点关系都没有,因此它本来不保存关于密码的显式信息,但是我们可以对WINRAR程序进行Patch,使SALT跟密码发生直接联系,从而使这个SALT成为潜在的“后门”。
由于SALT只有8个字节,所以对于8个字节以内的密码,可以直接保存在SALT中(或者简单的XOR一下或其他,反正可以用很容易的可逆的算法处理)。
那么密码超出8字节怎么办?这里楼主分为两种方式处理,分别是实例一和实例二。

实例一应该是利用了把文件头的HEAD_SIZE字段改大,这样文件头多出来的地方(WINRAR读取文件头时是跳过这部分的)就可以保存密码8字节以后的内容。实例一中的65h-6ch内容就是SALT,而6dh-71h就属于把HEAD_SIZE改大之后多出来的部分了。

但是实例一这种方法应用的前提是文件头没加密。如果文件头被加密(这时MAIN_HEAD的HEAD_FLAGS包含0x0080),那么MAIN_HEAD后面紧跟着的就是SALT(实例二的14h-1bh内容),SALT后面则是被加密的所有内容(包括文件头)。那么怎么把密码8字节以后部分搞进去?实例二的做法,我猜是因为加密过程是16字节为一组,加密后的内容也应该是16字节的倍数,所以解密时也以16字节为单位读取,当文件内容最后跟着一段小于16字节的数据时,WINRAR解密时直接无视这段数据。于是就可以把密码的后半部分放在文件最后(但是不能超过16字节),这样用这种方法可以保存不超过23字节的密码。

按照这个思路,我调试了一下我电脑上的WINRAR 3.70。
我只考虑密码不超过8字节,实际上问题就是找到WINRAR程序操作压缩的过程,在程序把SALT和密码连在一起之前,把SALT改为和密码一样,这样压缩出来的就是那样的文件了。超过8字节的代码只要按照上述思路自己修改生成后的RAR就可以了。

具体步骤:

创建一个新RAR文件,OD载入WINRAR程序,F9跑起来,打开这个空RAR文件,往里面添加一个文件,这时WINRAR程序会弹出添加文件到压缩文件的对话框。第一步要做的是在这个对话框保存我们输入的密码时断下。

怎么定位这个并不难,因为当在添加文件的对话框中高级选项卡点击“设置密码”的时候,会弹出输入密码的框,就从拦截这个对话框入手,程序弹出这个子对话框采用的是DialogBoxParamA,只要在这个API上下断就可以断下:

77D3B144 > 8BFF mov edi, edi ; WinRAR.004BB5D0

看堆栈:

0012A404 00482A3B /CALL 到 DialogBoxParamA 来自 WinRAR.00482A36
0012A408 00400000 |hInst = 00400000
0012A40C 004AC73C |pTemplate = "GETPASSWORD2"
0012A410 00040714 |hOwner = 00040714 ('高级',class='#32770',parent=001B06FA)
0012A414 0047D78A |DlgProc = WinRAR.0047D78A
0012A418 0012A428 \lParam = 0012A428

进到调用来源00482A36,看一下调用过程:

00482A1E |. 8D95 7CFFFFFF lea edx, dword ptr [ebp-84]
00482A24 |. 52 push edx ; /lParam
00482A25 |. 68 8AD74700 push 0047D78A ; |DlgProc = WinRAR.0047D78A
00482A2A |. 53 push ebx ; |hOwner
00482A2B |. 68 3CC74A00 push 004AC73C ; |pTemplate = "GETPASSWORD2"
00482A30 |. FF35 48214B00 push dword ptr [4B2148] ; |hInst = 00400000
00482A36 |. E8 95F10100 call <jmp.&USER32.DialogBoxParamA> ; \DialogBoxParamA
00482A3B |. 85C0 test eax, eax
00482A3D |. 0F95C1 setne cl
00482A40 |. 83E1 01 and ecx, 1
00482A43 |. 8BD9 mov ebx, ecx
00482A45 |. 84DB test bl, bl
00482A47 |. 74 15 je short 00482A5E
00482A49 |. 8D85 7CFFFFFF lea eax, dword ptr [ebp-84]
00482A4F |. 50 push eax
00482A50 |. 57 push edi
00482A51 |. E8 2A520100 call 00497C80 ; CopyString

由于对话框调用完后紧接着是一个字符串拷贝,因此可以推断传送给密码对话框的这个lParam参数就是让密码对话框保存密码的位置,对话框关闭之后又将密码Copy到一个全局数据区保存起来(对对话框窗口过程的调试证明这个推测是正确的),而此时的edi就是保存密码的全局数据区地址,这个值是004BB5D0。

在call DialogBoxParamA的下一句下断,F9让密码对话框出现,填写密码(不要超过8字节),按确定,断下了,然后F8观察CopyString的参数证实上面的推测是正确的。
现在仍然在对话框的窗口过程中:

00446AB4 |. E8 27BF0300 call 004829E0
00446AB9 |. 84C0 test al, al
00446ABB |. 74 47 je short 00446B04
00446ABD |. B8 E6000000 mov eax, 0E6
00446AC2 |. 803D D0B54B00>cmp byte ptr [4BB5D0], 0
00446AC9 |. 75 05 jnz short 00446AD0
00446ACB |. 05 F8020000 add eax, 2F8
00446AD0 |> E8 FBBAFCFF call 004125D0

显然后续代码证实了4BB5D0开始的全局数据区的确是在存取密码的。
于是下一步在WINRAR程序从这里取出密码进行加密操作的时候把它断下。

对4BB5D1下硬件访问断点(为什么要下在4BB5D1而不直接在4BB5D0,那是因为如果下在4BB5D0,将会断到大量的cmp byte ptr [4BB5D0], 0,而只有开始读取4BB5D1处才能说明是真正的在读取其内容而不是单独地比较密码是否为空),F9跑起来,完成添加文件对话框的设置点确定关闭这个对话框,OD断下:

00497C53 |. 2BC3 |sub eax, ebx
00497C55 |. 75 26 |jnz short 00497C7D
00497C57 |. 84DB |test bl, bl
00497C59 |. 74 22 |je short 00497C7D
00497C5B |. 8A41 02 |mov al, byte ptr [ecx+2]
00497C5E |. 8A5A 02 |mov bl, byte ptr [edx+2]

这是一个CompareString,Ctrl+F9

0041139D |> /FF75 FC /push dword ptr [ebp-4]
004113A0 |. |69C3 AA000000 |imul eax, ebx, 0AA
004113A6 |. |81C0 303F4A00 |add eax, 004A3F30 ; ASCII ".,];/[]"
004113AC |. |50 |push eax
004113AD |. |E8 82680800 |call 00497C34
004113B2 |. |83C4 08 |add esp, 8 ; 到这里
004113B5 |. |85C0 |test eax, eax
004113B7 |. |0F85 8F000000 |jnz 0041144C

在一个循环里,在下面F4跳出循环:

00411456 |> \807D EB 00 cmp byte ptr [ebp-15], 0
0041145A |. 0F85 0B020000 jnz 0041166B
00411460 |. 8D95 60FEFFFF lea edx, dword ptr [ebp-1A0] ; 保存UNICODE形式的密码
00411466 |. B9 7F000000 mov ecx, 7F
0041146B |. 8B45 FC mov eax, dword ptr [ebp-4] ; 004BB5D0,密码字符串指针
0041146E |. E8 41F0FFFF call 004104B4 ; ANSI转换成UNICODE
00411473 |. 66:C785 5EFFF>mov word ptr [ebp-A2], 0
0041147C |. 8D95 58FDFFFF lea edx, dword ptr [ebp-2A8]
00411482 |. 8D85 60FEFFFF lea eax, dword ptr [ebp-1A0]
00411488 |. B9 00000001 mov ecx, 1000000
0041148D |. E8 42F0FFFF call 004104D4 ; string copy
00411492 |. 8D85 60FEFFFF lea eax, dword ptr [ebp-1A0]
00411498 |. E8 CBF2FFFF call 00410768 ; 取UNICODE字符串长度
0041149D |. 03C0 add eax, eax
0041149F |. 85FF test edi, edi
004114A1 |. 8945 E4 mov dword ptr [ebp-1C], eax
004114A4 |. 74 19 je short 004114BF
004114A6 |. 6A 08 push 8
004114A8 |. 57 push edi
004114A9 |. 8D95 58FDFFFF lea edx, dword ptr [ebp-2A8]
004114AF |. 0355 E4 add edx, dword ptr [ebp-1C]
004114B2 |. 52 push edx
004114B3 |. E8 D8650800 call 00497A90 ; memcpy?
004114B8 |. 83C4 0C add esp, 0C
004114BB |. 8345 E4 08 add dword ptr [ebp-1C], 8

上面这段代码就很清楚了,就是把密码变为UNICODE并把SALT加在后面。因此此时的edi就是保存SALT的指针,数据窗口中观察:
02A32D6C EC D4 D1 4B 47 60 0F 6E 煸袺G`n?.

如果此时不修改这个SALT值,让WINRAR完成整个过程,再在RAR文件中观察文件头结构会发现SALT的确是这个内容。

现在在这里直接把这个位置用密码字符串代替(为了学习楼主,我把密码同样搞成几个标点符号):

02A32D6C 2E 2C 5D 3B 2F 5B 5D 00 .,];/[]

解除断点让WINRAR完成操作。

生成的RAR文件内容:
526172211A0700CF907300000D000000000000003A917424843000200000000800000002FA9EF760CB28553B1D3308002000000073686F772E7478742E2C5D3B2F5B5D007FAA3C3EB323E42592EE85B9EC80F2BAA3389C0C5733224118F8A872B9086EF3C43D7B00400700

WINHEX打开文件,在文件3ch-43h处正是SALT值,也正是我设的密码(只有7个字节,所以最后是00):
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F

00000030 2E 2C 5D 3B .,];
00000040 2F 5B 5D 00 /[].

至此我成功在WINRAR3.70中通过OD调试WINRAR程序实践了楼主所说的内容,显然只剩下把这个过程转化成patch就可以实用化了。
级别: 超级版主
[棋中红钻5级]发帖数量≥2000篇 [棋中黄钻5级]金币数量≥10000枚 [棋中蓝钻3级]乐币数量≥100枚 [棋中粉钻2级]贡献值数量≥5点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
4985
金币
19907
威望
6
贡献值
9
乐币
293
主题
139

只看该作者 一楼  发表于: 2013-10-07
你都把重要部份的破解方法都兜了出来,你叫正版软件商怎样吃饭呀!
级别: 上等兵
[棋中红钻1级]发帖数量≥10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
12
金币
2
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 二楼  发表于: 2017-02-03
这 我晕字啊  完全看不懂
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
179
金币
-47
威望
1
贡献值
0
乐币
0
主题
6
只看该作者 三楼  发表于: 2020-05-30
tra loi
Tôi choáng váng. Tôi không thể hiểu nó cả
级别: 列兵
[未点亮棋中红钻]发帖数量<10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
1
金币
11
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 4楼 发表于: 2020-10-29




























































































[img]https://i1.100024.xyz/i/2020/10/19/twjgdt.png[/img]

[img]https://i1.100024.xyz/i/2020/10/19/txpuck.png[/img]

[img]https://i1.100024.xyz/i/2020/10/19/tywjc9.png[/img]

[img]https://i1.100024.xyz/i/2020/10/19/u0c4ta.png[/img]

[img]https://i1.100024.xyz/i/2020/10/19/u1fh4j.png[/img]

[img]https://i1.100024.xyz/i/2020/10/19/u2j8di.png[/img]



[img]https://i1.100024.xyz/i/2020/10/19/u53ah6.png[/img]

[img]https://i1.100024.xyz/i/2020/10/19/u75o3q.png[/img]






{2020年10月10日}2020冬季,全球 崩 盘,三 峡 溃 坝



{2020卝年10月10曰}2020冬季,全球 崩 盘,三 峡 溃 坝







作者 : 2020再造共卝和

时间:  2020卝年10月10曰07:17:00     星期六      农历八月廿四

           上正宗指 3272.О8点    恒指 2411⒐13卝点     道指28586.90点





突然的,全球 金 融 市 场 连 续 跌 停 大 崩 盘,

没有什么,谁也没想到啊,友邦惊诧,黑 天 鹅 白天鹅 哥斯拉,

一切都是,蓄 谋 已 久 的精心策划。zéi 喊捉zéi。





{一} 今时今曰{庚子2020卝年10月10曰} :

今时今曰,我预.测,人类有始.以来最大的金.融.崩 盘 ,

未来三个月之内,即,2020卝年11月、12月、2021卝年元月,将 震 撼 呈 现。

---- 中卝囯股市、全球股市、全球金融市场 连序跌婷大崩 盘 , 大盘连

       续或稍稍间断30/40多个跌亭板,人类有.史以来最大的金融.嗨啸。

---- 闰四月,吃树叶 。

       鼠耗出头年,高低多偏颇;更看三冬里,山头起墓田。

股市、汇市、债市、期货商品、可能还有楼卝市,全部连卝锁式彻底崩溃。

黄 金 价 格 应 该 避 险 bào 涨。

忽 然 之 间 ,天 塌 了。{ 全 球 闪 崩 }

十 八 级 金融大 地.震,史无前例地球崩卝盘,要 多 惨 有 多惨,世界沫曰。

金融天坑,股市雪崩、铡 dāo 斩 首 、bào 雷 溃 坝 ,希 特 勒 巴巴罗萨

金融闪击战 。画 皮 ,终 于 撕 去 了 。

道琼斯,憋了11年的一泡shǐ,庚子2020冬季,总算找到了,公共厕所。

缠中说禅14年之前预卝言的,2019毁miè性下跌。{有壹年误差}

已故“周期天王”周金涛的,“2018年到2019年是康波周期的万卝劫卝不卝复之年”。

以金.融战.争为表现形式的,第 叁 次.世.戒.大.战,全面 bào.发。

---- 一切友好互访探讨分歧,新型大囯关系,都是伪装梦幻 烟物弹,哄 洒 子。

       战 争 现在才刚刚开始,三至五年有个结果,就不错了。

       天王山之战 ;安史之乱。 大 气 候 小 气 候 。

---- 庄家航母集群,发动了总冲锋,终于 动 手 了,老大{ 暗 黑 帝卝囯 }岂容

      老 贰 一步步做大 :咬 牙 切 齿寝食难安笑脸。当年是苏联,今天,轮到

      中卝囯。

亚 投 行 、一 带 一 路 、货币互换 ……

美 元 位置往哪里摆 ?? 扼 shā 于 摇 篮 。

新型大囯关系,永远友好和平 。凭什么 ??不但天真幼稚,而且,鱼惷。

---- 滔天巨浪,世 界 末 曰 感叹 niào失jìn。

       殊不知,这仅仅是,哥斯拉的一只巨爪,而已。

       更大 恐 怖颤 栗,还在 2021、2022、2023年。



憋 了十年了,无论中外股市,从未有过,像样的bào跌,这回,就一次跌个够。

最 危 险的时刻 骤 然降 临,尖 dāo 暗 xí,一 剑 封 喉 。

从不,预 先 通 知 。



美囯囯务卿麦克·蓬佩奥(Michael Pompeo)周四(2020卝年⒎23曰)在加

州的理查德·尼克松总统图书馆发表主题为“共卝产主卝义中卝囯和自卝由世界的未来”

的演讲。

这次演讲代卝表美囯对huázhèng卝策的根本转型。

“我们过去与中卝囯(中卝共)盲目接卝触的模式已失败 。如川普总统明确表示的

那样,我们需要一个保护美经济和生活方式的战略。”蓬佩奥说,“自卝由世

界必须战胜这一新的bào卝zhèng。”

在蓬佩奥演讲前,白宫囯卝安顾问奥布莱恩的对huá演讲重点在共卝产主卝义意识形

态,联卝邦调卝查jú卝长雷的演讲重点在中卝共间谍,司fǎ部卝长巴尔的演讲着重在中

共的经济侵略。

蓬佩奥表示,自卝由囯卝家必须努力捍卫自卝由。

“这世界上的自卝由囯卝家必须通卝过更加有创造性和更加坚决的方式,去促成共

产dǎng改变其行为,因为北卝京的行为威胁我们的人卝民和我们的繁荣。”他说。

“也许是时候跟志同道合的囯卝家一起组建一个新民卝主囯卝家联卝盟。”他说,

“如果指导得当,联合囯、北约、七囯集卝团、二十囯集卝团,我们集卝合经济、

外交和jun事力量确信足以应付这一挑战。”

蓬佩奥表示,他“相信”可以成功地迫使北卝京的行为发生改变,因为美囯以

前曾这样做过——1991年促使苏联解卝体。

他说:“如果我们现在屈膝,我们孩子的孩子可能会受到共卝产dǎng的摆卝布。”

“改变中卝囯共卝产dǎng的行为不能只是中卝囯人卝民自己的任务。自卝由囯卝家有工作要

做,去捍卫自卝由。”他说,“我有信念,我们可以办到。我有信念,因为我

们以前就做到过。”





正如,建卝囯以来的无数次运卝动,昏天黑地,其本质是泉卝利斗卝争,泉卝利争夺

一样;

本次,即将展现的大 动 乱、大 动 荡、金融大海啸、金融大地卝震,在一切

天 翻地覆、装疯mài洒、眼huā缭乱、救卝市救囯救yín民义正言辞的,背后;

是,又一次,剪羊máo 开始了,进行着。

是,这个地球的真正主人,无尽tān婪的最顶级财富精英,对广大庶卝民的

剔 骨 掠 夺 。

最热的年份,最冷的人心。五面怪,要大小通吃。

不要又一次,被mài了,还替人家数钞票。



祸不单行,今时今曰,我断言,

2020卝年11月、12月、2021卝年元月发生的全球 崩 盘 将触发,人类有始.以来

最大.人.祸 ---- 三.侠.溃.坝 ;

或许还有,其它 水 库 大 坝 的,彻 底 溃 。

一 片 汪 yáng ,一夜,一夜之间,中 囯 淹 sǐ 2000万 人。

一 片 汪 yáng ,一夜,一夜之间,中 囯 淹 sǐ 2000万 人。

我表述的,够不够,清楚 ??

我知道,“全 球 最 大 崩 盘”将触发“三 峡 溃 坝”,这一论断,几乎令

所有人嗤之以鼻。


快速回复

限56 字节
请不要在回贴只采用字母:“ PP、asdfhjkl、HAO、OK、ddddddd ......”。  请不要在回贴过于简单的内容:“不错、顶、支持、厉害、呵呵、靠、晕........”
 
验证问题: 本站网址是?不带http://
上一个 下一个