• 逆向集录_00_不同程序OEP特征总结


    • 在分析/逆向 程序时,如果事先知道这类程序的一些特征,那将会是事半功倍的;
    • 分析/逆向 程序,和写程序不同,比喻的话:写程序像在作案,分析/逆向 程序就像是在破案,对破案来讲,重在假想和推理;

    特征1:VC链接器版本

    VS版本 链接器版本
    VS2017 14.12
    VS2015 14.0, 14.1
    VS2013 12.0
    VS2012 11.0
    VS2010 10.0
    VS2008 9.0
    VS2005 8.0
    VC2003 7.0, 7.1
    VC6/VB6/E语言 6.0
    VC5/BC++ 5.0
    Delphi 2.25
    VB5

    4.20

    特征2:OEP

    a0) VB5:

    【VB5】的OEP平衡堆栈是 sub esp,0x54

    【VB5】的OEP第一个API调用是GetStartupInfoA

    【VB5】程序的IAT引用,都是FF15型的

    a1) VB6

    【VB6】的OEP平衡堆栈是 sub esp,0x4C

    【VB6】的OEP第一个API调用是GetStartupInfoA

    【VB6】程序的IAT引用,都是FF15型的

     

    b0) Delphi

    【Delphi】OEP上面是一个地址
    【Delphi】OEP处 有5个CALL
    【Delphi】OEP 5个CALL之后,全是0
    【Delphi】OEP处第一个CALL有GetModuleHandleA调用
    【Delphi】的IAT调用是 FF25形式的

    b1) BC++

    【BC++】 二进制特征:EB1066623A432B2B484F4F4B90
    【BC++】 OEP的第一个API调用是 GetModuleHandleA
    【BC++】 IAT调用是 FF25形式的

    c) VC6/E语言(通过分析,发现二者特征一致,可以判定E语言和VC6如出一辙)

    【VC6】的OEP平衡堆栈是 sub esp,0x58 或 sub esp,0x68或add esp, -0x5C

    【VC6】的OEP第一个API调用是GetVersion

    【VC6】程序的IAT引用,都是FF15型的

    d) VS2013

    【VS2013】开始处,call xxx; jmp xxx;
    【VS2013】的OEP平衡堆栈是sub esp, 0x44
    【VS2013】的OEP第一个API调用是GetStartupInfoW
    【VS2013】程序的IAT引用,都是FF15型的

     

    这些特征,会对分析程序起到一定的帮助作用,这里,并没有完全列出全部的主流程序,希望抛砖引玉吧;

  • 相关阅读:
    开发中的一些总结。。。
    Directory Listing Denied错误
    webservice的一些使用心得。。
    vs2005 sp1 补丁后,不能初始化
    谈C/C++指针精髓
    CString 的函数
    javaScript 中 call 函数的用法说明 & 继承
    条款12: 尽量使用初始化而不要在构造函数里赋值(effectiveC++)
    js日期时间函数(经典+完善+实用)
    学习之路一 记录学习中的手记
  • 原文地址:https://www.cnblogs.com/Reginald-S/p/8727040.html
Copyright © 2020-2023  润新知