| 关键词: nbsp 004100 SHORT DWORD PTR NOP 004101 EBX ECX 代码 |
【目 标】: PeSpin 1.0主程序 【工 具】:Olydbg1.1 【任 务】:抓它的衣服个光光.哈哈 【操作平台】:WINXP pro sp1 【作 者】:loveboom[DFCG][FCG][US] 【相关链接】: http://pespin.w.interia.pl/(作者的官方站点) 【简要说明】:不知不觉就过了这么久了,很久没写什么文章。看到别的朋友们在不断的进步,我都感觉自己是不是真的老了哦:-).写这篇文章也算是给大家中秋节的一个礼物吧,祝大家中秋快乐!身体健康!工作顺利!! 【详细过程】: 设置没什么特别,因为这次想稍微看细一点,所以是慢慢的来跟。打开全部的异常就行了。 00410087 > 90 NOP ; EP,壳入口,是垃圾代码,所以我直接nop掉它了 00410088 90 NOP 00410089 90 NOP 0041008A 60 PUSHAD 0041008B E8 00000000 CALL 00410090 00410090 8B1C24 MOV EBX,DWORD PTR SS:[ESP] ; 这里就就是pop ebx 00410093 83C3 12 ADD EBX,12 00410096 812B E8B10600 SUB DWORD PTR DS:[EBX],6B1E8 ; 这里开始就动态改变代码 0041009C FE4B FD DEC BYTE PTR DS:[EBX-3] 0041009F 812C24 E02A4000 SUB DWORD PTR SS:[ESP],00402AE0 004100A6 DC9E 83B17501 FCOMP QWORD PTR DS:[ESI+175B183] 004100AC 90 NOP 004100AD 8173 04 D77AF72>XOR DWORD PTR DS:[EBX+4],2FF77AD7 ; 又是动态生成代码 004100B4 8173 19 770043B>XOR DWORD PTR DS:[EBX+19],B7430077 004100BB 81C3 28000000 ADD EBX,28 004100C1 F9 STC ; 设置C标志 004100C2 FFE3 JMP EBX 004100C4 C9 LEAVE 004100C5 C2 0800 RETN 8 004100C8 90 NOP 004100C9 90 NOP 004100CA 72 01 JB SHORT 004100CD ; 其实就是jmp xxx,因为上面已经设置了C标志 004100CC 90 NOP 004100CD 5D POP EBP 004100CE 33C9 XOR ECX,ECX 004100D0 41 INC ECX 004100D1 E2 17 LOOPD SHORT 004100EA 004100D3 /EB 07 JMP SHORT 004100DC 004100D5 |90 NOP 004100D6 |EB 01 JMP SHORT 004100D9 004100D8 |90 NOP 004100D9 |EB 0D JMP SHORT 004100E8 004100DB |90 NOP 004100DC \E8 01000000 CALL 004100E2 004100E1 90 NOP 004100E2 5A POP EDX 004100E3 83EA 0B SUB EDX,0B 004100E6 FFE2 JMP EDX ; 这个壳里好多这样的东西哦 004100F1 8B95 D2424000 MOV EDX,DWORD PTR SS:[EBP+4042D2] ; [EBP+4042D2]=4042d2+d5b0处存放的就是程序的IMGBASE 004100F7 8B42 3C MOV EAX,DWORD PTR DS:[EDX+3C] ; 这里不就是取PE所以在的地方+3C 004100FA 03C2 ADD EAX,EDX ; 相加后就是PE文件的开始处了 004100FC 8985 DC424000 MOV DWORD PTR SS:[EBP+4042DC],EAX ; PE文件开始处4000D0处入[EBP+4042DC]处 00410102 EB 02 JMP SHORT 00410106 00410104 90 NOP 00410105 90 NOP 00410106 F9 STC ; 这里也是明显的变形jmp 00410107 72 08 JB SHORT 00410111 00410109 73 0E JNB SHORT 00410119 0041010B F9 STC 0041010C 830424 17 ADD DWORD PTR SS:[ESP],17 00410110 C3 RETN 00410111 E8 04000000 CALL 0041011A 00410116 90 NOP 00410117 F5 CMC 00410118 73 11 JNB SHORT 0041012B ; 又是一堆垃圾代码 0041011A EB 06 JMP SHORT 00410122 0041011C 90 NOP 0041011D ^ 72 ED JB SHORT 0041010C 0041011F 1F POP DS ; Modification of segment register 00410120 EB 07 JMP SHORT 00410129 00410122 F5 CMC ; 这里也就是清除c标志,所以下面也不会跳(实际是取反) 00410123 72 0E JB SHORT 00410133 00410125 F5 CMC ; 再次取反,这次下面就会跳了 00410126 ^ 72 F8 JB SHORT 00410120 00410128 90 NOP 00410129 ^ EB EC JMP SHORT 00410117 0041012B 830424 07 ADD DWORD PTR SS:[ESP],7 0041012F F5 CMC 00410130 FF3424 PUSH DWORD PTR SS:[ESP] ; PESpin.0041011D 00410133 C3 RETN 00410134 41 INC ECX 00410135 C1E1 07 SHL ECX,7 00410138 8B0C01 MOV ECX,DWORD PTR DS:[ECX+EAX] ; 取code段的start address 0041013B 03CA ADD ECX,EDX ; ecx就是保存CODE段的开始RVA …… 0041014E 8B59 10 MOV EBX,DWORD PTR DS:[ECX+10] 00410151 03DA ADD EBX,EDX 00410153 8B1B MOV EBX,DWORD PTR DS:[EBX] 00410155 899D F0424000 MOV DWORD PTR SS:[EBP+4042F0],EBX ; [EBP+4042F0]存放MessageBox的地址? 0041015B 53 PUSH EBX 0041015C 8F85 94414000 POP DWORD PTR SS:[EBP+404194] ; [EBP+404194]存放MessageBox的地址? 00410162 BB E1000000 MOV EBX,0E1 00410167 B9 8C0B0000 MOV ECX,0B8C ; 传入要解压的SIZE 0041016C 8DBD 80434000 LEA EDI,DWORD PTR SS:[EBP+404380] 00410172 4F DEC EDI 00410173 EB 01 JMP SHORT 00410176 00410175 90 NOP 00410176 301C39 XOR BYTE PTR DS:[ECX+EDI],BL ; 从4124BB处开始解压大小为0b8c的代码,是向上解压 00410179 FECB DEC BL 0041017B ^ E2 F9 LOOPD SHORT 00410176 …… 00410180 68 CB000000 PUSH 0CB 00410185 59 POP ECX ; mov ecx,0cb 00410186 8DBD 404E4000 LEA EDI,DWORD PTR SS:[EBP+404E40] ; 把刚才解压后的起始地址41192F传人EDI …… 0041019D C00C39 02 ROR BYTE PTR DS:[ECX+EDI],2 ; 41192f+0CB=4124bb(上面的结束地址)处的值ror 2 004101A1 ^ E2 FA LOOPD SHORT 0041019D ; 这里再次从4124BB处解压大小为0CB的代码 …… 004101A1 ^\E2 FA LOOPD SHORT 0041019D ; 这里再次从4124BB处解压大小为0CB的代码 004101A3 E8 02000000 CALL 004101AA ; 到这里还是只解压壳的部分代码 004101A8 90 NOP 004101A9 90 NOP 004101AA 5A POP EDX ; mov edx,401A8 004101AB 8D85 FD685600 LEA EAX,DWORD PTR SS:[EBP+5668FD] ; [EBP+5668FD]=D5B0+5668FD=573EAD地址入eax中 004101B1 BB 54130B00 MOV EBX,0B1354 004101B6 D1E3 SHL EBX,1 004101B8 2BC3 SUB EAX,EBX 004101BA FFE0 JMP EAX  |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|