山东001在线

 找回密码
 立即注册
搜索
查看: 139|回复: 0

[美女] 今日热点常见语言基础逆向方法合集2023/3/28 8:28:31

[复制链接]
  • TA的每日心情
    难过
    2023-6-30 13:24
  • 签到天数: 40 天

    [LV.5]常住居民I

    发表于 2023-3-28 08:28:33 | 显示全部楼层 |阅读模式

    前言游戏逆向的具体问题可以到我们网站了解一下,也有业内领域专业的客服为您解答问题,为成功合作打下一个良好的开端!

    初学逆向的我,每次都是拿着OD与IDA对源程序一顿撸,走了不少弯路。后面了解到各种语言编译的程序有其独特的特点与逆向方法,故这里归纳整理了自己学习到的一些方法,与大家分享,欢迎大家指正与补充。



    一、程序逆向
    简介
    D,是W平台下著的速应用程序开发工具(RAD,简称RAD)。它的前身,即是DOS时代盛行一时的“BTP”,比较早的版本由美国B(宝兰)于95年开发。主创者为AH。经过数年的发展,此产品也转移至E旗下。D是一个集成开发环境(IDE),使用的核心是由传统P语言发展而来的OP,以图形用户界面为开发环境,透过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。


    必备知识
    字符串形式,使用P形式,在字符串前存放字符串长度。函数调用约定:参数顺序为为首个参数、为第二个参数、为第个参数,大于3个的参数通过堆栈传递,使用存放返回值。


    逆向工具与方法介绍
    IDR,针对的反编译工具,反编译效果很好,该工具主要用于生成IDC文件(供IDA使用)与MAP文件(供64使用)。PEE,寻找RC数据,查看程序按钮对应的事件称。DD,分析程序按钮和与之对应的按钮事件。


    二、NET程序逆向
    简介
    NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境。NET框架的目的是便于开发人员更容易地建立W应用程序和W服务,使得I上的各应用程序之间,可以使用W服务进行沟通。从层次结构来看,NET框架又包括个主要组成部分:公共语言运行库(CLR:CLR)、服务框架(SF)和上层的两类应用模板——传统的W应用程序模板(WF)和基于ASPNET的面向W的络应用程序模板(WF和WS)。


    必备知识
    论上层采用什么编程语言(C#或VB),其都会被翻译成微软中间语言(MSIL,简称IL)。对于NET程序编译成的EXE程序,EXE程序中保存的是IL指令和元数据,并不是机器码,故法使用IDA、OD这种工具去分析。


    逆向工具与方法介绍
    N反汇编工具,支持导出源程序源代码,但不支持动态调试功能。D强大的反编译工具,操作界面与捷键类似VS,支持对程序的动态调试、修改IL语言和附加进程进行调试。强大的N反混淆和脱壳工具


    、程序逆向
    简介
    P由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于90年代初设计,作为一门叫做ABC语言的替代品。P提供了高效的高级数据结构,还能简单有效地面向对象编程。P语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于单独的、大型项目的开发。


    32必备知识
    执行特点:先编译再解释执行关键文件:文件程序中含有大量以P_开头的字符串将文件打包成本次验使用的模块(亦可),命令如下-F:生成结果是一个文件,所有的第方依赖、资源和代码均被打包进该内-:不显示命令行窗口其它参数请读者自行查阅相关资料。







    1





    -
    F
    -






    33逆向工具与方法介绍
    使用自带的_脚本,将文件反编译成文件。







    1




    _





    生成的文件对比原文件少了头部的个字节的信息,故此处需要用二进制编辑工具补充上(插入PYC文件头:550D0D0A0000000000000000000000)。比较后,将文件解密为源码文件,这里我使用的是该进行解密(或者使用、等工具)。


    四、MFC程序逆向
    41简介
    微软基础类库(英语:MFC,简称MFC)是微软提供的一个类库(),以C++类的形式封装了WAPI,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量W句柄封装类和很多W的内建控件和组件的封装类。


    42利用_ADCM函数确定事件处理地址
    在VS中,新建一个MFC程序,在我们自己编写的事件处理函数处下断点,并查看调用堆栈信息,发现_ADCM函数的第四个参数的值即为事件处理函数的指针。使用64加载应用程序,在MBA函数出下断点,程序断下后,查看堆栈调用信息,寻找_ADCM函数。接着,我们在_ADCM函数处下断点,并运行程序,程序断下来后,第4个参数(+0)的值即为消息处理函数的地址。此处我们可以将_ADCM函数的特征提取为特征码,上次直接搜索定位即可,特征码为:558BEC81EC????????56578DBD????????B9????????B8CCCCCCCCF3:AB6A3368????????8B4550E8????????。


    43利用AFX_MSGMAP_ENTRY数组
    AFX_MSGMAP_ENTRY数组的声明







    1


    2


    3


    4


    5


    6


    7


    8


    9



















    AFX_MSGMAP_ENTRY


    {



    UINTM;









    UINTC;




    WM_NOTIFY






    UINTID;



    ID
    (

    0

    )






    UINTLID;








    '






    UINT_PTRS;




    ()


    #






    AFX_PMSG;


    (

    )


    };





    的值即为回调函数的地址。同时在MFC程序中,消息映机制分别是GMM()和GTMM()函数。GMM()调用本类的GTMM()函数,而GTMM()函数中,声明了2个静态全局变量,_E数组和M变量,_E数组元素的类型就是是AFX_MSGMAP_ENTRY,也就是说,在程序初始化完成后,_E数组元素的成员的部门已被初始化完成。针对按钮事件,其各个成员的值为:M=0,C=0,ID=按钮ID,LID=按钮ID,S=58,当ID是00=因此应当搜索10000000000000000000000


    五、通用方法
    利用WINDOWS消息处理机制


    51概念
    消息本身是作为一个记录传递给应用程序的,这个记录(一般在CC++汇编中称为“结构体”)中包含了消息的类型以及其他信息。例如,对单击鼠标所产生的消息来说,这个记录(结构体)中包含了单击鼠标的消息号(WM_LBUTTONDOWN)、单击鼠标时的坐标(由X,Y值连接而成的一个32位整数)。这个记录类型叫做TM。





    当按钮有事件产生时,会给父窗口消息处理程序发送一个WM_COMMAND消息按钮------------系统提供WP----------父窗口的WP单击按钮转换WM_COMMAND


    52操作流程
    在按钮处,下消息断点WM_LBUTTONUP或WM_LBUTTONDOWN,点击出发按钮后,在主要程序代码区下内存访问断点,同时判断程序跳转至用户代码区时,消息类型是否为WM_COMMAND。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Archiver|山东001在线 ( ICP11027147 )

    GMT+8, 2026-4-1 17:04 , Processed in 0.044480 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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