第16课 手动脱壳的常规方法
更新时间:2024-04-05 07:33:01 阅读量: 综合文库 文档下载
第16课 手动脱壳的常规方法
手动脱壳主要分为三大步骤(你可以将其想像为程咬金的三板斧):①寻找入口点(OEP)、②转储(Dump)程序、③修复输入表(Import Table)。对于复杂的加密壳,还需要在①②之间再加上一个步骤:寻找魔力跳(Magic Jump)。
直接跟踪法
直接跟踪法的基本原则为:
1.时刻把自己想像成中国象棋中的“兵”或“卒子”,只准前进,不准后退。一旦往回跳,则在程序的下一行按F4,继续向下走(解释:F4——运行到指定行)。
2.一般情况下,一路按F8走。一旦追踪的过程中,目标程序运行起来,宣告脱壳失败。则需要重新来过,通常的术语被称为“程序跑飞”。 3.注意识别变形call(其实质是一种变形的jmp)。不能直接F8带过,会跑飞。这种情况下应该按F7。判断的方法是它所call的地址和它自身所在的当前行地址极其接近,感觉离得不远,像近房亲戚、孪生兄弟或姐妹。
4.遇到在循环中跑来跑去时,要想办法跳出循环圈。时刻留意其中一些跳的比较远的跳转,可以ctrl+G,直接到那个位置;或者按F2设断,F9或点
按钮,断下后再F2取消断点。
〔例1〕 目标程序:UnPackMe_EZIP1.0.exe。壳为ezip1.0。
程序载入后,来到这里。
F8,来到这里
F8走,直到这里,看到类似下图的跳转,由于是向下跳,注意看红线和V形向下小箭头,任由它跳即可。
来到下图的跳转时,当心,已经来到46861A,却要跳回到46855F。注意看红线和 ^形向上小箭头,不让它跳,在下一行(即46861F)用鼠标点住,按F4。
继续F8向下走,直到468688这行:
程序在46××××,却要跳到4271B0(42××××),如此大的跨段大跳跃,就是跳到入口点(传说中的OEP)的典型标志,看EAX的值也可知道=4271B0。所以OEP=4271B0
F8走一下,来到入口点。如下图:
经验:入口点处的代码一般为 push ebp mov ebp,esp 或 Push 0
我们用peid的找入口点插件验证一下:
确实没错。有时OEP的东西比较混乱,看着不像,这时需要在ollyDBG中
选择“插件”中的ollyDump脱壳插件脱壳
由于为压缩壳,没有破坏输入表,选项设置如下图:不要勾选“重建输入表”
点脱壳按钮,即可完成脱壳,命名为aa.exe 运行正常。Peid显示如下:可见,脱干净了。
最后,用lordpe的pe rebuilder减肥aa.exe。脱壳完成。 〔例2〕 脱壳UnPackMe_MEW1.1.exe 用例1的方法追踪,留意这里
留意这里(发现以后快速脱壳,可以用bp GetProcAddress,然后Alt+F9)
一路西天取经,不一会儿来到这里
鼠标点住4001FD行,按F4
注意返回值。由40XXXX到42XXXX。
堆栈窗口也能看到4271B0。F8一下,来到OEP,到站了,用ollyDUMP下车,dump下。
直接dump下来,命名为aa.exe。无论勾选哪些选项,均无法运行。这时,需要修复输入表(import table)。
于是,请出传说中唯一的注册表修复工具Import REConstructor v1.7 FINAL。 运行ImportREC,选择这个进程。如图:
把OEP改为000271B0,如图:
点IAT AutoSearch按钮,如图 ,弹出对话框,点确定
点“Get Imports”按钮,点“Show Invalid”按钮。如图:
没有错的,点“Fix Dump”按钮,选择aa.exe,进行修复,出来个aa_.exe,运行正常。 ++++++++++++++++++++++++++++++++++++++ 一些经验:在壳跳到OEP的时候一般是个跨段跳转, 跳转方法有很多, 如 JMP EAX 如EZIP
JMP XXXXXXXX, 如UPX$hit JMP [XXXXXXXX], JE [XXXXXXXX],
PUSH XXXXXXXX 然后紧跟一个RET 如aspack2.12,pecompact早期版本1.XX RETN 如MEW1.1 CALL XXXXXXXXX, CALL [XXXXXXXX], CALL EAX...
还有的是在SEH中直接指定EIP等等。
修复IAT一般用ImportREC, 填写好OEP的RVA, 先点IAT AutoSearch, 再点Get Import, 如果找到的API全部有效,就可以点Fix Dum了;如果有无效的,就需要修复。 先点Show Invalid, 再对这些无效的API点右键, 共有3个修复级别, 推荐直接使用第3个,效果比较好。全部API有效时就可以点Fix Dump了, 如果修复不了就只有用手工修复了。
没有错的,点“Fix Dump”按钮,选择aa.exe,进行修复,出来个aa_.exe,运行正常。 ++++++++++++++++++++++++++++++++++++++ 一些经验:在壳跳到OEP的时候一般是个跨段跳转, 跳转方法有很多, 如 JMP EAX 如EZIP
JMP XXXXXXXX, 如UPX$hit JMP [XXXXXXXX], JE [XXXXXXXX],
PUSH XXXXXXXX 然后紧跟一个RET 如aspack2.12,pecompact早期版本1.XX RETN 如MEW1.1 CALL XXXXXXXXX, CALL [XXXXXXXX], CALL EAX...
还有的是在SEH中直接指定EIP等等。
修复IAT一般用ImportREC, 填写好OEP的RVA, 先点IAT AutoSearch, 再点Get Import, 如果找到的API全部有效,就可以点Fix Dum了;如果有无效的,就需要修复。 先点Show Invalid, 再对这些无效的API点右键, 共有3个修复级别, 推荐直接使用第3个,效果比较好。全部API有效时就可以点Fix Dump了, 如果修复不了就只有用手工修复了。
正在阅读:
第16课 手动脱壳的常规方法04-05
一件快乐的事情作文450字06-12
全国病险水库除险加固专项规划项目开工情况05-15
朋友结婚真挚祝福语02-24
早上祝福话语02-24
甜蜜七夕情人节祝福语短信02-24
温馨浪漫七夕情人节祝福语02-24
可爱的小鸭子作文450字07-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 脱壳
- 手动
- 常规
- 方法