首页
社区
课程
招聘
[原创]我是一只小菜鸟,我的一个脱壳和调试的简单实验
发表于: 2005-1-10 14:39 4351

[原创]我是一只小菜鸟,我的一个脱壳和调试的简单实验

2005-1-10 14:39
4351
首先声明我是一只菜菜鸟
我昨天做错了一件事:"我想把一个游戏的壳脱了,但是又怕违反规定所以就改了一个名字",但是我是没有什么恶意的,的确是对那个游戏的壳很好奇,希望能得到一些指教,现在我知道自己错了。在这里首先向坛主、版主还有各位朋友道歉。
为了表示我的诚意,我决定写一篇面向菜鸟的非常简单的脱壳和调试实验(因为我自己就是一只菜菜鸟,写不出高级的),菜鸟们不需任何基础都能看懂,各位高手看了不要笑话我呀。

实验对象:mxdft2005.exe附件:mxdft2005.rar
(说实话,是冒险岛一个外挂,但是我保证现在已经无效了,所以我才用它做实验的,我发誓我不是推广外挂的)
实验目的:脱壳,并根据自己的意愿做一些简单的修改
实验工具:peid0.92、FI、OLLYDBG、peditor 1.7、winhex

首先大概介绍一下,mxdft2005.exe,每次运行就自动打开game.poptang.net,关闭时也要打开一次,而且在软件的窗口中又两个区域,鼠标一不小心点一下也会弹出那个网站,让人觉得很烦人,所以我的实验目标就是:
1、脱掉这个软件的壳;
2、对脱壳后的软件进行修改,让它在运行时、关闭时都候弹出看雪技术论坛的页面,在点击时候也弹出看雪的页面,窗口中关于game.poptang.net都改成看雪的主页地址。

目标定下来了下面就开始行动
第一步:查看软件加了什么壳,我准备了两个查壳的软件:peid0.92和FI,这两个是目前最流行的(好象是吧?其实我也不太清楚,我是菜菜鸟,说错了,大家表怪我呀。)

经过两种工具一检查发现结果惊人的相似――UPX加壳,而且是VB编的尼。 
“哈哈哈。。。”我禁不住仰天长笑,各位菜鸟看到这里应该相信我前面说过的话了吧? “什么?前面没看?”我突然有了一种狂晕一下的冲动,并决定重说一次,我刚才说:“我的帖子表任何基础都能看懂的呀”,嘿嘿。。。。没骗人吧??

郁闷,突然想起来,这样一说大家都知道怎么做了,没人往下看了,顿时觉得头晕目眩,伤心绝望中~~~~~~

绝望归绝望,虽然简单,大家都懒得说下去了,但是这是我打算道歉的帖子呀,我要端正态度,继续写下去,不管各位菜鸟是否会瞧不起我了(为什么只有菜鸟,因为高手们早已狂吐不止,晕倒在显示器的脚下了,当然只剩下菜鸟)。

好了现在我仍然要厚着脸皮进行
第二步:抗起OD进行脱壳行动,等等,我去复制一些经典对白
“设置Ollydbg忽略所有的异常选项。老规矩:用IsDebug V1.4插件去掉Ollydbg的调试器标志。”(引用FLY老大的经典语句)

“UPX加壳入口第一句是PUSHAD,出口关键字POPAD ”(这句话嘻嘻经典吧,我自己想的,嘿嘿嘿~~~~,我是菜菜鸟,说错不负责的)

00408C70 > $ 60             PUSHAD   ;入口第一句:“PUSHAD”
00408C71   . BE 00704000    MOV ESI,mxdft200.00407000
00408C76   . 8DBE 00A0FFFF  LEA EDI,DWORD PTR DS:[ESI+FFFFA000]
00408C7C   . 57             PUSH EDI
00408C7D   . 83CD FF        OR EBP,FFFFFFFF
00408C80   . EB 10          JMP SHORT mxdft200.00408C92
00408C82     90             NOP
00408C83     90             NOP
00408C84     90             NOP
00408C85     90             NOP
00408C86     90             NOP
00408C87     90             NOP
00408C88   > 8A06           MOV AL,BYTE PTR DS:[ESI]
00408C8A   . 46             INC ESI
00408C8B   . 8807           MOV BYTE PTR DS:[EDI],AL
00408C8D   . 47             INC EDI
00408C8E   > 01DB           ADD EBX,EBX
00408C90   . 75 07          JNZ SHORT mxdft200.00408C99
00408C92   > 8B1E           MOV EBX,DWORD PTR DS:[ESI]
00408C94   . 83EE FC        SUB ESI,-4
00408C97   . 11DB           ADC EBX,EBX
00408C99   >^72 ED          JB SHORT mxdft200.00408C88
00408C9B   . B8 01000000    MOV EAX,1
00408CA0   > 01DB           ADD EBX,EBX
00408CA2   . 75 07          JNZ SHORT mxdft200.00408CAB
00408CA4   . 8B1E           MOV EBX,DWORD PTR DS:[ESI]
00408CA6   . 83EE FC        SUB ESI,-4
00408CA9   . 11DB           ADC EBX,EBX
00408CAB   > 11C0           ADC EAX,EAX
00408CAD   . 01DB           ADD EBX,EBX
00408CAF   .^73 EF          JNB SHORT mxdft200.00408CA0
00408CB1   . 75 09          JNZ SHORT mxdft200.00408CBC
00408CB3   . 8B1E           MOV EBX,DWORD PTR DS:[ESI]
00408CB5   . 83EE FC        SUB ESI,-4
00408CB8   . 11DB           ADC EBX,EBX
00408CBA   .^73 E4          JNB SHORT mxdft200.00408CA0
00408CBC   > 31C9           XOR ECX,ECX
00408CBE   . 83E8 03        SUB EAX,3
00408CC1   . 72 0D          JB SHORT mxdft200.00408CD0
00408CC3   . C1E0 08        SHL EAX,8
00408CC6   . 8A06           MOV AL,BYTE PTR DS:[ESI]
00408CC8   . 46             INC ESI
00408CC9   . 83F0 FF        XOR EAX,FFFFFFFF
00408CCC   . 74 74          JE SHORT mxdft200.00408D42
00408CCE   . 89C5           MOV EBP,EAX
00408CD0   > 01DB           ADD EBX,EBX
00408CD2   . 75 07          JNZ SHORT mxdft200.00408CDB
00408CD4   . 8B1E           MOV EBX,DWORD PTR DS:[ESI]
00408CD6   . 83EE FC        SUB ESI,-4
00408CD9   . 11DB           ADC EBX,EBX
00408CDB   > 11C9           ADC ECX,ECX
00408CDD   . 01DB           ADD EBX,EBX
00408CDF   . 75 07          JNZ SHORT mxdft200.00408CE8
00408CE1   . 8B1E           MOV EBX,DWORD PTR DS:[ESI]
00408CE3   . 83EE FC        SUB ESI,-4
00408CE6   . 11DB           ADC EBX,EBX
00408CE8   > 11C9           ADC ECX,ECX
00408CEA   . 75 20          JNZ SHORT mxdft200.00408D0C
00408CEC   . 41             INC ECX
00408CED   > 01DB           ADD EBX,EBX
00408CEF   . 75 07          JNZ SHORT mxdft200.00408CF8
00408CF1   . 8B1E           MOV EBX,DWORD PTR DS:[ESI]
00408CF3   . 83EE FC        SUB ESI,-4
00408CF6   . 11DB           ADC EBX,EBX
00408CF8   > 11C9           ADC ECX,ECX
00408CFA   . 01DB           ADD EBX,EBX
00408CFC   .^73 EF          JNB SHORT mxdft200.00408CED
00408CFE   . 75 09          JNZ SHORT mxdft200.00408D09
00408D00   . 8B1E           MOV EBX,DWORD PTR DS:[ESI]
00408D02   . 83EE FC        SUB ESI,-4
00408D05   . 11DB           ADC EBX,EBX
00408D07   .^73 E4          JNB SHORT mxdft200.00408CED
00408D09   > 83C1 02        ADD ECX,2
00408D0C   > 81FD 00F3FFFF  CMP EBP,-0D00
00408D12   . 83D1 01        ADC ECX,1
00408D15   . 8D142F         LEA EDX,DWORD PTR DS:[EDI+EBP]
00408D18   . 83FD FC        CMP EBP,-4
00408D1B   . 76 0F          JBE SHORT mxdft200.00408D2C
00408D1D   > 8A02           MOV AL,BYTE PTR DS:[EDX]
00408D1F   . 42             INC EDX
00408D20   . 8807           MOV BYTE PTR DS:[EDI],AL
00408D22   . 47             INC EDI
00408D23   . 49             DEC ECX
00408D24   .^75 F7          JNZ SHORT mxdft200.00408D1D
00408D26   .^E9 63FFFFFF    JMP mxdft200.00408C8E
00408D2B     90             NOP
00408D2C   > 8B02           MOV EAX,DWORD PTR DS:[EDX]
00408D2E   . 83C2 04        ADD EDX,4
00408D31   . 8907           MOV DWORD PTR DS:[EDI],EAX
00408D33   . 83C7 04        ADD EDI,4
00408D36   . 83E9 04        SUB ECX,4
00408D39   .^77 F1          JA SHORT mxdft200.00408D2C
00408D3B   . 01CF           ADD EDI,ECX
00408D3D   .^E9 4CFFFFFF    JMP mxdft200.00408C8E
00408D42   > 5E             POP ESI
00408D43   . 89F7           MOV EDI,ESI
00408D45   . B9 21000000    MOV ECX,21
00408D4A   > 8A07           MOV AL,BYTE PTR DS:[EDI]
00408D4C   . 47             INC EDI
00408D4D   . 2C E8          SUB AL,0E8
00408D4F   > 3C 01          CMP AL,1
00408D51   .^77 F7          JA SHORT mxdft200.00408D4A
00408D53   . 803F 01        CMP BYTE PTR DS:[EDI],1
00408D56   .^75 F2          JNZ SHORT mxdft200.00408D4A
00408D58   . 8B07           MOV EAX,DWORD PTR DS:[EDI]
00408D5A   . 8A5F 04        MOV BL,BYTE PTR DS:[EDI+4]
00408D5D   . 66:C1E8 08     SHR AX,8
00408D61   . C1C0 10        ROL EAX,10
00408D64   . 86C4           XCHG AH,AL
00408D66   . 29F8           SUB EAX,EDI
00408D68   . 80EB E8        SUB BL,0E8
00408D6B   . 01F0           ADD EAX,ESI
00408D6D   . 8907           MOV DWORD PTR DS:[EDI],EAX
00408D6F   . 83C7 05        ADD EDI,5
00408D72   . 89D8           MOV EAX,EBX
00408D74   .^E2 D9          LOOPD SHORT mxdft200.00408D4F
00408D76   . 8DBE 00600000  LEA EDI,DWORD PTR DS:[ESI+6000]
00408D7C   > 8B07           MOV EAX,DWORD PTR DS:[EDI]
00408D7E   . 09C0           OR EAX,EAX
00408D80   . 74 45          JE SHORT mxdft200.00408DC7
00408D82   . 8B5F 04        MOV EBX,DWORD PTR DS:[EDI+4]
00408D85   . 8D8430 988B000>LEA EAX,DWORD PTR DS:[EAX+ESI+8B98]
00408D8C   . 01F3           ADD EBX,ESI
00408D8E   . 50             PUSH EAX
00408D8F   . 83C7 08        ADD EDI,8
00408D92   . FF96 D48B0000  CALL DWORD PTR DS:[ESI+8BD4]
00408D98   . 95             XCHG EAX,EBP
00408D99   > 8A07           MOV AL,BYTE PTR DS:[EDI]
00408D9B   . 47             INC EDI
00408D9C   . 08C0           OR AL,AL
00408D9E   .^74 DC          JE SHORT mxdft200.00408D7C
00408DA0   . 89F9           MOV ECX,EDI
00408DA2   . 79 07          JNS SHORT mxdft200.00408DAB
00408DA4   . 0FB707         MOVZX EAX,WORD PTR DS:[EDI]
00408DA7   . 47             INC EDI
00408DA8   . 50             PUSH EAX
00408DA9   . 47             INC EDI
00408DAA     B9             DB B9
00408DAB   . 57             PUSH EDI
00408DAC   . 48             DEC EAX
00408DAD   . F2:AE          REPNE SCAS BYTE PTR ES:[EDI]
00408DAF   . 55             PUSH EBP
00408DB0   . FF96 D88B0000  CALL DWORD PTR DS:[ESI+8BD8]
00408DB6   . 09C0           OR EAX,EAX
00408DB8   . 74 07          JE SHORT mxdft200.00408DC1
00408DBA   . 8903           MOV DWORD PTR DS:[EBX],EAX
00408DBC   . 83C3 04        ADD EBX,4
00408DBF   .^EB D8          JMP SHORT mxdft200.00408D99
00408DC1   > FF96 DC8B0000  CALL DWORD PTR DS:[ESI+8BDC]
00408DC7   > 61             POPAD ;按Crtl+F向下找POPAD,在这里找到了,按F2下断点,然后F9运行到这里
00408DC8   .-E9 9384FFFF    JMP mxdft200.00401260 ;F8到这里,再F8

就来到这里:
00401260   68 98134000      PUSH mxdft200.00401398
00401265   E8 EEFFFFFF      CALL mxdft200.00401258                   ; JMP to MSVBVM60.ThunRTMain

下面就要用OLLYdump插件了
“Plugins”-----“OLLYdump”-----“Dump debugged process”-----“Dump”-----起个名字保存

这就脱壳成功了,下面我们当然应该用peditor 1.7来rebuilder一下了
这样就完美了,HOHO,我也完美的脱了一个壳了(估计连不少菜鸟也要狂吐不止了,没关系反正偶早做好心理准备了)

下面硬着头皮继续进行
第三步:修改所有game.poptang.com相关的地方为http://bbs.pediy.com/
非常简单,用WINHEX打开我们脱过的文件,查找game.poptang.net,找到以后毫不留情的修改为bbs.pediy.com,还有找到所有的g a m e . p o p t a n g . n e t这种形式的都做相应修改,(为什么那么“宽”,废话不宽能叫“VB宽字符”吗)

至于具体怎么修改才能不损坏文件,大家重要注意00 00这些地方就可以了。
好了,终于完成了,对于一个菜菜鸟的出于道歉的帖子,各位高手该吐的吐,大家该怎么BS就怎么BS吧,我实在写不出高水平的了,耽误大家时间了,不好意思

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 14
活跃值: (60)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
2
没有顶你,我顶,如果能帮助的话,想请你看看一个双重加壳的小软件(200多K)。
2005-1-14 21:14
0
雪    币: 5844
活跃值: (2677)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
鼓励一下,都是这样过来的。
2005-1-14 21:36
0
雪    币: 14
活跃值: (60)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
4
过来什么?我今天在这个论坛忙呼了一天,结果永远是大人说教,没有一个人帮我的!
2005-1-14 21:44
0
雪    币: 5844
活跃值: (2677)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
教程这么多,先照着自己做一遍,有不懂的,把自己跟踪的过程贴出来,会有人帮助的,什么也不做,怎么可能会呢?
2005-1-15 10:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
虽然在我的系统下脱壳了不能运行
但是还是顶你一下
2005-1-15 11:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

相对湿度啊
fly不是给你讲的很详细了吗
别人不是什么都可以一下子教给你的
你也不要老是在这里抱怨了
2005-1-15 11:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我只有不断地努力学习。
2005-1-15 15:09
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
9
要完美,要-d
2005-1-15 15:18
0
游客
登录 | 注册 方可回帖
返回
//