roking 发表于 2008-1-15 08:54:04

菜鸟试破———思远的“ 黑客游戏1.22”

这是原发于CCG的帖子,那里论坛赠送邀请码,注册了个,却发现人气没有,不知啥原因?转过来大家讨论下。

【破解工具】OD,PEid,ROMR-hying'sPE-Armor0.7x-0.755, WindowsEnabler
【破解平台】WindowsXP SP2
【软件名称】 黑客游戏1.22
【原版下载】http://www.ccg.org.cn/bbs/viewthread.php?tid=475&extra=page%3D1
【保护方式】PE-Armor,附加数据,偷代码(我的分析,不一定对!)
【软件简介】练手的小游戏
------------------------------------------------------------------------
【破解过程】1、使用PEid v0.94查壳,“深度扫描”为:PE-Armor V0.460-V0.759 -> hying   * Sign.By.fly *
2、脱壳。由于本人初学,不了解加数据处理的方法及原理,无法生成脱壳后能执行的程序,故使用PE-Armor脱壳工具ROMR,加载“黑客游戏1.22.exe”后,退出ROMR留下黑客游戏1.22.exe还在执行(这样内存中的黑客游戏1.22进程就是已经还原了偷窃代码的了)。然后进行下一步的带壳调试。
3、点“第一关”按钮使第一关窗口出现(我测试需要先做这一步在用OD挂接进程,要不然出错,啥原因?咋解决?),然后OD挂接到“黑客游戏1.22.exe”,设置忽略所有异常。
第1-4关我们采用同样的方法来找答案:
第一关:
OD中Alt+M,在“黑客游戏的代码段00401000上”按F2设置访问中断;
随便输入个密码,我这里输999888,点第一关的“确定”按钮,OD断在0043FB17这里:0043FB17    55            PUSH EBP                           ; 第一关的“确定”按钮事件处理
0043FB18    8BEC            MOV EBP,ESP
0043FB1A    81EC 08000000   SUB ESP,8
0043FB20    6A FF         PUSH -1
0043FB22    6A 08         PUSH 8
0043FB24    68 1E000116   PUSH 1601001E
0043FB29    68 1D000152   PUSH 5201001D
0043FB2E    E8 A31E0000   CALL 黑客游戏.004419D6            ; 输入的密码-->EAX
0043FB33    83C4 10         ADD ESP,10然后F8走几步,同时注意堆栈,直到堆栈中出现:0012EBFC   0018D810ASCII "999888"       ;我们输入的密码
0012EC00   0040B78EASCII "495544622"    ;真码如果再跟几步的话看到这里仅是明码比较。这里“495544622”就是第一关的答案。
第二关 使用与第一关同样的方法断到0043FDDE:0043FDDE    55            PUSH EBP                  ; 第二关的“确定”按钮事件处理
0043FDDF    8BEC            MOV EBP,ESP
0043FDE1    81EC 08000000   SUB ESP,8
0043FDE7    6A FF         PUSH -1
0043FDE9    6A 08         PUSH 8
0043FDEB    68 4A000116   PUSH 1601004A
0043FDF0    68 27000152   PUSH 52010027
0043FDF5    E8 DC1B0000   CALL 黑客游戏.004419D6      ; 输入的密码-->EAX
0043FDFA    83C4 10         ADD ESP,10随后F8跟的时候,注意堆栈中出现:0012F490   0018D7D0ASCII "999888"
0012F494   0040B843黑客游戏.0040B843    ;注意经常跟随到数据窗口看内容时,对“黑客游戏.0040B843”跟随到数据窗口,就可以看到正确的密码了。是“我喜欢破解软件啊”,下面也是明码比较。
下两关方法同上。
第三关 答案“666666”
第四关 答案“10001001011100100”
第五关 是灰色按钮。那个文本框没有用的(我是这样认为的,作者有些误导人啊),直接使用WindowsEnabler把按钮激活即可过关。其间我使用“Spy32 for windows Ver2.7”,无法捕获灰色按钮,就用WindowsEnabler搞定了(不知道作者这关是不是要考查这方面工具使用的?)。
第六关 作者提供的相关文件中仅有一副jpg图片,我没搞明白作者的意图,难道采用了hide in picture的方式在图片中放置密码?这方面的工具有不少,如BDV DataHider、Z-file、Hide In Picture、InThePicture、EyeMage IIE
加密奇兵等,懒得去试,没准是作者漏掉了相关文件,呵呵。直接用与前四关同样的方法做的,答案“19233ASGKDCY34566789ER6NTN”
第7-8关 WinRAR解密,这方面有现成的工具,使用暴力破解,这两关估计是考察破例破解工具穷举设置及掩码设置的,我就偷懒了去搞了直接用与前四关同样的方法,第七关 答案“43g4rcfrdnydbrt65”,第8关答案“fbhytmnmytm ily tu67854n45”
第9关 作者说难度加大了,可以使用上面同样的方法直接找到“548975432940753570320875jkskdskjchkl3wlkvwekhelhvkhwelkhc”
第十关没搞定:(,为了看后面的关卡,先找个爆破点跳过去,我用的是:00440FCF   /0F84 D3000000   JE 黑客游戏.004410A8            ;这里改为JNE 黑客游戏.004410A8 跳到下一关
00440FD5   |EB 01         JMP SHORT 黑客游戏.00440FD8
00440FD7   |BE 6A006A00   MOV ESI,6A006A
00440FDC   |6A 00         PUSH 0
00440FDE   |68 01030080   PUSH 80000301
00440FE3   |6A 00         PUSH 0第十一关 同样按照前4关的思路来,为了便于跟踪时的识别,我们按如下数据设置试练码:
19999999999      49999999999
29999999999      59999999999
39999999999      69999999999
正确答案:
495544622    123456789
582578896    335576822
775852521    282833000程序中第一个数字作者处理的和其他5组不一样
第十二关
思路与1-4关一样,不过需要注意,第二个文本框好像处理了键盘事件,这样在使用“访问中断”时要注意时机,应该先在两个文本框里填写完内容,等待按“确定”按钮时再下断,要不然第二个文本框一有键盘输入就断了。按确定断下后来到这里:00441464    55            PUSH EBP            ; 第十二关的“确定”按钮事件处理
00441465    8BEC            MOV EBP,ESP
00441467    81EC 10000000   SUB ESP,10
0044146D    6A FF         PUSH -1
0044146F    6A 08         PUSH 8
00441471    68 0D020116   PUSH 1601020D
00441476    68 0A020152   PUSH 5201020A
0044147B    E8 56050000   CALL 黑客游戏.004419D6       ; 第一个文本框里的内容-->EAX
00441480    83C4 10         ADD ESP,10F8几次00441492    68 86BA4000   PUSH 黑客游戏.0040BA86            ; ASCII "csy" 压栈
00441497    EB 01         JMP SHORT 黑客游戏.0044149A
... 花指令
0044149A    FF75 FC         PUSH DWORD PTR SS:;你输入的第一个文本框里的内容压栈
0044149D    B9 02000000   MOV ECX,2
004414A2    E8 C2EDFFFF   CALL 黑客游戏.00440269 ;!!你输入的第一个文本框里的内容与“csy”连接后-->EAX
004414A7    83C4 08         ADD ESP,8。。。。随后是取第二个文本框内容并与连接后的字符串比较
这里与前几关的不太一样,没有直接比较第一个文本框的值,而是把你输入的字符串与固定字串“csy”连接后,再与你输入的第二个文本框内容逐位比较。相同则通过。
随意此关的答案不是固定的:“第一个文本框随便输入,第二个文本框为第一个文本框的内容尾随csy三个字母”
第十三关 没过:(
------------------------------------------------------------------------
【破解总结】本人小半拉子水平:脱壳没脱下来,还好找到个能让OD跑起来的方法。汇编不过关,等人来砍!!
建议作者能提供个过关进度保存,要不中间一错,还得重头来!累死了。还有就是许多关的答案明码集中在内存的某处,可以给人提供偷懒的机会。
哪位大侠能发个完整脱的方法?查了krnln进程才知道是E语言的,花指令贼多,是E的特点还是PE_Amor壳的事?
而且E语言的函数库没有参考资料,读起来头疼。谁能指点一下?

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

rdypsf 发表于 2008-1-15 09:01:38

学习了/:001

zhangzerro 发表于 2008-1-15 19:30:10

偶也来学习下,谢谢楼主分享!

darling995 发表于 2008-1-15 19:41:16

楼主分析的不错,学习了,来试试

liyebinuser 发表于 2008-1-15 19:51:56

谢谢,楼主分析~~

yuanren 发表于 2008-1-30 20:09:13

高,高,实再是高,向你学习

bank 发表于 2008-1-30 22:47:06

很详细 改天研究下 支持楼主
页: [1]
查看完整版本: 菜鸟试破———思远的“ 黑客游戏1.22”