首页
社区
课程
招聘
Unpacking forgot's PEQuake
发表于: 2004-10-9 11:22 9976

Unpacking forgot's PEQuake

2004-10-9 11:22
9976

*** Unpacking forgot's PEQuake ***
*** cyclotron[BCG][DFCG][FCG][OCN] ***

PEQuake, 内部代号 shit
作者 forgot
下载 http://bbs.pediy.com/upload/file/2004/10/PEQuake.rar_423.rar

简介:这个壳的使用了大量花指令反跟踪,调用CreateThread切换线程并挂起主线程,检查父进程、调试器,输入表重构,修改PEB,IAT没有加密,不过使用了一张跳转表(严重盗版!!!),懒的话可以以壳解壳啦。。。话说回来,这是我有能力脱的为数不多的几个壳之一。。。

话不多说,直奔主题:

忽略所有异常,隐藏Olly,载入后来到这里:

00422000 >  E8 A5000000     CALL PEQuake.004220AA

004220AA    5D              POP EBP				;PEQuake.00422005
004220AB    81ED 05000000   SUB EBP,5
004220B1    8D75 3D         LEA ESI,DWORD PTR SS:[EBP+3D]
004220B4    56              PUSH ESI
004220B5    FF55 31         CALL DWORD PTR SS:[EBP+31]		;GetModuleHandle
004220B8    8DB5 81000000   LEA ESI,DWORD PTR SS:[EBP+81]
004220BE    56              PUSH ESI
004220BF    50              PUSH EAX
004220C0    FF55 2D         CALL DWORD PTR SS:[EBP+2D]		;GetProcAddress
004220C3    8985 8E000000   MOV DWORD PTR SS:[EBP+8E],EAX
004220C9    6A 04           PUSH 4
004220CB    68 00100000     PUSH 1000
004220D0    68 0F9C0000     PUSH 9C0F
004220D5    6A 00           PUSH 0
004220D7    FF95 8E000000   CALL DWORD PTR SS:[EBP+8E]		;VirtualAlloc
004220DD    50              PUSH EAX
004220DE    8B9D 7D000000   MOV EBX,DWORD PTR SS:[EBP+7D]
004220E4    03DD            ADD EBX,EBP
004220E6    50              PUSH EAX
004220E7    53              PUSH EBX
004220E8    E8 04000000     CALL PEQuake.004220F1		;对外壳代码解压
004220ED    5A              POP EDX
004220EE    55              PUSH EBP
004220EF    FFE2            JMP EDX				;典型的hying入口:D
0012FFA8   00344799  /CALL to CreateThread from 00344793
0012FFAC   00000000  |pSecurity = NULL
0012FFB0   00000000  |StackSize = 0
0012FFB4   00344761  |ThreadFunction = 00344761			;在入口处下断点bp 344761
0012FFB8   77E7CA90  |pThreadParm = kErNeL32.77E7CA90
0012FFBC   00000000  |CreationFlags = 0
0012FFC0   00344824  \pThreadId = 00344824
0012FFC4   77E7CA90  RETURN to kErNeL32.77E7CA90
00344761    E8 00000000     CALL 00344766
00344766    5D              POP EBP
00344767    81ED A4184000   SUB EBP,4018A4
0034476D    68 F4010000     PUSH 1F4
00344772    FF95 B1634000   CALL DWORD PTR SS:[EBP+4063B1]	;Sleep
00344778    8D85 92194000   LEA EAX,DWORD PTR SS:[EBP+401992]
0034477E    FFE0            JMP EAX
00345106    25 5F5F5F5F     AND EAX,5F5F5F5F
0034510B    3D 4558504C     CMP EAX,4C505845
00345110  - 75 FE           JNZ SHORT 00345110			;如果不是EXPLORER.EXE就在这里挂起

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

收藏
免费 7
支持
分享
最新回复 (26)
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
2
盗版货就是好脱,所以我们要支持正版:D
2004-10-9 11:31
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
支持:D :D :D
2004-10-9 11:36
0
雪    币: 266
活跃值: (269)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
Good:)
2004-10-9 11:43
0
雪    币: 239
活跃值: (478)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
好,支持一下!
2004-10-9 12:24
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
6
good!

好像这个表中少了一个对应值:
00408D56  JMP DWORD PTR DS:[<&kernel32.CloseHandle>]   ;  kernel32.CloseHandle


就是这个“打死也不说”:D
2004-10-9 12:25
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
7
哈哈,那估计是空间不够了.
2004-10-9 12:25
0
雪    币: 557
活跃值: (2303)
能力值: ( LV9,RANK:2130 )
在线值:
发帖
回帖
粉丝
8
Good!:D ,好小BT就专们D人家的版:D
2004-10-9 12:52
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
9
哈哈,支持  :D
2004-10-9 13:32
0
雪    币: 140
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
厉害,我正在努力
2004-10-9 13:41
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
11
Wo…… nice job :)
2004-10-9 14:41
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
12
最初由 fxyang 发布
good!

好像这个表中少了一个对应值:
[code]
00408D56 JMP DWORD PTR DS:[<&kernel32.CloseHandle>] ; kernel32.CloseHandle
........

什么意思?不是修复了吗?
2004-10-9 15:42
0
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
好:)
2004-10-9 16:02
0
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
14
楼主帮忙看一下:
我找这楼主的方法:
用到的断点,我提前下好了(按照楼主的方法)
大约过了60多个SEH,还有一个 kernel32.IsDebuggerPresent,(检查od的)
来到断点 kernel32.CreateThread:如下{
0012FFA8    00374799  /CALL 到 CreateThread 来自 00374793
0012FFAC    00000000  |pSecurity = NULL
0012FFB0    00000000  |StackSize = 0
0012FFB4    00374761  |ThreadFunction = 00374761( 由于系统不同,我的是windows XP pack 1,这个地址不同)
0012FFB8    77E614C7  |pThreadParm = kernel32.77E614C7
0012FFBC    00000000  |CreationFlags = 0
0012FFC0    00374824  \pThreadId = 00374824
}
之后:bp 00374761
找到  cmp eax,4C505845;
00375106     25 5F5F5F5F         and eax,5F5F5F5F
0037510B     3D 4558504C         cmp eax,4C505845
00375110   - 75 FE               jnz short 00375110(我改为jz short 00375110)
00375112     61                  popad
改好了,可以拦截断点了;
然后下code区段内存断点;,并没有直接来到OEP???????????
而是来到这里:
004220FF     A4                  movs byte ptr es:[edi],byte ptr ds:[esi](这并不是OEP,虽然系统不同,但这差别太大,楼主帮偶看一下)?????????
00422100     B3 02               mov bl,2
00422102     E8 6D000000         call PEQuake.00422174
00422107   ^ 73 F6               jnb short PEQuake.004220FF
00422109     33C9                xor ecx,ecx
0042210B     E8 64000000         call PEQuake.00422174
00422110     73 1C               jnb short PEQuake.0042212E
00422112     33C0                xor eax,eax
00422114     E8 5B000000         call PEQuake.00422174
00422119     73 23               jnb short PEQuake.0042213E
0042211B     B3 02               mov bl,2
0042211D     41                  inc ecx

楼主帮偶看一下,谢谢,感激不尽

2004-10-9 16:23
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
15
最初由 qiweixue 发布
楼主帮忙看一下:
我找这楼主的方法:
用到的断点,我提前下好了(按照楼主的方法)
大约过了60多个SEH,还有一个 kernel32.IsDebuggerPresent,(检查od的)
来到断点 kernel32.CreateThread:如下{
........

不要修改壳的代码,壳里面有花指令会检查代码,用硬件断点断在检查父进程的地方后改Z标志。
2004-10-9 16:30
0
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
16
多谢谢!!!
楼主,回复好快啊!!
感激不尽!!!!:p
我试一试!!!!!
2004-10-9 16:33
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
17
最初由 cyclotron 发布

什么意思?不是修复了吗?


呵呵,说 forgot 呢 :)
http://bbs.pediy.com/showthread.php?s=&threadid=5324&perpage=15&pagenumber=2
2004-10-9 17:09
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
18
今天把这个项目从deadcode拖出来,继续改改.
2004-10-9 17:44
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
兄弟愚钝,冒昧的问一下,CMP EAX,4C505845 句中的 4C505845  这个值从何而来?是固定值吗?另外在 JNZ SHORT 00345110 处修改disable父进程检查后设
Alt+M对code段下内存访问断点,并没有直接来到OEP。不知为何?
2004-10-9 17:48
0
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
20
最初由 forgot 发布
今天把这个项目从deadcode拖出来,继续改改.

汗!!!
不的不承认forgot的变态:D :D :D
2004-10-9 17:55
0
雪    币: 282
活跃值: (233)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
21
厉害
2004-10-9 19:49
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
22
最初由 illiperson 发布
兄弟愚钝,冒昧的问一下,CMP EAX,4C505845 句中的 4C505845 这个值从何而来?是固定值吗?另外在 JNZ SHORT 00345110 处修改disable父进程检查后设
Alt+M对code段下内存访问断点,并没有直接来到OEP。不知为何?

这个值你查一下ASCII码表就知道了
说说你怎么改的,如果改了壳的话可能引起异常。
2004-10-9 22:02
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
23
最初由 forgot 发布
今天把这个项目从deadcode拖出来,继续改改.

好,期待你的新作:D
2004-10-9 22:03
0
雪    币: 98745
活跃值: (201039)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
24
支持!!!
2004-10-10 00:18
0
雪    币: 250
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
最初由 forgot 发布
今天把这个项目从deadcode拖出来,继续改改.


把载入的图标搞得再大一些~ 挡住调试的视线~ 看着图案做活会是什么心情:)
2004-10-14 11:40
0
游客
登录 | 注册 方可回帖
返回
//