吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6937|回复: 23
收起左侧

[原创] 脱壳(初学)-- 手脱nspack 1.3及一些疑问

  [复制链接]
無涯 发表于 2015-3-22 02:49
本帖最后由 無涯 于 2015-3-22 02:51 编辑

高尔基曾经曰过:学习永远不晚。虽然老夫已经一把年纪啦,但我相信坚持一定会有收获。。。
前辈们说得好,脱壳特别需要耐心。我觉得除了耐心,还需要一份持之以恒得心,昨天我手脱UPX壳得过程以及疑问发到论坛之后,
群里的前辈们还是很给力很耐心的解答了我的疑问,在这里非常感谢你们提供的帮助。由于星期六苦逼的要上班,所以今天也弄的比较晚(心酸程序员啊~~)
虽然感觉nspack 1.3跟UPX脱起来步骤差不多,可是手脱的时候还是产生了一些新的疑问,希望前辈们莅临指导,哈哈

疑问1:步骤二处我对ESP最浅显的理解应该没错吧。。
疑问2:教程里一般都是说遇到向上的跳转就不要让他实现,可是我觉得按F4后程序是运行到某处,向上的跳转还是实现了,应该是向上跳完运行到光标处吧
疑问3:步骤二的最后,我对OEP的判断是否有问题,如果是这样的话,那我在寻找OEP的时候也有看到0048464D 55 push ebp这样类似VC++入口特征的语句,这样,我如果是自己脱其他壳很可能就把这里当做OEP了呀,这个希望前辈们能耐心再指导一下
疑问4:这里为什么会出现无法定位 *** kernel32.dll 这个问题,为什么有些壳脱壳直接就可以跑起来了呢?
疑问5:用PE工具修复是PE工具大致做了哪些操作呢?
疑问6:用PE工具修复的时候,如果出现无效函数,直接剪切或删除指针就可以了吗,这里剪切指针实际是做了哪些操作呢?


步骤一:加载程序到od,这里就不查壳了,反正都知道是uspack1.3的壳,uspack也是压缩壳,目前没接触加密壳
1.png
一进入就看到关键句,pushad(PUSHAD指令压入32位寄存器,其入栈顺序是:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI .)前面的pushfd是压入标志寄存器,这里暂且不管吧
之前发帖提问怎么判断程序到达OEP的时候有位前辈就说过,不要一直抱着疑问。有些问题涉及的东西可能比较多,随着知识的积累就会得到解答的


步骤二:按F8,单步走
这里很快又看到一个pushad(如图2-1),我是这样理解的,根据我还不是很懂得ESP定律,堆栈平衡,这个pushad一般情况下后面会有一个与之对应的popad
疑问1:步骤二处我对ESP最浅显的理解应该没错吧。。
2-pushad.png
    图2-1
果然,很快就惊现popad(如图2-2),我们要找的是与开头对应的popad,继续单步走,遇到往上的跳转点击其后面不是call,也不是跳转语句的地方,按F4运行到此处
疑问2:教程里一般都是说遇到向上的跳转就不要让他实现,可是我觉得按F4后程序是运行到某处,向上的跳转还是实现了,应该是向上跳完运行到光标处吧
3-popad.png
    图2-2
继续往下走,我们又一次看到popad,这个就是我们要寻找的(如图2-3),这里我们可以看到,还有与之前对应的popfd,
4-realpopad.png
    图2-3
继续单步走,遇到一个大的跳转,那就是程序的入口点了
根据之前前辈的解答,压缩壳遇到大的跳转一般就是跳到oep了,还有就是我上网搜了一下,可以根据语言特征判断是否达到oep(如图2-5),我们可以猜测这个程序是用delphi或者VC++写的(不知道对不对呀!!)
疑问3:步骤二的最后,我对OEP的判断是否有问题,如果是这样的话,那我在寻找OEP的时候也有看到0048464D 55 push ebp这样类似VC++入口特征的语句,这样,我如果是自己脱其他壳很可能就把这里当做OEP了呀,这个希望前辈们能耐心再指导一下
6-oep.png
      图2-4
00.png
     图2-5

步骤三:脱壳
找到oep后,我们就可以脱壳了,右键点击oep的位置,选择 用OllyDump脱壳调试进程,然后点击脱壳按钮

步骤四:是否正常运行
双击之后如下图
11.png
这时候不要慌,教程说得不要慌,我们用pe修复工具修复一下
打开impREC(如图4-1),抓取带有nspack1.3压缩壳得程序,输入程序OEP,点击自动查找IAT,获取输入表,然后点击无效函数,看到有一个无效函数,右键单击他,选择 剪切指正 转存
打开转存好的exe,顺利运行,脱壳成功
疑问4:这里为什么会出现无法定位 *** kernel32.dll 这个问题,为什么有些壳脱壳直接就可以跑起来了呢?
疑问5:用PE工具修复是PE工具大致做了哪些操作呢?
疑问6:用PE工具修复的时候,如果出现无效函数,直接剪切或删除指针就可以了吗,这里剪切指针实际是做了哪些操作呢?
12.png
    图4-1
13.png
    如图4-2
14.png

脱壳不容易,发帖更不容易,接下来就不重复做这些工作了,往上很多教程都有,很详细,我在发这些贴似乎用处不大,
还有北斗其他版本的壳就明天再脱,有什么问题以后再张贴出来吧,希望前辈们还能进来指导!!

1.png
7-dump.png
9.png
10.png

免费评分

参与人数 5威望 +1 吾爱币 +2 热心值 +4 收起 理由
海天一色001 + 1 + 1 用心讨论,共获提升!
开始的复活节 + 1 + 1 谢谢@Thanks!
tmsdy + 1 来互相评个分,写原创好辛苦的
Hmily + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
duanbin_109 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2015-3-23 20:25
我回答已知的答案问题:
疑问2的f4是循环运行完停在那的,不是直接跳过去的。
疑问3 慢慢熟悉各个程序入口吧,这个是经验。
疑问4 IAT没修复好是不能跑的,能跑的可能只是你机器可以,换个机器就不行了,特别是win7系统可能就直接无法跑起来,要说原因太长了。
疑问5和6 都是修复iat的步骤,如果那些无效函数是没有用的,不是加密的自然可以删除,如果加密的还需要解密,压缩壳一般不加密。
治愈先生 发表于 2015-3-22 08:41
不太建议直接使用OD插件来脱,现在主流LordPE来脱,然后用ImpREC FINAL 1.7来修复。用插件来脱就会出现以上楼主指出的问题。像一些双层壳的话你用插件来脱百分之70会出现问题:脱壳后的程序不能运行。还望攻OD插件大神能够修复或改进
 楼主| 無涯 发表于 2015-3-22 02:53
初学脱第二个壳就遇到不少问题呀,希望前辈们耐心指导
还有,为什么后面会跟着几张我没插入的图片啊 有些图片为什么加载不出来,版主~~~~
KingMe 发表于 2015-3-22 08:16
当你把这些教程中的基础壳全部搞定后,就开始百度一些不是强壳的软件开始实战,1月小成,半年中等,1年大牛就是你
Poner 发表于 2015-3-22 08:16
無涯 发表于 2015-3-22 02:53
初学脱第二个壳就遇到不少问题呀,希望前辈们耐心指导
还有,为什么后面会跟着几张我没插入的图片啊 有些 ...

还有什么图片没有加载?   这问题你应该  @Hmily   
图谱 发表于 2015-3-22 08:16
你没插入进去
tony2526 发表于 2015-3-22 08:44
正在尝试用lordpe来脱壳,不是太熟练
禁惹尘埃 发表于 2015-3-22 10:08 来自手机
xiaomo的脱壳教程??
 楼主| 無涯 发表于 2015-3-22 11:58
KingMe 发表于 2015-3-22 08:16
当你把这些教程中的基础壳全部搞定后,就开始百度一些不是强壳的软件开始实战,1月小成,半年中等,1年大牛 ...

恩恩,谢谢前辈指导!!!我会坚持到那一天的
 楼主| 無涯 发表于 2015-3-22 12:00
Poner 发表于 2015-3-22 08:16
还有什么图片没有加载?   这问题你应该  @Hmily

Hmily是版主是吧?! 可是好像人家很忙 没人理我~~~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表