帮网页特效咖啡豆(作业7里的程序)脱衣服
【标 题】帮网页特效咖啡豆脱衣服(脱壳)【下载地址】PYG的FTP里有
【脱衣服工具】OD,PEiD
【衣服类型】ASPack 2.1 -> Alexey Solodovnikov
【任 务】把衣服脱掉(找到OEP,然后DUMP,修复输入表!)
【脱衣服作者】crazysky
【脱衣服声明】我只是个小菜鸟,不好之处多多包涵!
【备 注】老手勿看!
【脱衣服过程】
在脱之前先说一下,脱衣服时程序里面会有有好多循环,
对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。(请记住!)
用OD载入TheEndTx.exe,忽略所有异常(提示是否继续分析,选择"否" )
得到代码如下:
00622001 T>60 pushad ;按F8
00622002 E8 72050000 call TheEndTx.00622579 ;F8
00622007 EB 33 jmp short TheEndTx.0062203C ;跳F8
00622009 87DB xchg ebx,ebx
0062200B 90 nop
0062200C 00A0 4A0010A0 add byte ptr ds:,ah
00622012 4A dec edx
00622013 000C67 add byte ptr ds:,cl
0062203C BB 3C394400 mov ebx,TheEndTx.0044393C ;跳在这里,下面一直按F8
00622041 03DD add ebx,ebp
00622043 2B9D 60394400 sub ebx,dword ptr ss:
00622049 83BD 98474400 00 cmp dword ptr ss:,0
00622050 899D 98474400 mov dword ptr ss:,ebx
00622056 0F85 81040000 jnz TheEndTx.006224DD
0062205C 8D85 A0474400 lea eax,dword ptr ss:
00622062 50 push eax
00622063 FF95 AC484400 call dword ptr ss:
00622069 8985 9C474400 mov dword ptr ss:,eax
0062206F 8BF8 mov edi,eax
00622071 8D9D AD474400 lea ebx,dword ptr ss:
00622077 53 push ebx
00622078 50 push eax
00622079 FF95 A8484400 call dword ptr ss:
0062207F 8985 F5394400 mov dword ptr ss:,eax
00622085 8D9D BA474400 lea ebx,dword ptr ss:
0062208B 53 push ebx
0062208C 57 push edi
0062208D FF95 A8484400 call dword ptr ss:
00622093 8985 F9394400 mov dword ptr ss:,eax
00622099 8D85 0A3B4400 lea eax,dword ptr ss:
0062209F FFE0 jmp eax ; 在这里跳,F8
006220A1 0000 add byte ptr ds:,al
006221CE 8B9D 6C394400 mov ebx,dword ptr ss: ;跳在这里,
006221D4 0BDB or ebx,ebx
006221D6 74 0A je short TheEndTx.006221E2 ;这里跳
006221D8 8B03 mov eax,dword ptr ds:
006221DA 8785 70394400 xchg dword ptr ss:,eax
006221E0 8903 mov dword ptr ds:,eax
006221E2 8DB5 1A3A4400 lea esi,dword ptr ss: ;跳到这里,下面一直按F8
006221E8 833E 00 cmp dword ptr ds:,0
006221EB 0F84 1F010000 je TheEndTx.00622310
006221F1 8DB5 1A3A4400 lea esi,dword ptr ss:
006221F7 6A 04 push 4
006221F9 68 00100000 push 1000
006221FE 68 00180000 push 1800
00622203 6A 00 push 0
00622205 FF95 F5394400 call dword ptr ss:
0062220B 8985 F1394400 mov dword ptr ss:,eax
00622211 8B46 04 mov eax,dword ptr ds:
00622214 05 0E010000 add eax,10E
00622219 6A 04 push 4
0062221B 68 00100000 push 1000
00622220 50 push eax
00622221 6A 00 push 0
00622223 FF95 F5394400 call dword ptr ss:
00622229 8985 ED394400 mov dword ptr ss:,eax
0062222F 56 push esi
00622230 8B1E mov ebx,dword ptr ds:
00622232 039D 98474400 add ebx,dword ptr ss:
00622238 FFB5 F1394400 push dword ptr ss:
0062223E FF76 04 push dword ptr ds:
00622241 50 push eax
00622242 53 push ebx
00622243 E8 3B030000 call TheEndTx.00622583
00622248 80BD 0D3A4400 00 cmp byte ptr ss:,0
0062224F 75 5E jnz short TheEndTx.006222AF
00622251 FE85 0D3A4400 inc byte ptr ss:
00622257 8B3E mov edi,dword ptr ds:
00622259 03BD 98474400 add edi,dword ptr ss:
0062225F FF37 push dword ptr ds:
00622261 C607 C3 mov byte ptr ds:,0C3
00622264 FFD7 call edi
00622266 8F07 pop dword ptr ds:
00622268 50 push eax
00622269 51 push ecx
0062226A 56 push esi
0062226B 53 push ebx
0062226C 8BC8 mov ecx,eax
0062226E 83E9 06 sub ecx,6
00622271 8BB5 ED394400 mov esi,dword ptr ss:
00622277 33DB xor ebx,ebx
00622279 0BC9 or ecx,ecx
0062227B 74 2E je short TheEndTx.006222AB
0062227D 78 2C js short TheEndTx.006222AB
0062227F AC lods byte ptr ds:
00622280 3C E8 cmp al,0E8
00622282 74 0A je short TheEndTx.0062228E
00622284 EB 00 jmp short TheEndTx.00622286 ;在这里跳
00622286 3C E9 cmp al,0E9 ;跳到这里
00622288 74 04 je short TheEndTx.0062228E
0062228A 43 inc ebx
0062228B 49 dec ecx
0062228C ^ EB EB jmp short TheEndTx.00622279 ;到了这里,这个会跳回去的(不要按F8),在下一条指令点一下鼠标
0062228E 8B06 mov eax,dword ptr ds: ;在这里,按F4,
00622290 EB 00 jmp short TheEndTx.00622292 ;这里要跳,F8
00622292 803E 19 cmp byte ptr ds:,19 ;跳到这里
00622295 ^ 75 F3 jnz short TheEndTx.0062228A ;这个往回跳的,在下一条指令上按F4
00622297 24 00 and al,0 ;也就是在这里按F4
00622299 C1C0 18 rol eax,18
0062229C 2BC3 sub eax,ebx
0062229E 8906 mov dword ptr ds:,eax
006222A0 83C3 05 add ebx,5
006222A3 83C6 04 add esi,4
006222A6 83E9 05 sub ecx,5
006222A9 ^ EB CE jmp short TheEndTx.00622279 ;这里也是跳回去的
006222AB 5B pop ebx ;在这里按F4
006222AC 5E pop esi
006222AD 59 pop ecx
006222AE 58 pop eax
006222AF 8BC8 mov ecx,eax
006222B1 8B3E mov edi,dword ptr ds:
006222B3 03BD 98474400 add edi,dword ptr ss:
006222B9 8BB5 ED394400 mov esi,dword ptr ss:
006222BF C1F9 02 sar ecx,2
006222C2 F3:A5 rep movs dword ptr es:,dword ptr>
006222C4 8BC8 mov ecx,eax
006222C6 83E1 03 and ecx,3
006222C9 F3:A4 rep movs byte ptr es:,byte ptr d>
006222CB 5E pop esi
006222CC 68 00800000 push 8000
006222D1 6A 00 push 0
006222D3 FFB5 ED394400 push dword ptr ss:
006222D9 FF95 F9394400 call dword ptr ss:
006222DF 83C6 08 add esi,8
006222E2 833E 00 cmp dword ptr ds:,0
006222E5 ^ 0F85 26FFFFFF jnz TheEndTx.00622211 ;这里会跳回去的
006222EB 68 00800000 push 8000 ;在这里按F4
006222F0 6A 00 push 0
006222F2 FFB5 F1394400 push dword ptr ss:
006222F8 FF95 F9394400 call dword ptr ss:
006222FE 8B9D 6C394400 mov ebx,dword ptr ss:
00622304 0BDB or ebx,ebx
00622306 74 08 je short TheEndTx.00622310 ;这里跳到下面
00622308 8B03 mov eax,dword ptr ds:
0062230A 8785 70394400 xchg dword ptr ss:,eax
00622310 8B95 98474400 mov edx,dword ptr ss: ;跳到这里
00622316 8B85 64394400 mov eax,dword ptr ss:
0062231C 2BD0 sub edx,eax
0062231E 74 79 je short TheEndTx.00622399 ;向下跳(F8跳)
00622320 8BC2 mov eax,edx
00622322 C1E8 10 shr eax,10
(还没完的,在下一楼里!唉!系统不给一次贴出来,限制在10000字节!)
[ Last edited by crazysky on 2005-3-27 at 02:17 PM ] 00622399 8B95 98474400 mov edx,dword ptr ss: ;跳到这里
0062239F 8BB5 E1394400 mov esi,dword ptr ss:
006223A5 0BF6 or esi,esi
006223A7 74 11 je short TheEndTx.006223BA ;向下跳
006223A9 03F2 add esi,edx
006223AB AD lods dword ptr ds:
006223AC 0BC0 or eax,eax
006223AE 74 0A je short TheEndTx.006223BA
006223B0 03C2 add eax,edx
006223B2 8BF8 mov edi,eax
006223B4 66:AD lods word ptr ds:
006223B6 66:AB stos word ptr es:
006223B8 ^ EB F1 jmp short TheEndTx.006223AB
006223BA 8BB5 68394400 mov esi,dword ptr ss: ;跳到这里
006223C0 8B95 98474400 mov edx,dword ptr ss:
006223C6 03F2 add esi,edx
006223C8 8B46 0C mov eax,dword ptr ds:
006223CB 85C0 test eax,eax
006223CD 0F84 0A010000 je TheEndTx.006224DD
006223D3 03C2 add eax,edx
006223D5 8BD8 mov ebx,eax
006223D7 50 push eax
006223D8 FF95 AC484400 call dword ptr ss:
006223DE 85C0 test eax,eax
006223E0 75 07 jnz short TheEndTx.006223E9 ;向下跳
006223E2 53 push ebx
006223E3 FF95 B0484400 call dword ptr ss:
006223E9 8985 E5394400 mov dword ptr ss:,eax ;到这里
006223EF C785 E9394400 00000>mov dword ptr ss:,0
006223F9 8B95 98474400 mov edx,dword ptr ss:
006223FF 8B06 mov eax,dword ptr ds:
00622401 85C0 test eax,eax
00622403 75 03 jnz short TheEndTx.00622408
00622405 8B46 10 mov eax,dword ptr ds:
00622408 03C2 add eax,edx
0062240A 0385 E9394400 add eax,dword ptr ss:
00622410 8B18 mov ebx,dword ptr ds:
00622412 8B7E 10 mov edi,dword ptr ds:
00622415 03FA add edi,edx
00622417 03BD E9394400 add edi,dword ptr ss:
0062241D 85DB test ebx,ebx
0062241F 0F84 A2000000 je TheEndTx.006224C7
00622425 F7C3 00000080 test ebx,80000000
0062242B 75 04 jnz short TheEndTx.00622431
0062242D 03DA add ebx,edx
0062242F 43 inc ebx
00622430 43 inc ebx
00622431 53 push ebx
00622432 81E3 FFFFFF7F and ebx,7FFFFFFF
00622438 53 push ebx
00622439 FFB5 E5394400 push dword ptr ss:
0062243F FF95 A8484400 call dword ptr ss:
00622445 85C0 test eax,eax
00622447 5B pop ebx
00622448 75 6F jnz short TheEndTx.006224B9 ;向下跳
0062244A F7C3 00000080 test ebx,80000000
006224B9 8907 mov dword ptr ds:,eax ;跳到这里
006224BB 8385 E9394400 04 add dword ptr ss:,4
006224C2 ^ E9 32FFFFFF jmp TheEndTx.006223F9 ;这个往回跳到
006224C7 8906 mov dword ptr ds:,eax ;在这里按F4
006224C9 8946 0C mov dword ptr ds:,eax
006224CC 8946 10 mov dword ptr ds:,eax
006224CF 83C6 14 add esi,14
006224D2 8B95 98474400 mov edx,dword ptr ss:
006224D8 ^ E9 EBFEFFFF jmp TheEndTx.006223C8 ;这个也是往回跳的
006224DD 8B85 0E3A4400 mov eax,dword ptr ss: ;在这里按F4
006224E3 50 push eax
006224E4 0385 98474400 add eax,dword ptr ss:
006224EA 59 pop ecx
006224EB 0BC9 or ecx,ecx
006224ED 8985 3B3E4400 mov dword ptr ss:,eax
006224F3 61 popad ;看到这个popad(与开始的pushad对应)了吗?这表示跳转到EOP的指令就在附近了
006224F4 75 08 jnz short TheEndTx.006224FE ;向下跳
006224F6 B8 01000000 mov eax,1
006224FB C2 0C00 retn 0C
006224FE 68 1C374A00 push TheEndTx.004A371C ;到这里
00622503 C3 retn ;这个是返回到EOP的
00622504 8B85 9C474400 mov eax,dword ptr ss:
004A371C 55 push ebp ;跳到这里,这就EOP了(经过了popad而且地址由上面的00622503跳到004A371C,经过了段跨越)
004A371D 8BEC mov ebp,esp
004A371F 83C4 F0 add esp,-10
004A3722 53 push ebx
004A3723 B8 74344A00 mov eax,TheEndTx.004A3474
004A3728 E8 1B31F6FF call TheEndTx.00406848
004A372D 8B1D AC5B4A00 mov ebx,dword ptr ds: ; TheEndTx.004A6C30
004A3733 8B03 mov eax,dword ptr ds:
004A3735 E8 D260FBFF call TheEndTx.0045980C
004A373A 8B03 mov eax,dword ptr ds:
004A373C 83C0 50 add eax,50
004A373F BA F0374A00 mov edx,TheEndTx.004A37F0 ; ASCII "help.htm"
004A3744 E8 0F0DF6FF call TheEndTx.00404458
004A3749 8B03 mov eax,dword ptr ds:
004A374B BA 04384A00 mov edx,TheEndTx.004A3804
然后就是将程序DUMP出来了,右击鼠标->选择脱壳在当前的调试进程->按脱壳,写一个名字(我写了dmup.exe)然后保存,完成!
dump.exe就是脱了壳的程序了,运行一下,可以了,没问题!用PEiD查一查是:Borland Delphi 6.0 - 7.0,表示是没加壳了,是用Delphi写的程序!
【脱衣服心得】
我学脱衣服才几天,其实也不是很会的!但这件衣服其实也不难脱的!
我大概是看了二哥的脱文才会的吧?二哥在他的脱文上经常说:"手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。
对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。"
二哥又说一般接近EOP时,都会有一个JMP或者RET这些指令跳到EOP的!而这个跳转一般是经过程序段跨越的!
我只是个菜鸟,大家不要笑我哦!^○^
crazysky
2005-3-27
注意:
00622002 E8 72050000 call TheEndTx.00622579 ;F8这里要按F7,否则程序会运行起来! Originally posted by 飘云 at 2005-3-27 09:58 AM:
00622002 E8 72050000 call TheEndTx.00622579 ;F8
这里要按F7,否则程序会运行起来!
我按F8可以过啊!程序也没有运行起来啊!
怎么会这样的呢? 555555555,被骗了,偶被"脱衣服"给骗了~大骗子~KC~
这个不是近call可以f8吧?
我记得如果是近call的话就f7 啊,变了形的嘛~~~` 这个不是近call可以f8吧?
我记得如果是近call的话就f7 啊,变了形的嘛~~~`
理论上是这样的,但是我的按F8就运行起来了! "手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。
对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。"
我说这句话怎么看起来眼熟呢!原来是二哥的常用语!
支持,不错的脱文,简单易懂。 简单易懂
支持一下 仔细研究研究
页:
[1]
2