|
[PELock 1.0x -> Bartosz Wojcik]壳求助
前段时间我也在找关于这个壳的动画。。可是没找到/。。 |
|
在坛子看了PELock 1.0x -> 的手动脱法........
呵呵。。谢谢斑竹还没忘记我的帖子。。 虽然,到现在还是没搞定。。但是还是很开心。。最少有你为我解释了很多。 分量与存在好象就是这样体会到的~! |
|
在坛子看了PELock 1.0x -> 的手动脱法........
呵呵。。看来无望了。。。 |
|
在坛子看了PELock 1.0x -> 的手动脱法........
兄弟说的很对。。。这个壳还真的是不好对付。。 |
|
|
|
在坛子看了PELock 1.0x -> 的手动脱法........
初步接触该壳,是因为遇到一款远程控制软件,灰鸽子VIP2006。该软件前期是用北斗两次加壳来混淆视线,但是技术含量不高,曾成功手脱。大概过了三个月后,该软件改用PELock 1.0x 加壳。 还是老规矩,先上网找关于PELock 1.0x 的资料(本人菜鸟,所以只能借助百度的力量了)找了许久,发现该壳的介绍少之又少,就算有也只是简单说过。无奈一下。 既然没资料,就还找老方法,自己手动慢慢跟吧。最新使用基础ESP定律寻找OEP,进行中.....几次尝试后发现根本无法这样入手,因为每次ESP跟下后都会出现一个跳转,而照以前的做法,在跳转处下断,只会出现两种可能,一,跳回程序原入口点,二,程序出现异常,无法继续。 但是在几次尝试过程中,慢慢发现该壳的代码混淆和保护能力很强,它会调用程序部分代码和函数到壳内来执行。二次无奈。 第三次,乱试法,下面是操作经过。 一、到达OEP,Dump OD载入,隐藏OD,忽略除内存访问外的所有异常 005A905C > C1C0 05 ROL EAX,5 005A905F F8 CLC 005A9060 73 01 JNB SHORT Doctor.005A9063 005A9062 78 0F JS SHORT Doctor.005A9073 005A9064 AF SCAS DWORD PTR ES:[EDI] 005A9065 C8 F20FB6 ENTER 0FF2,0B6 005A9069 C0E8 01 SHR AL,1 005A906C 0000 ADD BYTE PTR DS:[EAX],AL 005A906E 00EE ADD DH,CH 005A9070 58 POP EAX 005A9071 F8 CLC Shift+F9,10次,查看堆栈 0012FFA4 /0012FFB8 指针到下一个 SEH 记录 0012FFA8 |0037382B SE 句柄 0012FFAC |005B0000 ASCII "WTNE / MADE BY E COMPILER - WUTAO " 0012FFB0 |00183000 0012FFB4 |00004000 0012FFB8 \0012FFE0 指针到下一个 SEH 记录 CPU窗口,Ctrl+G,来到37382B,F2设断,Shift+F9 0037382B /EB 02 JMP SHORT 0037382F 0037382D ^|70 E5 JO SHORT 00373814 0037382F \57 PUSH EDI 00373830 8B7C24 10 MOV EDI,DWORD PTR SS:[ESP+10] 00373834 EB 02 JMP SHORT 00373838 F8来到 00373841 018F B8000000 ADD DWORD PTR DS:[EDI+B8],ECX ; 特征,修改ConText结构,DS:[12FD90]=00373876,ECX=3 所以Ctrl+G来到37387+3=373879处,F2设断,F9运行 00373879 2BC9 SUB ECX,ECX 0037387B 64:8F01 POP DWORD PTR FS:[ECX] 0037387E 59 POP ECX 0037387F EB 01 JMP SHORT 00373882 00373881 65:EB 02 JMP SHORT 00373886 ; 多余的前缀 00373884 65:9C PUSHFD ; 多余的前缀 00373886 EB 01 JMP SHORT 00373889 Alt+M打开内存 内存镜像,项目 20 地址=00401000 //F2设断,F9运行 大小=00001000 (4096.) Owner=Doctor 00400000 区段=XPROT 含=code 类型=Imag 01001002 访问=R 初始访问=RWE 来到 003773FD C602 E9 MOV BYTE PTR DS:[EDX],0E9 00377400 8BC7 MOV EAX,EDI 00377402 2BC2 SUB EAX,EDX 00377404 83E8 05 SUB EAX,5 00377407 8942 01 MOV DWORD PTR DS:[EDX+1],EAX 0037740A 8A06 MOV AL,BYTE PTR DS:[ESI] 0037740C 46 INC ESI 0037740D 0FB6C8 MOVZX ECX,AL 00377410 83E0 03 AND EAX,3 00377413 C1E9 02 SHR ECX,2 00377416 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWO> 00377418 8BC8 MOV ECX,EAX 0037741A F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE> 0037741C 8A06 MOV AL,BYTE PTR DS:[ESI] 0037741E 46 INC ESI 0037741F 03D0 ADD EDX,EAX 00377421 C607 E9 MOV BYTE PTR DS:[EDI],0E9 00377424 2BD7 SUB EDX,EDI 00377426 83EA 05 SUB EDX,5 00377429 8957 01 MOV DWORD PTR DS:[EDI+1],EDX 0037742C 83C7 05 ADD EDI,5 0037742F 4B DEC EBX 00377430 ^ 75 C3 JNZ SHORT 003773F5 00377432 5F POP EDI 00377433 8D4D 66 LEA ECX,DWORD PTR SS:[EBP+66] 00377436 2BCF SUB ECX,EDI 00377438 F3:AA REP STOS BYTE PTR ES:[EDI] 0037743A 61 POPAD ; F4下来 0037743B C3 RETN 返回到 00376391 /EB 03 JMP SHORT 00376396 00376393 ^|71 9C JNO SHORT 00376331 00376395 |36:EB 02 JMP SHORT 0037639A ; 多余的前缀 00376398 0FF8EB PSUBB MM5,MM3 0037639B 0291 66EB02CD ADD DL,BYTE PTR DS:[ECX+CD02EB6> 003763A1 207403 75 AND BYTE PTR DS:[EBX+EAX+75],DH 003763A5 0148 78 ADD DWORD PTR DS:[EAX+78],ECX 003763A8 0379 01 ADD EDI,DWORD PTR DS:[ECX+1] 003763AB 8AE8 MOV CH,AL 003763AD 0100 ADD DWORD PTR DS:[EAX],EAX 003763AF 0000 ADD BYTE PTR DS:[EAX],AL 003763B1 ^ E0 8F LOOPDNE SHORT 00376342 理解中这里应该二次内存下断。但是我对内存二次下断真的是很不理解。。 所以继续到这里就不能在继续了。。 |
|
|
|
在坛子看了PELock 1.0x -> 的手动脱法........
感谢斑竹光临。。斑竹说的很对。。可能一个动画看了之后我还是不懂。。 但是总感觉那样比较直观一点。。呵呵。可能我想的有点多了。。 不过还是很高兴斑竹能给予回复。。谢谢~! |
|
在坛子看了PELock 1.0x -> 的手动脱法........
为什么就没人给个说法呢??唉 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值