首页
社区
课程
招聘
[求助]UPX壳疑问
发表于: 2015-4-21 22:27 5228

[求助]UPX壳疑问

2015-4-21 22:27
5228
UPX的壳:

pushad 执行后ESP=0018FF6C;下了硬件断点。
我利用F9堆栈平衡原理跟踪到:
00677A50   .  8D87 37020000 LEA EAX,DWORD PTR DS:[EDI+237]
00677A56   .  8020 7F       AND BYTE PTR DS:[EAX],7F
00677A59   .  8060 28 7F    AND BYTE PTR DS:[EAX+28],7F
00677A5D   .  58            POP EAX
00677A5E   .  50            PUSH EAX
00677A5F   .  54            PUSH ESP
00677A60   .  50            PUSH EAX
00677A61   .  53            PUSH EBX
00677A62   .  57            PUSH EDI
00677A63   .  FFD5          CALL EBP
00677A65   .  58            POP EAX
00677A66   .  61            POPAD
00677A67   .  8D4424 80     LEA EAX,DWORD PTR SS:[ESP-80]
00677A6B   >  6A 00         PUSH 0
00677A6D   .  39C4          CMP ESP,EAX
00677A6F   .^ 75 FA         JNZ SHORT JDZS_1.00677A6B
00677A71   .  83EC 80       SUB ESP,-80
00677A74   .- E9 8EAFE4FF   JMP JDZS_1.004C2A07

“00677A74   .- E9 8EAFE4FF   JMP JDZS_1.004C2A07”这句看着就像往OEP跳。
然后我跟进,结果如图:
004C2A07    55              PUSH EBP
004C2A08    8BEC            MOV EBP,ESP
004C2A0A    6A FF           PUSH -1
004C2A0C    68 C0375C00     PUSH JDZS_1.005C37C0
004C2A11    68 78524C00     PUSH JDZS_1.004C5278
004C2A16    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
004C2A1C    50              PUSH EAX
004C2A1D    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
004C2A24    83EC 58         SUB ESP,58
004C2A27    53              PUSH EBX
004C2A28    56              PUSH ESI
004C2A29    57              PUSH EDI
004C2A2A    8965 E8         MOV DWORD PTR SS:[EBP-18],ESP
004C2A2D    FF15 E8815200   CALL DWORD PTR DS:[5281E8]               ; kernel32.GetVersion
004C2A33    33D2            XOR EDX,EDX
004C2A35    8AD4            MOV DL,AH
004C2A37    8915 74776600   MOV DWORD PTR DS:[667774],EDX
004C2A3D    8BC8            MOV ECX,EAX
004C2A3F    81E1 FF000000   AND ECX,0FF
004C2A45    890D 70776600   MOV DWORD PTR DS:[667770],ECX
004C2A4B    C1E1 08         SHL ECX,8
004C2A4E    03CA            ADD ECX,EDX
004C2A50    890D 6C776600   MOV DWORD PTR DS:[66776C],ECX
004C2A56    C1E8 10         SHR EAX,10
004C2A59    A3 68776600     MOV DWORD PTR DS:[667768],EAX

这个004C2A07处明显就是OEP位置啊,但是ESP和原先的0018FF6C不一样,这个是什么问题,有人能帮个忙解释一下吗?

附件: jdzs.rar

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2741
活跃值: (2176)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
从断点到我找到的OEP,都没有出现ESP出现相同的时候。。菜菜求大神们赐教!
2015-4-21 22:30
0
雪    币: 2741
活跃值: (2176)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
感觉那里明显是oep啊,下面代码是典型的c++入口代码,但esp为什么和原来的esp不一样呢?好纠结
2015-4-21 22:37
0
雪    币: 2741
活跃值: (2176)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
解压壳调用前的寄存器的直和调用后的植一样才对,可能我在WIN7上调试哪里出了问题,今天在XP里一下就解除壳了..thanks
2015-4-22 13:57
0
雪    币: 237
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
upx完美脱壳方法: upx -d 要脱壳的文件
上传的附件:
2015-4-22 17:59
0
雪    币: 2741
活跃值: (2176)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
这个我知道,我就是想学学手动脱壳和PE文件格式,不过还是谢谢了。
2015-4-22 19:10
0
游客
登录 | 注册 方可回帖
返回
//