脱壳--00.exe

使用OD打开 发现不能使用esp定律了 我们可以通过特征去找到OEP(入口点)

直接运行程序 发现是FF15方式调用函数 就可以确定是VS的程序

vs程序大致分成两种 vs20xx (特征函数:GetSystemTimeAsFileTime)和 vc++6.0(特征函数:GetVersion) 在这两个函数上下断点 

 

直接运行程序 程序断下 发现并不是我们的模块调用的此函数 继续运行直到可返回我们的模块位置 

返回自己代码的模块调用的函数以后,在向上一层应该就是我们的call ?? ?? ?? ?? jmp 

vs release版的OEP的特征 下断点重新运行 

 直接dump程序

这时候dump出来的程序是没办法运行的所以需要 ImpREC工具去修复导入表 获取导入表后发现导入了一个dll 所以我们需要用OD检查下这个程序的导入表(随便找一个函数调用 call的地址就是导入表)

检查后发现他的导入表的dll间隔是利用FFFFFFFF隔开的 正常使用00000000隔开

 impREC这个工具就是遇到无效的API的时候就会停止搜索 所以看到FFFFFFFF以后就停止搜索了 我们需要手动的把f更改为0 填充后在dump一下

 

在次使用impREC扫描一下  函数就都出来了 在转存到文件

最后程序成功运行 也就脱壳成功

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
步骤 步骤 的概念: 所谓“”就是专门压缩的工具。 这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的在功能上有很多相似的地方,所以我们就形象地称之为程序的的作用: 1.保护程序不被非法修改和反编译。 2.对程序专门进行压缩,以减小文件大小,方便传播和储存。 和压缩软件的压缩的区别是 压缩软件只能够压缩程序 而经过压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行 下面来介绍一个检测的软件 PEID v0.92 这个软件可以检测出 450种 新版中增加病毒扫描功能,是目前各类查工具中,性能最强的。 另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。 支持文件夹批量扫描 我们用PEID对easymail.exe进行扫描 找到的类型了 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 说明是UPX的 下面进行 步骤2 对一个加了的程序,去除其中无关的干扰信息和保护限制,把他的去,解除伪装,还原软件本来的面目。这个过程就叫做成功的标志 后的文件正常运行,功能没有损耗。 还有一般后的文件长度都会大于原文件的长度。 即使同一个文件,采用不同的软件进行,由于软件的机理不通,出来的文件大小也不尽相同。 关于有手动和自动 自动就是用专门的 很简单 按几下就 OK了 手动相对自动 需要的技术含量微高 这里不多说了 UPX是一种很老而且强大的 不过它的机随处就能找到 UPX本身程序就可以通过 UPX 文件名 -d 来解压缩 不过这些需要的 命令符中输入 优点方便快捷 缺点DOS界面 为了让大家省去麻烦的操作 就产生了一种叫 UPX SHELL的外软件 UPX SHELL v3.09 UPX 外程序! 目的让UPX的傻瓜化 注:如果程序没有加 那么我们就可以省去第二步的了,直接对软件进行分析了。 完后 我们进行 步骤3 运行程序 尝试注册 获取注册相关信息 通过尝试注册 我们发现一个关键的字符串 “序列号输入错误” 步骤4 反汇编 反汇编一般用到的软件 都是 W32Dasm W32dasm对于新手 易于上手 操作简单 W32Dasm有很多版本 这里我推荐使用 W32Dasm 无极版 我们现在反汇编WebEasyMail的程序文件easymail.exe 然后看看能不能找到刚才的字符串 步骤5 通过eXeScope这个软件来查看未能在w32dasm中正确显示的字符串信息 eXeScope v6.50 更改字体,更改菜单,更改对话框的排列,重写可执行文件的资源,包括(EXE,DLL,OCX)等。是方便强大的汉化工具,可以直接修改用 VC++ 及 DELPHI 编制的程序的资源,包括菜单、对话框、字符串表等 新版可以直接查看 加文件的资源 我们打开eXeScope 找到如下字串符 122,"序列号输入错误 " 123,"恭喜您成为WebEasyMail正式用户中的一员! " 124,注册成功 125,失败 重点是122 步骤6 再次返回 w32dasm * Possible Reference to String Resource ID=00122: "?鲹e ?" 但是双击后 提示说找不到这个字串符 不是没有 是因为 "?鲹e ?"是乱码 w32dasm对于中文显示不是太好 毕竟不是国产软件 先把今天会用到的汇编基本指令跟大家解释一下 mov a,b ;把b的值赋给a,使a=b call :调用子程序 ,子程序以ret结为 ret :返回主程序 je或jz :若相等则跳转 jne或jnz :若不相等则跳转 push xx:xx 压栈 pop xx:xx 出栈 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 我们搜索 Possible Reference to String Resource ID=00122 因为对E文支持很好 我们来到了 * Referenced by a (U)nconditional or
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值