- UID
- 26819
注册时间2007-2-14
阅读权限60
最后登录1970-1-1
亢龙有悔
TA的每日心情 | 开心 2018-7-21 10:19 |
---|
签到天数: 14 天 [LV.3]偶尔看看II
|
这是原发于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 [Overlay] *
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 0018D810 ASCII "999888" ;我们输入的密码
- 0012EC00 0040B78E ASCII "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 0018D7D0 ASCII "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,10
复制代码 F8几次- 00441492 68 86BA4000 PUSH 黑客游戏.0040BA86 ; ASCII "csy" 压栈
- 00441497 EB 01 JMP SHORT 黑客游戏.0044149A
- ... 花指令
- 0044149A FF75 FC PUSH DWORD PTR SS:[EBP-4] ;你输入的第一个文本框里的内容压栈
- 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 编辑 ] |
|