网络验证吧 关注:2,981贴子:3,902
  • 16回复贴,共1

【转帖】脱各种小学生程序外壳教程(包括VMP)

只看楼主收藏回复



IP属地:浙江1楼2014-12-12 18:52回复
    首先。需要一个小学生程序:

    编译

    相信大家都知道如果没加壳很容易破解。
    不会的请去骇客吧看看:
    http://tieba.baidu.com/p/3113584953


    IP属地:浙江2楼2014-12-12 18:52
    回复
      开始加壳。第一种壳:UPX
      查壳:

      OD打开:

      其中pushad是自解压入口点。看到这个多半是压缩壳。
      ESP定律:
      F7一次

      右键esp,数据窗口中更随,点击左下角第一个。
      断点-硬件断点(有些是硬件访问)-word
      之后F9运行。
      来到这里

      0049C385 8D4424 80 lea eax, dword ptr [esp-0x80]
      0049C389 6A 00 push 0x0
      0049C38B 39C4 cmp esp, eax
      0049C38D ^ 75 FA jnz short 0049C389
      0049C38F 83EC 80 sub esp, -0x80
      0049C392 - E9 A6B8FAFF jmp 00447C3D
      F7你会发现有循环,怎么办?在
      0049C38F 83EC 80 sub esp, -0x80这里单机一次,F4,再单机,F4

      如图。
      F7两次到底OEP

      右键OEP,dump跳出来


      IP属地:浙江3楼2014-12-12 18:53
      回复
        保存:

        成功被脱壳,其他的区段减肥啊这些自己去百度看看
        脱壳原理:任何壳都不可能修改源代码,只是想办法让自己包裹住原程序,但是包裹总要有打开时候,那就是OEP,找到OEP让程序从这跳出。脱壳大概原理


        IP属地:浙江4楼2014-12-12 18:53
        回复
          第二种壳:
          KBys Packer


          根据近callf8进入的原理,我们进入第一个call
          结果发现他又返回来了==
          这种壳ESP定律也可以拿下不过我演示一下常规脱壳方法:
          一直F7,进CALL F8进,远的不进。遇到大跳转的非常有可能是OEP。
          VC++常用入口点:
          00488A69 >/$ 55 push ebp
          00488A6A |. 8BEC mov ebp, esp
          00488A6C |. 6A FF push -0x1
          00488A6E |. 68 F0B56200 push 0062B5F0
          00488A73 |. 68 307F4800 push 00487F30 ; SE 处理程序安装
          00488A78 |. 64:A1 0000000>mov eax, dword ptr fs:[0]
          00488A7E |. 50 push eax
          00488A7F |. 64:8925 00000>mov dword ptr fs:[0], esp
          00488A86 |. 83EC 58 sub esp, 0x58
          00488A89 |. 53 push ebx
          00488A8A |. 56 push esi
          00488A8B |. 57 push edi
          00488A8C |. 8965 E8 mov dword ptr [ebp-0x18], esp
          00488A8F |. FF15 3CA46100 call dword ptr [<&kernel32.GetVersion>; kernel32.GetVersion
          可以看出很多花指令,我们无视

          遇到向上跳的在下面一行点击然后F4
          不过事情还没结束
          我们继续走啊走。

          走到这里就是OEP了~


          IP属地:浙江5楼2014-12-12 18:53
          回复
            如果你嫌烦的esp定律脱它
            过程:
            1—>OD载入,ESP脱壳详细可见upx脱壳,这个就简单记录了。OD载入后F8,看右上角寄存器发生的变化,选中ESP右键跟随到数据窗口。在左下角的地址框里右键断点-硬件访问-word。
            2—>F9来到以下代码,看到以下代码后删除刚才的断点。继续F8,注意004AD3E5 pushad下面的call,F8到这一步时看寄存器又和上次一样。重复步骤1.
            004AD3D3 B8 E5D30A00 mov eax,0xAD3E5
            004AD3D8 BA 00004000 mov edx,EXIT断点.00400000
            004AD3DD 03C2 add eax,edx
            004AD3DF FFE0 jmp eax
            004AD3E1 B1 15 mov cl,0x15
            004AD3E3 0000 add byte ptr ds:[eax],al
            004AD3E5 60 pushad
            004AD3E6 E8 00000000 call EXIT断点.004AD3EB
            3—>F9后,又回到了上面的代码。F8 4次之后来到
            0040A3CD
            0044E331 /. 55 push ebp
            0044E332 |. 8BEC mov ebp,esp
            0044E334 |. 6A FF push -0x1
            0044E336 |. 68 30784700 push EXIT断点.00477830
            0044E33B |. 68 9C2C4500 push EXIT断点.00452C9C ; SE 处理程序安装
            0044E340 |. 64:A1 0000000>mov eax,dword ptr fs:[0]
            0044E346 |. 50 push eax
            0044E347 |. 64:8925 00000>mov dword ptr fs:[0],esp
            0044E34E |. 83EC 58 sub esp,0x58
            0044E351 |. 53 push ebx
            0044E352 |. 56 push esi
            0044E353 |. 57 push edi
            0044E354 |. 8965 E8 mov [local.6],esp
            0044E357 |. FF15 64D24600 call dword ptr ds:[0x46D264] ; kernel32.GetVersion
            看到以上代码很熟悉了,和第一季第七课的ESP定律里的一样,这就是OEP入口,备注:如果来到这里提示的不是 55 push ebp 而是55 8B EC …… 就在这行右键选分析-然后分析代码即可显示如上代码。之后删除断点,右键脱壳。


            IP属地:浙江6楼2014-12-12 18:53
            回复

              ASPack 2.12 -> Alexey Solodovnikov
              OD载入

              单步进第二个call,因为原先的都是花指令


              IP属地:浙江7楼2014-12-12 18:54
              回复
                接着一直走,走到oep
                麻烦的esp定律后走几步就到了


                IP属地:浙江8楼2014-12-12 18:54
                回复
                  接下来的壳都是加密壳(来点重口味):

                  一般遇到加密壳,OD要经过一些改装
                  插件:strongOD,隐藏OD,设置那里忽略所有异常
                  还有一个有意思的是magic JUMP,这个如果不干掉会有很多问题


                  IP属地:浙江9楼2014-12-12 18:54
                  回复
                    删除断点,再直接 Alt+F9 返回了,在 Magic Jump 处 用跟随命令来到跳转处.向下看,找到那个JMP. 在此处F2 下断,然后Shift+F9 运行到此处,再取消断点. (纯属复制,过程一样,不想打字)
                    回到 Magic Jump ,把刚才的修改撤消. 然后Alt+M打开内存映射窗口.
                    在 00401000 处单击鼠标右键,设置内存访问断点,Shift+F9运行. 稍等片刻,直接到达OEP.


                    IP属地:浙江10楼2014-12-12 18:55
                    收起回复
                      如果你觉得这些还不够的,我们来脱一下VMP。
                      有些小学生做的钓鱼啊,病毒啊喜欢加VMP,以为加了就很牛了?huoji今天教菜鸟们手拖VMP。
                      VMP 2.09全保护脱壳教程

                      还是老规矩,OD插件隐藏起来,忽略异常

                      查壳


                      IP属地:浙江11楼2014-12-12 18:55
                      回复
                        转帖结束,转自易语言吧,供学习 @a15695178 加精


                        IP属地:浙江13楼2014-12-12 18:56
                        回复
                          好帖得顶,我们就把这个帖吧发展成破解跟防破解技术交流吧,跟网路验证吧


                          IP属地:江苏14楼2014-12-12 23:51
                          收起回复
                            小伙伴们在哪里~


                            15楼2015-08-25 23:07
                            回复
                              VMP修复教程?


                              IP属地:安徽17楼2020-02-13 22:26
                              回复