就是一道逆向的简单脱壳题, 由UPX加的壳。然后就要进行脱壳, 想着手动脱壳 熟悉一下UPX加壳的原理。
首先UPX加壳就是压缩 原程序的大小。
UPX加壳就是在 原程序头部或者 其他地方插入一段代码,这段代码是用来解析后面被加密的代码(这种加密使原来的代码量变小)。
1是插入的代码,234是 被加密的代码,56是其他
1 | 2 | 3 | 4 | 5 | 6 |
1 | 7 | 8 | 9 | 5 | 6 |
789是原代码。
在程序执行时,通过1处的代码对后面的代码进行解析, 恢复789。
所以在1处的代码执行完后,后面被加密的代码也被解密完成,接着就是跳转到OEP(程序入口处),就可以进行ollydbg进行脱壳。
通常是
pushad
.
.
.
popad
.
jmp...(popad后第一个jmp开始跳到OEP,这也是常用的直接一步跳转到OEP处)
ESP定律堆栈平衡和单步向下调的 原理都是一样,最终都要确定到此处。