找回密码
 立即注册

QQ登录

只需一步,快速开始

1401软件论坛总版规【新人必看】如何正确发布收费帖子加入vip系统学习仅需498元免费获得1401软件安全论坛vip开通本站VIP会员请联系QQ 564853771
论坛纪念优盘Beyond EXE超强加密器V1.61401论坛破解工具包 2017-9-12[破解班vip]入门篇[破解班vip]基础篇
[破解班vip]脱壳篇[破解班vip]实战篇[破解班vip]网络验证篇[破解班vip]零基础HOOK教程[破解班vip]零基础易语言入门
[破解班vip]零基础c语言入门[破解班vip]零基础Delphi编程入门[破解班vip]寒假培训课程共7课[破解班vip]破解提高篇[破解班vip]易语言培训课程
[破解班vip]核心技术培训篇[破解班vip]pe格式与pe操作[破解班vip]2022全新封包-山寨-爆破全系列[原创课程]c++单文档框架课程[逆向班vip]汇编语句与反汇编基础
[逆向班vip]全自动扫雷辅助[逆向班vip]手机模拟按键[逆向班vip]植物大战僵尸辅助广告位招租...付费破解软件 +Q 564853771
查看: 2842|回复: 0

VMP脱壳脚本(3)

[复制链接]
  • TA的每日心情
    奋斗
    2019-12-9 15:37
  • 签到天数: 44 天

    [LV.5]常住居民I

    11

    主题

    91

    回帖

    196

    积分

    终身vip会员

    UID
    9295
    元宝
    279
    威望
    60
    贡献
    3
    信誉值
    0
    精华
    0
    在线时间
    19 小时
    注册时间
    2017-10-31
    最后登录
    2019-12-9
    违规
    0
    积分
    196

    破解班vip

    发表于 2017-12-5 16:40:57 | 显示全部楼层 |阅读模式
    Ȧ
    跟进去看下流程
    00E77D14    90              nop
    00E77D15    51              push ecx            保存环境              
    00E77D16    66:F7D1         not cx           垃圾代码
    00E77D19    8B4C24 04       mov ecx,dword ptr ss:[esp+0x4]    栈顶+4(调用CALL的返回地址)给ECX,
    00FB7CFF    8D49 01         lea ecx,dword ptr ds:[ecx+0x1]   取 返回地址+1的值 给ECX
    01013FB5    894C24 04       mov dword ptr ss:[esp+0x4],ecx  重新写入到返回处
    01013FB9    B9 A1598A00     mov ecx,008A59A1 计算地址
    010566B2    8B89 94C36C00   mov ecx,dword ptr ds:[ecx+0x6CC394] 计算地址
    00E95200    8D89 19378077   lea ecx,dword ptr ds:[ecx+0x77803719] 计算地址
    00FEA363    870C24          xchg dword ptr ss:[esp],ecx  真实函数地址给栈顶,还原环境      
    010ABADE    C3              retn
    这个 有点不一样啊,很简单 看调用CALL 的下面有一个 RETN啊,这要是正常返回 程序还不得跑飞啊,VMP巧妙的利用 4 5 6三行代码 就搞定了,这写壳的人真是脑洞大开啊!
    所有的IAT加密就这样完了吗??? NO  还有更脑洞大开的 往下看

    跟进去看看
    0119D768    90              nop
    0106B2C9    872C24          xchg dword ptr ss:[esp],ebp           交换栈顶的值,还原栈顶
    00F3E26F    55              push ebp                              保存返回地址
    00F3E270    F7D5            not ebp                               垃圾代码
    00F3E272    50              push eax                              保存环境
    00F3E273    B8 D41D4300     mov eax,00431DD4  计算地址
    00F3E278    66:8BEB         mov bp,bx  垃圾代码
    00F3E27B    8B80 41F7BE00   mov eax,dword ptr ds:[eax+0xBEF741]  计算地址
    00F3E281    66:0F4FE8       cmovg bp,ax  垃圾代码
    00F3E285    66:8BE8         mov bp,ax   垃圾代码
    00F3E288    8D80 903F170C   lea eax,dword ptr ds:[eax+0xC173F90]  计算地址
    00F3E28E    0FB7E8          movzx ebp,ax 垃圾代码
    00F3E291    8BE8            mov ebp,eax     真实函数地址给 EBP
    00F3E293    58              pop eax   还原 寄存器
    011B5D71    C3              retn
    这是在干啥呢?? 咋把真实函数地址 给了 EBP呢? 看调用处的下面 有一个 call ebp 明白了吧 这是把   mov xx,[????????]  整成了一个CALL哦,再来看下堆栈 调用处pop  EBP , CALL内 第2行 有把栈顶的值还原了,然后把函数的返回地址重新PUSH进去,这里处理的很巧妙,所有 调用处的 pop ebp也是垃圾指令,这就完了???NO还有往下看

    跟进去看下
    00E97E5D    90              nop
    00E97E5E    0FBFDB          movsx ebx,bx  垃圾代码
    010C1083    50              push eax                    保存环境     
    010C1084    8B4424 04       mov eax,dword ptr ss:[esp+0x4]      获取当前CALL的返回地址给EAX
    00E2EB3F    8D40 01         lea eax,dword ptr ds:[eax+0x1]   获取当前CALL返回地址+1给EAX
    00E2EB42    0F45DB          cmovne ebx,ebx    垃圾代码
    00E2EB45    66:0FB6DB       movzx bx,bl  垃圾代码
    00E2EB49    894424 04       mov dword ptr ss:[esp+0x4],eax  保存返回地址
    00E2EB4D    B8 012C4300     mov eax,00432C01 计算地址
    00E2EB52    66:0FBEDB       movsx bx,bl 垃圾代码
    00E2EB56    66:8BDF         mov bx,di 垃圾代码
    01170378    8B80 F58CC000   mov eax,dword ptr ds:[eax+0xC08CF5] 计算地址
    0117037E    0FB7DC          movzx ebx,sp 垃圾代码
    01170381    0F41DE          cmovno ebx,esi      垃圾代码
    01170384    F6D7            not bh 垃圾代码
    01170386    8D80 145A2C32   lea eax,dword ptr ds:[eax+0x322C5A14] 计算地址
    0117038C    B3 85           mov bl,0x85 垃圾代码
    0117038E    8ADE            mov bl,dh 垃圾代码
    01170390    8BD8            mov ebx,eax   真实函数地址给 EBX              
    01170392    0FBFC2          movsx eax,dx 垃圾代码
    01170395    C6C4 E2         mov ah,0xE2 垃圾代码
    01170398    0FC8            bswap eax             垃圾代码            
    0117039A    58              pop eax      还原环境                    
    0117039B    C3              retn
    认真看 了上面的部分,这里不难理解了吧, 4 5 8行处理调用处的 下面 retn 的,函数是获取 EBX的调用值的

    一共6种 IAT相关的处理,所以我是 一边写脚本一边骂写 VMP壳的人,要不要这么坑啊!不多说了下面贴上脚本!需要的自己去下!   链接:https://pan.baidu.com/s/1geYm4YB 密码:km9e

    评分

    参与人数 1威望 +3 贡献 +3 元宝 +3 收起 理由
    admin + 3 + 3 + 3 很给力!

    查看全部评分

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|1401软件安全 ( ICP备16034480号 )

    GMT+8, 2024-5-3 00:03 , Processed in 0.636812 second(s), 26 queries , Gzip On.

    Powered by Discuz! X3.5

    Copyright © 2001-2020, Tencent Cloud.

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