飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 9011|回复: 24

[原创] 玩玩思远的黑客游戏1.31

[复制链接]
  • TA的每日心情
    开心
    2018-7-21 10:19
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2008-2-12 05:59:15 | 显示全部楼层 |阅读模式
    思远黑客游戏1.31源文件下载:
    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
    答案:(暂缺)

    剩下的等我慢慢补来。。。

    [ 本帖最后由 roking 于 2008-3-17 18:09 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-12 14:36:40 | 显示全部楼层
    很不错啊,继续。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-14 14:30:52 | 显示全部楼层
    强人。我看到花就晕了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-20 22:26:36 | 显示全部楼层
    太绕眼了  /:good
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2015-8-31 20:53
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-2-26 11:21:43 | 显示全部楼层
    恩··还不错支持!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-29 20:03:46 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-4-18 15:36
  • 签到天数: 207 天

    [LV.7]常住居民III

    发表于 2008-2-29 22:35:00 | 显示全部楼层
    花指令这东西我看得头晕
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-2-16 19:29
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2008-3-1 09:30:11 | 显示全部楼层
    这个不错,支持下~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-3-1 17:53:18 | 显示全部楼层
    等能力可以的时候咱也来试试手,呵呵`支持楼主了~~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-3-2 01:25:30 | 显示全部楼层
    楼主所说的是思远+1?
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表