根据堆栈和寄存器判断被偷了OEP
搜索了下论坛,好象没发现有人说怎么判断偷OEP.我是新手,在其他地方看见有这东西就转了过来,需要的自己看下吧~
OD载入时的堆栈跟到达OEP时的堆栈,两者是一致的吧.
如果发现两者不一样,那应该被偷了
我看了2个OEP被偷的例子,
如OD加载时的堆栈是
0013FFC4 7C816FE7RETURN to kernel32.7C816FE7
0013FFC8 7C930041RETURN to ntdll.7C930041 from ntdll.7C930092
0013FFCC 00560778
0013FFD0 7FFD6000
0013FFD4 8054B6ED
0013FFD8 0013FFC8
0013FFDC 88A23020
0013FFE0 FFFFFFFFEnd of SEH chain
0013FFE4 7C839AF0SE handler
0013FFE8 7C816FF0kernel32.7C816FF0
0013FFEC 00000000
0013FFF0 00000000
0013FFF4 00000000
0013FFF8 004040D1<ModuleEntryPoint>
0013FFFC 00000000
到达OEP时,堆栈成了
0013FFBC 003A3543/CALL to GetModuleHandleA from 003A353E
0013FFC0 00000000\pModule = NULL
0013FFC4 7C816FE7RETURN to kernel32.7C816FE7
0013FFC8 7C930041RETURN to ntdll.7C930041 from ntdll.7C930092
0013FFCC 00560778
0013FFD0 7FFD6000
0013FFD4 8054B6ED
0013FFD8 0013FFC8
0013FFDC 88A23020
0013FFE0 FFFFFFFFEnd of SEH chain
0013FFE4 7C839AF0SE handler
0013FFE8 7C816FF0kernel32.7C816FF0
0013FFEC 00000000
0013FFF0 00000000
0013FFF4 00000000
0013FFF8 004040D1
0013FFFC 00000000
发现与一开始OD载入时不一致.
所以我猜测如果两者堆栈不一致,那就是被偷了OEP
0013FFBC 003A3543/CALL to GetModuleHandleA from 003A353E
0013FFC0 00000000\pModule = NULL
看到这2句就应该意识到可能真正的OEP已经执行过去了
谢谢楼猪,学习学习…… 谢谢楼主分享宝贵经验,学习了! 哦哦。学习了。谢谢楼主。。。。 我是新手,学习了 感谢分享 偶也来看看鲁猪的新方法 那有没有找到被偷的oep的快速方法呢? 丶纯情小强 发表于 2011-3-30 22:50 static/image/common/back.gif
那有没有找到被偷的oep的快速方法呢?
这个我也不知道~~
页:
[1]
2