思远黑客游戏1.31源文件下载:
http://bbs1.pediy.com/showthread.php?t=59454
或
http://bbs.pediy.com/showthread.php?t=59454
==============================
说明:以下过关密码,可以在guanshu.ini中修改直接跳关。由于作者滥用花指令,几步一花,严重影响我贴代码分析的热情:(,故大都省略之。前八关按作者的意图没有采用OD分析。
技巧:易语言栏按钮事件入口,在OD中ALT+M在代码段下内存访问断点即可直接断到事件处理入口,以下就不另外说明了。
============================================================================
第一关:
495544622 作者的QQ号
第二关-----------------------------------------------------------------
过关密码:bb37e93cd6c66c31239123aa0529492e
答案:
我喜欢破解软件啊
看到字符串尾部的"==",可猜到是BASE64编码的,使用BASE64解码软件
第三关-----------------------------------------------------------------
过关密码:315ad4221077f62368e340939b684148
答案:
666666
看到32字节的16进制编码可以想到是MD5编码,6位数字可以使用小工具进行MD5穷举方法
第四关-----------------------------------------------------------------
过关密码:3fc70d0da8a7e21bb0e877040b783932
答案:
10001001011100100 (用计算器算啊)
第五关-----------------------------------------------------------------
过关密码:725b32cfae1cb0513c1e12403b90860c
答案:
使用WindowsEnabler激活按钮直接过
第六关-----------------------------------------------------------------
过关密码:8012db2862265ea4ef73e4b6adcb394d
答案:
19233ASGKDCY34566789ER6NTN
这个挺有意思,文件类型名改为.rar,网上转一个做法来:
1、首先找一个要隐藏文件的图片,假设名字为A.JPG,格式JPG
2、把要隐藏的文件用RAR压缩好,假设文件名为B.rar。
3、用16进制编辑器(UltraEdit)打开这2个文件。
4、把B.rar里的内容CTRL A 全选, CTRL C复制
5、切换到A.JPG的编辑界面,全是乱码,不管他,把鼠标输入点定位到文件末尾,CTRL V 粘帖,保存,完毕。
现在你可以双击打开已经处理过的A.JPG啦,怎么样?看上去还是那个图片吧,你再把JPG后缀名改成RAR,双击用WINRAR打开,哈哈,是我们藏起来的文件是吧!
第七关-----------------------------------------------------------------
过关密码:07a3edc41a31c3b9360062c2f8f9dc90
答案:
43g4rcfrdnydbrt65
rar文件的解压密码是“521”,使用rar文件密码爆破工具进行3位数字密码穷举。
第八关-----------------------------------------------------------------
过关密码:9620da521f4fab3982435cee29c5a1b5
答案:
fbhytmnmytm ily tu67854n45
rar文件的解压密码是“csy213521”,使用rar文件密码爆破工具进行带掩码的3位数字密码穷举。
第九关-----------------------------------------------------------------
过关密码:573b87010d949e017971ac09b6cf7218
答案:
548975432940753570320875jkskdskjchkl3wlkvwekhelhvkhwelkhc
使用OD跟过,明码比较
第十关-----------------------------------------------------------------
过关密码:8b59591d3ee0c49112c6f11b7482b0ed
答案:
101
110
000
(9组单选钮,每一组选上面的为0,选下面的为1)
方法:先全都选1,然后使用OD断到“确定”按钮的事件处理:
004928EE . 55 PUSH EBP ;确定按钮事件处理入口
004928EF . 8BEC MOV EBP,ESP
004928F1 . 81EC 4C000000 SUB ESP,4C
。。。。。。。。
00492916 > 837D FC 01 CMP DWORD PTR SS:[EBP-4],1
0049291A . 0F85 65010000 JNZ 黑客游戏.00492A85 ;跳走就over,这里没跳说明第1组选1正确
。。。。。。。。
00492948 > 837D F4 01 CMP DWORD PTR SS:[EBP-C],1
0049294C . 0F85 33010000 JNZ 黑客游戏.00492A85 ;这里要跳说明第2组选1错误,强制EIP为下一条指令继续
。。。。。。。。
00492972 > 837D EC 01 CMP DWORD PTR SS:[EBP-14],1
00492976 . 0F85 09010000 JNZ 黑客游戏.00492A85 ;这里没跳,正确
。。。。。。。。
0049299C > 837D E4 01 CMP DWORD PTR SS:[EBP-1C],1
004929A0 . 0F85 DF000000 JNZ 黑客游戏.00492A85 ;这里没跳,正确
。。。。。。。。
004929C7 > \837D DC 01 CMP DWORD PTR SS:[EBP-24],1
004929CB . 0F85 B4000000 JNZ 黑客游戏.00492A85 ;这里没跳,正确
。。。。。。。。
004929F8 . 837D D4 01 CMP DWORD PTR SS:[EBP-2C],1
004929FC . 0F85 83000000 JNZ 黑客游戏.00492A85 ;这里要跳,错误,强制EIP为下一条指令继续
。。。。。。。。
00492A22 . 837D CC 01 CMP DWORD PTR SS:[EBP-34],1
00492A26 . 0F85 59000000 JNZ 黑客游戏.00492A85 ;这里要跳,错误,强制EIP为下一条指令继续
。。。。。。。。
00492A4B > 837D C4 01 CMP DWORD PTR SS:[EBP-3C],1
00492A4F . 0F85 30000000 JNZ 黑客游戏.00492A85 ;这里要跳,错误,强制EIP为下一条指令继续
。。。。。。。。
00492A74 > 837D BC 01 CMP DWORD PTR SS:[EBP-44],1
00492A78 . 0F85 07000000 JNZ 黑客游戏.00492A85 ;这里要跳,错误,强制EIP为下一条指令继续
00492A7E . B8 01000000 MOV EAX,1
00492A83 . EB 02 JMP SHORT 黑客游戏.00492A87
00492A85 > 33C0 XOR EAX,EAX
00492A87 > E8 00000000 CALL 黑客游戏.00492A8C
00492A8C /$ 830424 06 ADD DWORD PTR SS:[ESP],6
00492A90 \. C3 RETN
以上代码处理掉了花指令,9个CMP对应9组单选框,根据全为1的试练码及以上跟踪的流程判断正确答案应为:101 110 000
第十一关-----------------------------------------------------------------
过关密码:01477517c963478645dbfeb59ca752e2
答案:
0 1 1 1
0 0 1 0
1 0 1 1
1 0 0 0
三个滑块值:5,2,0
解题方法:
OD断下“确定”按钮事件处理入口后:采用上一题的方法修改EIP避免完蛋走一遍,注意流程从第9个复选框开始条件反过来了:
00492E7C 55 PUSH EBP ;确定按钮事件处理入口
00492E7D 8BEC MOV EBP,ESP
00492E7F 81EC 08000000 SUB ESP,8
00492E85 6A FF PUSH -1
00492E87 6A 12 PUSH 12
00492E89 68 26050116 PUSH 16010526
00492E8E 68 25050152 PUSH 52010525
00492E93 E8 F1490000 CALL 黑客游戏.00497889
00492E98 83C4 10 ADD ESP,10
00492E9B EB 01 JMP SHORT 黑客游戏.00492E9E
00492E9E 85C0 TEST EAX,EAX
00492EA0 0F84 C5090000 JE 黑客游戏.0049386B ; 第1个复选框未勾选则跳走完蛋
。。。。。。。
。。。。。。。第2到8个复选框都是未勾选则跳走完蛋
。。。。。。。
00492FB2 /0F84 5E000000 JE 黑客游戏.00493016 ;从第9个复选框开始一直到第16个,条件都反过来了,不跳就完蛋
。。。。。。。
。。。。。。。
0049338B 837D FC 05 CMP DWORD PTR SS:[EBP-4],5 ;第1个滑块值与5比较
0049338F 0F85 4F020000 JNZ 黑客游戏.004935E4 ;不等则完蛋
。。。。。。。
004933B6 837D FC 02 CMP DWORD PTR SS:[EBP-4],2 ;第2个滑块值与2比较
004933BA 0F85 CD010000 JNZ 黑客游戏.0049358D ;不等则完蛋
。。。。。。。
004933E7 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ;第3个滑块值与0比较
004933EB 0F85 45010000 JNZ 黑客游戏.00493536 ;不等则完蛋
通过上面的流程分析:第1-8个复选框需要选上,第9-16个复选框不选,三个滑块值分别为:5,2,0
呵呵!别高兴得太早,这次可没有第十题的运气,第十题里作者没有打乱控件的顺序,程序的检验流程与控件的排列是一致的,而这里你按上面的分析结果却行不通,窗口界面上的复选框顺序是打乱了的,既不是窗口的排列顺序,也不是TAB键索引顺序。E语言的库函数没研究过,经过尝试找到一个地方:
krnln.fnr模块(E语言支持库)的:
10056ECF FF15 10270C10 CALL DWORD PTR DS:[<&USER32.IsWindow>] ; USER32.IsWindow
在此下断就可以获得每次读取的是哪一个窗口控件,它的唯一的一个参数就是当前正处理的窗口句柄,然后我使用Spy32工具向这个句柄发送一条WM_LBUTTONDOWN消息,就可以在界面中看到是哪一个复选框了。逐个处理后得到复选框顺序如下:
? 8 3 4
? ? 7 ?
6 ? 2 5
1 ? ? ?
只分析前8个复选框的位置就够了,因为前面我们知道了只有前8个复选框需要勾选。按上图钩上,在把滑块滑到5,2,0过关!
第十二关-----------------------------------------------------------------
过关密码:d7e49ef8801bfb491ef2f267dc6dc8a2
答案:“
roking”、“
rokingcsy.”
此关的答案不是固定的:第一个文本框随便输入,第二个文本框为第一个文本框的内容尾随“csy.”四个字母
此关简单OD跟一下就明白了。不过需要注意,每个文本框好像处理了键盘事件,这样在使用“访问中断”时要注意时机,应该先在两个文本框里填写完内容,等待按“确定”按钮时再下断,要不然一有键盘输入就断了。
第十三关-----------------------------------------------------------------
过关密码:5d6d7e892e13389508ed86271dac685b
答案:
1347648132 1349405880912
或者下面这组:
任意非数字字符串 -755936856
花指令太多,不出三五句就有花指令,不好帖代码,下面各关卡的具体代码分析过程就不写了,本关涉及到了浮点运算指令,这里是注册机算法(VB):
Private Sub Command1_Click()
Dim d1 As Double, d2 As Double
d1 = Val(Text1.Text)
d2 = d1 Xor 123456
d2 = d2 - 880403
d2 = d2 + 2519
d2 = d2 * 2004
d2 = d2 / 2
Text2.Text = d2
End Sub
第十四关-----------------------------------------------------------------
过关密码:6e8ac69682b27e06ccfd16edb6a163e9
答案:“确定”按钮隐藏了,使用spy32工具,先锁定“取消”按钮,再点“下一窗口”锁定“确定”按钮,然后使其可见即可。
但是十四关过关后并没有进入下一关,而且也没有更新.ini文件中的过关密码,是BUG?!不过通过手动修改过关密码就可以继续15关了。
第十五关-----------------------------------------------------------------
过关密码:be1701cc8db37c0fe6401c65519c4560
答案:
roking 18a32eeb8aa41fe0123
OD分析时发现中间有许多无关的干扰,包括从隐藏的文本框中取值和浮点运算等等。
注册机算法描述(VB语法):
设第一个文本框内容为s
s=s & "csy"
s=mid(MD5(s),9,16)
s=mid(MD5(s),9,16) '再来一次
注册码 = s & "123"
第十六关-----------------------------------------------------------------
过关密码:9119738c8e0853790eb9dfa6fbb75960
答案:(暂缺)
搞不定,是不是和日期时间有关??????
爆破法:
00494A27 837D F0 01 CMP DWORD PTR SS:[EBP-10],1
00494A2B 0F85 3F010000 JNZ 黑客游戏.00494B70 ;爆破点,NOP掉!!
第十七关-----------------------------------------------------------------
过关密码:889ca21a45e368ea4f795e6579e63c41
答案:
fdk4j354trkltrj54JJIHDF fdlsjdoawosjdx3434445543e
要点:使用spy32隐藏掉挡在前面的2个东东后,OD根踪,发现有2个隐藏文本框,使用spy32分别显示它们,第一个填上“fdk4j354trkltrj54”,第二个填上“lsjdoawosj”,然后再隐藏它们,再OD跟下去得到2个文本框中需要填写的内容。
第十八关-----------------------------------------------------------------
过关密码:4d750a0e315e8847ec5071849645d49e
答案:只要把绿色框里的“加油”改为“
Hfkvl;krevpm恭喜l,别灰心dfpld'kvm.”,同时进度条走到
0x1AEF(十进制的6895)处,此时点击“确定”按钮就可以过关。
这里方法有几个:
方法1、OD直接爆破:
00495338 837D F8 00 CMP DWORD PTR SS:[EBP-8],0 ;比较绿色框里的内容
0049533C 0F84 79010000 JE 黑客游戏.004954BB ;爆破点1,NOP掉
。。。。。。。。。。。。。
00495362 817D FC EF1A000>CMP DWORD PTR SS:[EBP-4],1AEF ;比较进度条的值
00495369 0F85 47010000 JNZ 黑客游戏.004954B6 ;爆破点2,NOP掉
方法2、SPY工具或自写小程序向绿色框发送WM_SETTEXT消息修改文本内容,向进度条发送PBM_SETPOS消息改变值,然后再点“确定”
方法三、用CheatEngine或winHEX等跟踪修改内存(我没有去试)
第十九关------------------------------------------------------------------
过关密码:4154adf5d0cd7e3a4d7c05a6ddd08a7a
答案:这一关又照搬第17关的东西,没趣:(只不过多加了n多的隐藏文本框,按照出现顺序给出(隐藏的文本框句柄是我测试时的,会变的):
第一个文本框=0040AA16=黑客游戏.0040AA16 (ASCII "124gfdyr65ty")
第三个文本框=0040AA23=黑客游戏.0040AA23 (ASCII "rfiohdfjkdfg")
隐藏的110d2=0040AA30=黑客游戏.0040AA30 (ASCII "odpsjfdfjldkjmg,fg")
第二个文本框=0040AA43=黑客游戏.0040AA43 (ASCII "dofjs;oaslmxzsamf")
隐藏的106fc=0040AA55=黑客游戏.0040AA55 (ASCII "8686dcz7638")
隐藏的11049c=0040AA61=黑客游戏.0040AA61 (ASCII "+;dsjrpowjrl;")
隐藏的106fa=0040AA6F=黑客游戏.0040AA6F (ASCII "dkl;dsglljg;dlfgfl")
隐藏的106ee=0040AA82=黑客游戏.0040AA82 (ASCII "fggfhghfdst")
隐藏的106f2=0040AA8E=黑客游戏.0040AA8E ("3456413341")
隐藏的106ea=0040AAA3=黑客游戏.0040AAA3 (ASCII "ijkgjhgjhvbmntr56578")
隐藏的106ec=0040AAB8=黑客游戏.0040AAB8 (ASCII "5645678321332132")
隐藏的106e8=0040AAC9=黑客游戏.0040AAC9 (ASCII "jhfjhfjhfjhgkt")
隐藏的6a06d0=0040AAD8=黑客游戏.0040AAD8 (ASCII "gfhjfrsd")
隐藏的106e4=0040AAE1=黑客游戏.0040AAE1 (ASCII "drtghujfttrtr")
隐藏的6f06d2=0040AAEF=黑客游戏.0040AAEF (ASCII "ytfdtfygjrdtrtdwer342565")
隐藏的6e06e6=0040AB08=黑客游戏.0040AB08 (ASCII "81869574")
隐藏的5906e2=0040AB11=黑客游戏.0040AB11 (ASCII "http://q.163.com/siyuanruanjian/")
隐藏的7606dc=0040AB32=黑客游戏.0040AB32 (ASCII "hhttp://blog.163.com/c_s_y@126/blog/")
隐藏的5c06e0=0040AB57=黑客游戏.0040AB57 (ASCII "ilyuit76r876876tiojkoj")
隐藏的6f06d8=0040AB6E=黑客游戏.0040AB6E (ASCII "tishi456874351chuangkou")
隐藏的f049e=0040AB86=黑客游戏.0040AB86 (ASCII "fejheoiffnkfkl")
隐藏窗口句柄的获得方法:
在krnln.fnr模块(E语言支持库)此处下断:
10056ECF FF15 10270C10 CALL DWORD PTR DS:[<&USER32.IsWindow>] ; USER32.IsWindow
它的唯一的一个参数就是当前正处理的窗口句柄,隐藏文本框的填写使用spy32来搞。
第二十关
过关密码:7e0b96524e8bb43c30f4fb39e1e3a289
答案:(暂缺)
剩下的等有时间再补。。。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课