WEB开发网
开发学院网络安全黑客技术 寻找真正的入口(OEP)--广义ESP定律 阅读

寻找真正的入口(OEP)--广义ESP定律

 2007-01-14 16:44:36 来源:WEB开发网   
核心提示: EAX00000000ECX0012FFB0EDX7FFE0304EBX7FFDF000ESP0012FFC4EBP0012FFF0ESI77F51778ntdll.77F51778EDI77F517E6ntdll.77F517E6EIP004010CCnote-upx.004010CCC
EAX00000000
ECX0012FFB0
EDX7FFE0304
EBX7FFDF000
ESP0012FFC4
EBP0012FFF0
ESI77F51778ntdll.77F51778
EDI77F517E6ntdll.77F517E6
EIP004010CCnote-upx.004010CC
C0 ES002332bit0(FFFFFFFF)
P1 CS001B32bit0(FFFFFFFF)
A0 SS002332bit0(FFFFFFFF)
Z1 DS002332bit0(FFFFFFFF)
S0 FS003832bit7FFDE000(FFF)
T0 GS0000NULL
D0
O0 LastErrERROR_MOD_NOT_FOUND(0000007E)

呵呵~是不是除了EIP不同以外,其他都一模一样啊!

为什么会这样呢?

我们来看看UPX的壳的第一行:

0040EC90n> 60       pushad   //****注意这里*****
0040EC91  BE15B04000   movesi,note-upx.0040B015

PUSHAD就是把所有寄存器压栈!我们在到壳的最后看看:

0040EE0F  61       popad   //****注意这里*****
0040EE10 -E9B722FFFF   jmpnote-upx.004010CC //JMP到OEP

POP就是将所有寄存器出栈!

而当我们PUSHAD的时候,ESP将寄存器压入了0012FFC0--0012FFA4的堆栈中!如下:

0012FFA4 77F517E6 返回到ntdll.77F517E6来自ntdll.77F78C4E     //EDI
0012FFA8 77F51778 返回到ntdll.77F51778来自ntdll.77F517B5     //ESI
0012FFAC 0012FFF0                          //EBP
0012FFB0 0012FFC4                         //ESP
0012FFB4 7FFDF000                         //EBX
0012FFB8 7FFE0304                        //EDX
0012FFBC 0012FFB0                        //ECX
0012FFC0 00000000                       //EAX

所以这个时候,在教程上面就告诉我们对ESP的0012FFA4下硬件访问断点。也就是说当程序要访问这些堆栈,从而恢复原来寄存器的值,准备跳向苦苦寻觅的OEP的时候,OD帮助我们中断下来。

上一页  1 2 3 4 5  下一页

Tags:寻找 真正 入口

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接