zoukankan      html  css  js  c++  java
  • [3.12]学习笔记

    接触到VMP是一个偶然,但是既然遇到了,那么就慢慢学习他,毕竟,长城不是一
    天码成的,逆向本来就是一个耗时的事情,写壳的人都研究了这么久,那么我们只有
    一点一滴的领略他的精华。
    ************************
    关于脱VMP的壳:
    今天找到了一个秒杀所有壳找OEP的方法,感觉甚是神奇,虽然知道这个方法并不是
    100%有用,但是不失作为去找到OEP的一个渠道。
    ************************
    http://bbs.pediy.com/showthread.php?t=155215
    这篇帖子讲了VMP的今生和过去,非常长,今天只看了一点点,略感困倦,没看完
    的明天再看。
    ************************
    今天的收获有:VMP的加密机制分为2部分,乱序膨胀,字节解释。

    PUSH DWORD(key:关系到后面的跳转/立即数)
    CALL xxxxxxxx

    ,key会变化,当VM遇到一些不能虚拟的代码,就会跳出虚拟机,再次进入的时候又
    是相同的push DWORD,CALL xxxxxxx
    总之,当VMP出了虚拟机,再次进入虚拟机的时候,第一句代码都是一个KEY打头,然后
    是一个CALL指令,才是入口指针.

    PUSH和CALL之后,跟着的就是一大串以JXX或者JMP或者是CALL或者是RET组成的
    代码乱流.

    我们看到的所有的都是代码乱流,是毫无逻辑的,至于JXX,JMP,CALL,RET,这4种指
    令起的作用都是”衔接”.和逻辑无半毛钱关系.
    (顺带提前说一句:VMP加密之后,所有原始的JXX,JMP,CALL,RET,都会被转为最终形
    式VM层的VM_JMP,所以你看到的所有X86的这些指令,都是衔接用的,一个真实的含
    义都没有).

  • 相关阅读:
    如何写出优秀的代码[转载]
    [转载]Java中常用日期功能综合
    JS WebBrowser 实现打印预览
    想成为优秀的技术人员你必须做到的几件事情【转载】
    JS打印
    js阿拉伯数字转中文大写
    从 SQL Server 2005 中处理 XML
    Visual Studio 2005 Express October 2004 CTP完整版本的下载
    Debug和Release的区别
    ASP.NET 中的正则表达式
  • 原文地址:https://www.cnblogs.com/Rrouned/p/3597102.html
Copyright © 2011-2022 走看看