首页
社区
课程
招聘
无狗脱彩虹3.x(配套脚本)
发表于: 2006-8-28 21:37 27168

无狗脱彩虹3.x(配套脚本)

2006-8-28 21:37
27168
文章标题:脚本获得彩虹加密狗的eax密码
软件名称:Win计算器
使用工具:脚本插件
作者声明:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
软件下载地址:http://bbs.pediy.com/showthread.php?s=&threadid=30893

原理是彩虹加密狗是将未加密的程序OEP处的4个字节,和加密后原OEP处4个字节进行异或运算

你肯定问我未加密那四个字节怎么得到,现在特定语言写的程序那四个字节一般都是不变的,例如VC6.0 55,8B,EC,6A
至于vb由于第一个是push xxxxxx,这个地址是一个字符串,不同程序编译时候这个地址可能不同,所以四个字节不能确定(也就是不是固定的),了解vb的高手,帮个忙。

var temp
gpa "ExitProcess", "kernel32.dll" //没发现狗,不论有没有提示,最终都调用ExitProcess函数
bp $RESULT //对ExitProcess下断
run//运行程序
mov temp,[esp]//[esp]指向返回地址
bc $RESULT//取消断点
mov eip,temp//把eip修改为返回地址,主要用于等下向下搜索特征码
find eip,#595A5F5EC9#//特征码
cmp $RESULT,0//没搜索到跳到error
je error
mov eip,$RESULT+5//eip指向特征码开始处的下5个字节,jmp oep
sto//单步,到oep
ask "请输入各类编程语言在OEP处特定的机器码,如何判断为何语言靠自己,嘿嘿!!!)"
cmp $RESULT_1,4
jne inputerror
rev $RESULT//反向用户输入的
mov temp,[eip]//取加密后oep处的四个字节和用户输入的四个字节进行异步或运算
xor temp,$RESULT//将加密后oep处的四个字节和用户输入的四个字节进行异步或运算
WRT "dump.txt",temp//保存运算结果
msg "脚本在目录下生成一个dump.txt文件,即为eax的密码值"
ret

inputerror:
msg "您没有输入4字节机器码,脚本即将终止"
ret

error:
msg "Error,无法找到特征码,估计不是彩虹狗壳或者该狗壳版本大于等于4.0"
ret

好了,有了这个脚本,可以方便算出程序用来解码的密码了。
我们现在拿ynwtjhvtk上传的计算器来开个刀。
先运行下脚本,在脚本弹出的对话框中要求输入数据,由于是win自带的计算器,什么语言就不用说了,原始的oep处的字节是6A7068E0(这个比较特殊,我在这里就偷个懒,至于怎么判断程序是什么语言写的,相信大家方法比我多的多),OK,继续
此时脚本产生一文件里面记录了在eax处的密码,并记录下此时eip的值,呵呵,其实就是oep,现在是乱码由于没有正确解码,等下就清晰了,把生成的文件先放一边等下用到。

OK,现在重新载入程序载入来到
01031FAC > $  60            PUSHAD                                   ;  (initial cpu selection)
01031FAD   $  55            PUSH EBP
01031FAE   .  8BEC          MOV EBP,ESP
01031FB0   .  81EC 54030000 SUB ESP,354
01031FB6   .  53            PUSH EBX
01031FB7   .  56            PUSH ESI
01031FB8   .  57            PUSH EDI
01031FB9   .  C685 F4FEFFFF>MOV BYTE PTR SS:[EBP-10C],0
01031FC0   .  C685 F5FEFFFF>MOV BYTE PTR SS:[EBP-10B],0
01031FC7   .  C685 F6FEFFFF>MOV BYTE PTR SS:[EBP-10A],0
01031FCE   .  C685 F7FEFFFF>MOV BYTE PTR SS:[EBP-109],0
01031FD5   .  8DBD F8FEFFFF LEA EDI,DWORD PTR SS:[EBP-108]
01031FDB   .  33C0          XOR EAX,EAX
01031FDD   .  B9 3F000000   MOV ECX,3F

下断bp ExitProcess(因为他这个做的没有提示,如果有提示也可以下断bp MessageBox)

堆栈内容如下:
0012FCA8   01022E3A  /CALL 到 ExitProcess 来自 加壳后CA.01022E37
0012FCAC   00000001  \ExitCode = 1
0012FCB0   00000000
0012FCB4   7FFDE000
0012FCB8   0012FFB0

Ctrl+G 01022E3A

01022DC1   /0F84 84000000   JE 加壳后CA.01022E4B                        ;跳转,不然就over
01022DC7   |A1 38D00201     MOV EAX,DWORD PTR DS:[102D038]
01022DCC   |48              DEC EAX
01022DCD   |8BC8            MOV ECX,EAX
01022DCF   |8D0480          LEA EAX,DWORD PTR DS:[EAX+EAX*4]
01022DD2   |8D0480          LEA EAX,DWORD PTR DS:[EAX+EAX*4]
01022DD5   |8D0441          LEA EAX,DWORD PTR DS:[ECX+EAX*2]
01022DD8   |8D0445 10C00201 LEA EAX,DWORD PTR DS:[EAX*2+102C010]
01022DDF   |05 14060000     ADD EAX,614
01022DE4   |8985 ACFEFFFF   MOV DWORD PTR SS:[EBP-154],EAX
01022DEA   |833D E2C50201 0>CMP DWORD PTR DS:[102C5E2],0
01022DF1   |74 27           JE SHORT 加壳后CA.01022E1A
01022DF3   |A1 5CCB0201     MOV EAX,DWORD PTR DS:[102CB5C]
01022DF8   |8985 50FDFFFF   MOV DWORD PTR SS:[EBP-2B0],EAX
01022DFE   |6A 40           PUSH 40
01022E00   |B8 10C00201     MOV EAX,加壳后CA.0102C010
01022E05   |05 D6050000     ADD EAX,5D6
01022E0A   |50              PUSH EAX
01022E0B   |8B85 ACFEFFFF   MOV EAX,DWORD PTR SS:[EBP-154]
01022E11   |50              PUSH EAX
01022E12   |6A 00           PUSH 0
01022E14   |FF95 50FDFFFF   CALL DWORD PTR SS:[EBP-2B0]
01022E1A   |C705 40CB0201 0>MOV DWORD PTR DS:[102CB40],1
01022E24   |833D 40D00201 0>CMP DWORD PTR DS:[102D040],0
01022E2B   |74 0F           JE SHORT 加壳后CA.01022E3C
01022E2D   |A1 64CB0201     MOV EAX,DWORD PTR DS:[102CB64]
01022E32   |8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
01022E35   |6A 01           PUSH 1
01022E37   |FF55 FC         CALL DWORD PTR SS:[EBP-4]
01022E3A   |EB 0F           JMP SHORT 加壳后CA.01022E4B
01022E3C   |6A 01           PUSH 1
01022E3E   |FF15 F0F10201   CALL DWORD PTR DS:[102F1F0]              ; kernel32.GetCurrentProcess
01022E44   |50              PUSH EAX
01022E45   |FF15 F4F10201   CALL DWORD PTR DS:[102F1F4]              ; kernel32.TerminateProcess
01022E4B   \A1 3ECA0201     MOV EAX,DWORD PTR DS:[102CA3E]
01022E50    3305 8CC00201   XOR EAX,DWORD PTR DS:[102C08C]
01022E56    A3 4CE00201     MOV DWORD PTR DS:[102E04C],EAX
01022E5B    A1 4CE00201     MOV EAX,DWORD PTR DS:[102E04C]
01022E60    A3 C6C20201     MOV DWORD PTR DS:[102C2C6],EAX
01022E65    8D85 84FEFFFF   LEA EAX,DWORD PTR SS:[EBP-17C]
01022E6B    A3 58E00201     MOV DWORD PTR DS:[102E058],EAX
01022E70    C705 54E00201 0>MOV DWORD PTR DS:[102E054],0
01022E7A    C705 5CE00201 0>MOV DWORD PTR DS:[102E05C],8
01022E84    E8 0C320000     CALL 加壳后CA.01026095
01022E89    8985 ECFEFFFF   MOV DWORD PTR SS:[EBP-114],EAX
01022E8F    83BD ECFEFFFF 0>CMP DWORD PTR SS:[EBP-114],0
01022E96    75 12           JNZ SHORT 加壳后CA.01022EAA  //不让他跳,否则over
01022E98    A1 36CA0201     MOV EAX,DWORD PTR DS:[102CA36]
01022E9D    3385 85FEFFFF   XOR EAX,DWORD PTR SS:[EBP-17B]
01022EA3    A3 3ACA0201     MOV DWORD PTR DS:[102CA3A],EAX //eax值放的就是关键的密码了,如果错误就不能正确解码
01022EA8    EB 05           JMP SHORT 加壳后CA.01022EAF
01022EAA    E9 47040000     JMP 加壳后CA.010232F6
01022EAF  ^ E9 B8F4FFFF     JMP 加壳后CA.0102236C

好的,重新加载程序,对01022DC1下断,如上提示,来到
01022EA3    A3 3ACA0201     MOV DWORD PTR DS:[102CA3A],EAX //eax值放的就是关键的密码了,如果错误就不能正确解码
呵呵,打开刚才脚本生成的密码E893A7B3
此时需要把E8放到最后,至于什么原因我也不懂正确的密码是(有时候没有乱,例如vb写的程序,他次序就是正确的vc7写的,要把换下首字节到尾部,反正最多也只不过是12种情况了,嘿嘿,这里就麻烦大家了,我又把vc和vb归纳出来了):93A7B3E8

刚才说到,来到01022EA3这一行,修改下eax值为93A7B3E8,OK,记得刚才的记录下了oep吗?嘿嘿,现在直接Ctrl+G到oep去F4,看到什么
01012475    6A 70           PUSH 70
01012477    68 E0150001     PUSH 加壳后CA.010015E0
0101247C    E8 47030000     CALL 加壳后CA.010127C8
01012481    33DB            XOR EBX,EBX
01012483    53              PUSH EBX
01012484    8B3D B8E00201   MOV EDI,DWORD PTR DS:[102E0B8]           ; 加壳后CA.0102BE37
0101248A    FFD7            CALL EDI
0101248C    66:8138 4D5A    CMP WORD PTR DS:[EAX],5A4D
01012491    75 1F           JNZ SHORT 加壳后CA.010124B2
01012493    8B48 3C         MOV ECX,DWORD PTR DS:[EAX+3C]
01012496    03C8            ADD ECX,EAX
01012498    8139 50450000   CMP DWORD PTR DS:[ECX],4550
0101249E    75 12           JNZ SHORT 加壳后CA.010124B2
010124A0    0FB741 18       MOVZX EAX,WORD PTR DS:[ECX+18]
010124A4    3D 0B010000     CMP EAX,10B
010124A9    74 1F           JE SHORT 加壳后CA.010124CA
010124AB    3D 0B020000     CMP EAX,20B
010124B0    74 05           JE SHORT 加壳后CA.010124B7
010124B2    895D E4         MOV DWORD PTR SS:[EBP-1C],EBX
010124B5    EB 27           JMP SHORT 加壳后CA.010124DE
010124B7    83B9 84000000 0>CMP DWORD PTR DS:[ECX+84],0E
010124BE  ^ 76 F2           JBE SHORT 加壳后CA.010124B2
010124C0    33C0            XOR EAX,EAX

马上dump下,修复下IAT,运行下,发现不能运行
用OD载入,发现程序被偷的地方很多,每调用一次api壳都会得到一次控制权
可能是stolen code代码中的anti
下断bp ExitProcess
堆栈如下:
0012FD64   0102138E  /CALL 到 ExitProcess 来自 dumped_.0102138B
0012FD68   00000001  \ExitCode = 1
0012FD6C   0102BE37  dumped_.0102BE37
0012FD70   FFFFFFFF

Ctrl+G来到0102138E
01021378    817D F4 0301000>CMP DWORD PTR SS:[EBP-C],103
0102137F    74 0D           JE SHORT dumped_.0102138E    //anti改为jmp
01021381    A1 64CB0201     MOV EAX,DWORD PTR DS:[102CB64]
01021386    8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
01021389    6A 01           PUSH 1
0102138B    FF55 FC         CALL DWORD PTR SS:[EBP-4]
0102138E    7A 03           JPE SHORT dumped_.01021393
01021390    7B 01           JPO SHORT dumped_.01021393
01021392    B6 FF           MOV DH,0FF
01021394    15 94F10201     ADC EAX,dumped_.0102F194
01021399    8945 D8         MOV DWORD PTR SS:[EBP-28],EAX
0102139C    833D C4DF0201 0>CMP DWORD PTR DS:[102DFC4],0
将je改为jmp去掉anti,保存文件,OK,软件正常运行,收工。


[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (82)
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
2
上传一份脱狗的
由于这份不能跨平台,没有正确处理好api函数地址导致,所以在你们的机子可能不能运行,下面有一份解决问题的,欢迎大家测试。
2006-8-28 22:17
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
3
顺便带上脚本
上传的附件:
2006-8-28 22:20
0
雪    币: 3511
活跃值: (4037)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
4
最初由 kangaroo 发布
上传一份脱狗的


脱壳后的文件在XP+SP2 CN上运行不起来。

另外,你的脚本里的语言特征码输入了怎么不对?

用PEID看到是60,55,8B,EC

输入后计算出来E47082B9的不对啊。
2006-8-28 22:26
0
雪    币: 209
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵.不错不错.终于研究出来了.呵呵.
2006-8-28 22:34
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
6
最初由 china 发布
脱壳后的文件在XP+SP2 CN上运行不起来。

另外,你的脚本里的语言特征码输入了怎么不对?

用PEID看到是60,55,8B,EC
........

你是说计算器程序吗?如果是,是这个值6A7068E0

Sp2运行不起来?我机子就是sp2的啊!!
2006-8-28 22:42
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
7
China可能理解错了,程序需要用到ep处的值是原程序的,还没加密过的,此处的值和加密后oep(第一次解码的中间码)处的值进行异或(这个值其实壳代码写入的,需要解码后才能看到,什么时候他解码了呢?就刚才那个bp ExitProcess后原始程序的oep处已经解码,不过是中间码,需要eax的正确值再次解码。呵呵)
先声明点,壳先后两次对oep进行解码。第一次是中间码,第二次才是正确代码。
2006-8-28 22:46
0
雪    币: 3511
活跃值: (4037)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
8
最初由 kangaroo 发布
你是说计算器程序吗?如果是,是这个值6A7068E0

Sp2运行不起来?我机子就是sp2的啊!!


运行不起来,我用那个帖子里的计算器文件怎么提示版本高了?
2006-8-28 22:46
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
9
最初由 china 发布
运行不起来,我用那个帖子里的计算器文件怎么提示版本高了?

你下载下我上传的,看看运行的起来不?哪里提示版本高了,不理解?
2006-8-28 22:50
0
雪    币: 3511
活跃值: (4037)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
10
重新下了,好了。

你去狗的文件我这里运行不起来。

用你的脚本,输入特征码:6A7068E0计算得到:A593BFBB
2006-8-28 22:52
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
11
不好意思,由于我就对本机进行了测试,没考虑到其它机子,我在看看。
2006-8-28 22:57
0
雪    币: 3511
活跃值: (4037)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
12
感谢,学习ing。
2006-8-28 22:58
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
13
最初由 china 发布
感谢,学习ing。

感谢china的提醒,发现程序目前无法跨平台,已经确认是IAT问题,本人还在研究中,欢迎高手加入研究。
2006-8-28 23:21
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
14
问题胜利解决,目前下载已经是我解决完的最新版,欢迎大家测试。
再次感谢china
上传的附件:
2006-8-29 00:46
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
15
说下出错的原因,由于程序中有stolen code,进入stolen code后,退出stolen code返回的就是api地址,而stolen code早已经把api地址表填在了一张表上(这个程序在我的机子上dump下来的,当然这张表对应的api地址当然只能适应我的机子,导致)
解决方案:
当然解决方法很多,我这里用了一种就可能大家人为很差的方式,不过还是要现丑,嘿嘿!!

首先我用输入表重建工具,把这张表的api地址全部抓出来,然后放在程序尾部(也就是添加一个区段)做为输入表。
01021232    8B1B            MOV EBX,DWORD PTR DS:[EBX]
01021234    2BD8            SUB EBX,EAX
01021236    8B03            MOV EAX,DWORD PTR DS:[EBX]//此时的值还是指向在我机子上dump下来的那张表,而这张表是由外壳程序填冲的,但是外壳已经被我去掉了,意味着这张表,不会改变,如果不改变,那么这个程序也只能用在dump下来的机子,其它机子就不能用了,不同机子,不同版本,哪怕同一版本的Windows,api地址都有可能不一样。
01021238    8945 DC         MOV DWORD PTR SS:[EBP-24],EAX//这里的eax就是返回的api地址,暂时保存起来
//嘿嘿,来到这张表的地址:VA:102F08C Size:0x298
我的想法是在程序进到入口时候,把刚才保存的IAT表盖掉这张表,由于刚才的IAT表是用输入表重建工具建立的,由PE装载器装载地址,所以到不同机子这张IAT表中的api地址肯定不一样,只要我把他复制到这张本来应由外壳程序填冲(外壳被我去掉了),现在只能自己模拟外壳来填充,嘿嘿。
说干就干,加个区段,在oep处改代码如下
01012475 >- E9 864B0400     JMP 问题解决.01057000   //跳到,程序子代码处,模拟外壳程序填充这张表。
0101247A    90              NOP
0101247B    90              NOP
0101247C    E8 47030000     CALL 问题解决.010127C8
01012481    33DB            XOR EBX,EBX
01012483    53              PUSH EBX
01012484    8B3D B8E00201   MOV EDI,DWORD PTR DS:[102E0B8]           ; 问题解决.0102BE37
0101248A    FFD7            CALL EDI
0101248C    66:8138 4D5A    CMP WORD PTR DS:[EAX],5A4D
01012491    75 1F           JNZ SHORT 问题解决.010124B2
01012493    8B48 3C         MOV ECX,DWORD PTR DS:[EAX+3C]
01012496    03C8            ADD ECX,EAX

01057000    6A 70           PUSH 70  //保存原指令
01057002    68 E0150001     PUSH 问题解决.010015E0 //保存原指令
01057007    60              PUSHAD //保存堆栈
01057008    B9 98020000     MOV ECX,298 //IAT大小
0105700D    BF 8CF00201     MOV EDI,问题解决.0102F08C  //这张本由外壳程序填冲的表
01057012    BE 28520501     MOV ESI,<&shell32.ShellAboutW> //IAT表
01057017    F3:A4           REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]//呵呵,来个移花接木
01057019    61              POPAD
0105701A  - E9 5DB4FBFF     JMP 问题解决.0101247C //继续向下执行

在此在次感谢China对我的问题及时提出。
2006-8-29 01:05
0
雪    币: 216
活跃值: (2407)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
16
最初由 kangaroo 发布
问题胜利解决,目前下载已经是我解决完的最新版,欢迎大家测试。
再次感谢china

压缩包好像有问题。不知道是我网络问题还是咋的。。楼主能重新传个吗?
2006-8-29 01:53
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
17
已经解决,可以下载了
2006-8-29 02:02
0
雪    币: 216
活跃值: (2407)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
18
最初由 kangaroo 发布
问题胜利解决,目前下载已经是我解决完的最新版,欢迎大家测试。
再次感谢china

2003_sp1测试通过。。
学习中。。
2006-8-29 02:46
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
19
怎么都没人来测试啊
2006-8-29 11:30
0
雪    币: 300
活跃值: (39)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不知道怎么用!!
脚本用在那里呀?
2006-8-29 11:57
0
雪    币: 3511
活跃值: (4037)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
21
解决后的文件可以正常运行了。

脚本测试和你结果一样了。
2006-8-29 11:58
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
22
最初由 china 发布
解决后的文件可以正常运行了。

脚本测试和你结果一样了。

估计是你的脚本插件用错了!!!去看雪下载个1.47版本的。
2006-8-29 12:04
0
雪    币: 3511
活跃值: (4037)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
23
最初由 kangaroo 发布
估计是你的脚本插件用错了!!!去看雪下载个1.47版本的。


用了新的了,但是昨天同样的ollyscripts却不行。

再次感谢,学习了很多。

脚本对彩虹的软件狗适用,现在就是对软件语言程序的特征码没有简便的方法获取,我的想法是不管是正确还是错误的密码先脱出文件来,然后用PEID查看,不知道是否正确。
2006-8-29 12:16
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
24
vb的程序目前大体上可以得出答案了。
004014A4    68 4C1A4000     PUSH crackme.00401A4C
004014A9    E8 F0FFFFFF     CALL crackme.0040149E                    ; JMP 到 MSVBVM60.ThunRTMain
004014AE    0000            ADD BYTE PTR DS:[EAX],AL
004014B0    0000            ADD BYTE PTR DS:[EAX],AL
004014B2    0000            ADD BYTE PTR DS:[EAX],AL

众所周知上面是vb程序入口的特点,看到jmp ThunRTMain下面有很多0了吗?呵呵,我们的脚本运行到oep虽然没有正确解码,但是密码已经完全露出来,从004014AE-004014B1四个字节就是密码,适当的排序下。
技术这种大家没什么好笑话的,说出来大家一起讨论不就有结果了,正确的地方大家一起学习,不对的地方大家也会为你指出,望楼讲解下高见。

我先说下吧!!其实当初我就有想法在内存中肯定存在密码的。
后来发现规律不一定,所以也没提。
在程序弹出"没发现加密狗的地方"壳已经对原oep做了一次解码
此时dump下来,我会发现在紧接着pe文件头下面(狗壳一次解码的)很多和密码一样的,难而对于不同程序这些密码存在的地方又不一样(为什么会一样)其实道理很简单,狗壳会把在原oep处的一次解码和我们说的密码在次进行异或,得到正确的代码(二次解码)。那么正确代码中必然会有0吧,大家都知道 任何数异或上自身其结果肯定为,而代码中肯定非常多处0,所以必然在一次解码后,你dump下来的内存,里面有密码。不知是否有错,高手讲解下。
2006-8-29 12:43
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
25
上面的脚本适当改进了下,适用于vb,该脚本可以得到正确密码顺序,无需排序(只适用vb写的被彩虹加密的程序)。

下面脚本已更新,不好意思说错了,我又测试了一个vb程序,还是需要排序下,大家也帮忙测试下。

例如脚本得到C2BD9B3A
那么正确密码就是9B3AC2BD
总觉出规律是9肯定是开头(弄了四个密码都是9开头,我想不会这么巧,也希望大家多测试),A B C D假如C是9开头的,那么排列顺序就是C D A B
如果B是9开头的排列顺序就是B C D A
上传的附件:
2006-8-29 12:56
0
游客
登录 | 注册 方可回帖
返回
//