第1 6 课 手动脱壳的常规方法 手动脱壳主要分为三大步骤(你可以将其想像为程咬金的三板斧):①寻找入口点(OEP)、②转储(Dump)程序、③修复输入表(Import Table)
对于复杂的加密壳,还需要在①②之间再加上一个步骤:寻找魔力跳(Magic Jump)
直接跟踪法 直接跟踪法的基本原则为: 1
时刻把自己想像成中国象棋中的“兵”或“卒子”,只准前进,不准后退
一旦往回跳,则在程序的下一行按 F4,继续向下走(解释:F4——运行到指定行)
一般情况下,一路按 F8走
一旦追踪的过程中,目标程序运行起来,宣告脱壳失败
则需要重新来过,通常的术语被称为“程序跑飞”
注意识别变形 call(其实质是一种变形的 jmp)
不能直接F8带过,会跑飞
这种情况下应该按 F7
判断的方法是它所 call的地址和它自身所在的当前行地址极其接近,感觉离得不远,像近房亲戚、孪生兄弟或姐妹
遇到在循环中跑来跑去时,要想办法跳出循环圈
时刻留意其中一些跳的比较远的跳转,可以ctrl+G,直接到那个位置;或者按 F2设断,F9或点按钮,断下后再F2取消断点
〔例1〕 目标程序:UnPackMe_EZIP1
壳为ezip1
程序载入后,来到这里
F8,来到这里 F8 走,直到这里,看到类似下图的跳转,由于是向下跳,注意看红线和 V 形向下小箭头,任由它跳即可
来到下图的跳转时,当心,已经来到 46861A,却要跳回到 46855F
注意看红线和 ^形向上小箭头,不让它跳,在下一行(即 46861F)用鼠标点住,按 F4
继续F8 向下走,直到468688 这行: 程序在46××××,却要跳到4271B0(42××××),如此大的跨段大跳跃,就是跳到入口点(传说中的 OEP)的典型标志,看 EAX 的值也可知道=4271B0
所以 OEP=42