Qogri 数据解析


UID: 202103180807
SubID: 02010000
CTime: 2021/03/18 08:07:13
MTime: 2022/11/15 09:55:25
ATime: 2022/11/23 16:38:53
cssclass: cards
usage: Qogri 数据解析(一)
aliases: [数据解析(一),数据解析依据,数据的四个特点]
tags: [“#数据解析依据 #数据的四个特点”]
banner: “数据解析/其他文件/Qogri_2.jpg”
banner style: Solid
author: LYB
obsidianUIMode: preview

Qogri 数据解析

序 %%>[!right 50%]%%

🖋在 #Qogri软件工程 中,对数据进行解析有着极其重要作用,是正确区分代码与数据的必然过程。 #数据解析 本身并不难,难的是数据组成极其复杂、千变万化、 [[数据粒度]] 不尽相同的数据准确识别和分离。另外,还要对分布在指令代码中的数据进行正确区分,这种代码与数据混合的情况也是数据解析中的最大难度。由于 #Qogri软件工程 目的决定了它的实现过程中会有难以想象的困难,涉猎此领域的前人工作少之又少,即便是有这方面的研究也是蜻蜓点水点到即止,因此没有任何经验和资料可以借鉴,一切从零开始。整个数据解析工作期间共进行了四次大的方案或算法的修整,核心部分几乎每周都在修改调整,以适应各种变化的数据情况。其中所走的弯路不言而喻。这就像在漆黑的迷宫中行走,没有方向,只有摸索前行。昨天(2022-04-22)这项工作总算是告一段落;完成了12项数据测试,得到了个人认为满意的阶段性结果。
🖋 这项工作前后用了多长时间很难准确的进行衡量。通过回溯各阶段备份成果,确定最早的时间是2021年的7月。但这只是备份的最早时间,可这还没将备份前的工作、前期方案论证框架构思时间计算在内。相信总的时间比这还长,姑且按一年算吧。
🖋 阶段性的成果已经完成,目前还是一个独立的子工程。接下来就是将其整合到Qogri软件工程中,在工程实现过程中对数据解析功能进行检验。

数据解析依据
说明

🖋为了更好地理解数据解析,这里将讨论的数据根据应用范围划分成两类;一类是用户数据,另一类是系统数据。还有一个前面提到的重要的名词[[数据粒度]]也要事先做出说明。

  • #用户数据
    在 #PE格式 中大部分数据是存放在专门设定的数据段中,这部分数据主要是为了实现程序功能被保存在数据段中,直接服务于程序的使用者。如一些常数(参数)、字符串、图标图像等等。
  • #系统数据
    主要是为控制程序运行的数据,如地址数据、重定位数据、程序初始化数据等。
  • #数据粒度 ![[数据粒度#^94e66b]]
  • #字符串
    是一组由可视字符组成的数据串。这些字符串可用于存放单字节字符、双字节字符和三字节、四字节字符。由于组成的可视字符串的类型不同,存放这些字符的字符串类型也不同。其长度也不固定。类型有shortstring、string、widestring、ansistrint、pchar等。
    ^6bf218
数据的四个特点

🖋在PE格式文件中, #用户数据 和 #系统数据 是以[[数据粒度]]为基本单元存放在特定的位置。在这些数据中有些是可视的,如单独的字母、字符串和由字母组成的数字串;还有一些是不可视的,如二进制数据。不论这些数据表现形式如何,它们都有如下特点:相关性连续性(非随机性)可对比性可识别性。对于控制程序运行的指令代码则是以一种近于完全随机的形式呈现,它没有 #数据粒度 这个称谓,它的码长视控制指令的作用由1字节到10字节(?)不等。由于其随机性很强,很难利用数据特点预判下一个数据类型和内容。
🖋 #Qogri软件工程 正是根据数据与指令代码的特点对数据进行解析。打个比方:在一群衣著非常有特点的人群中找出衣著普通的人是很容易的,反过来也是一样。

[!info]
#PE文件中数据的四个特点

[!abstract]- 相关性
来看看数据的相关性

0040102D 0443686172 db 04h,‘Char’

04与后面的数据具有明显的相关性,它说明接下来是4个字符的字符串’Char’。
再看这段数据

0040C13C FFFFFFFF08000000 dd FFFFFFFFh,00000008h
0040C144 6D6D20642C207979 db ‘mm d, yy’

FFFFFFFFh,00000008h说明这是一个ansistring类型的长度占8个字节的字符串’mm d, yy’。
这两个例子中04和FFFFFFFFh,00000008h与后续的字符串具有明显的相关性。

[!abstract]- 连续性
在PE文件中这一点非常明显。如:

00407A5C  dd 00000012 00001DE0 00000000 00000000
          dd 00000101 00000100 000000FF
00407A78  dd 00407AA4
00407A7C  dd 000054DE
00407A80  dd 0040799C 00403A68 00403A74 00403A78
          dd 00403A7C 00403A70 004037B8 0040B1B0
          dd 00403810
  • 数据具有连续分组的特点。前面连续的7个数据是一组普通4字节数据,后面连续9个数据是一组,可视为是地址数据。

[!abstract]- 对比性

  • 对比性是指:两个或多个数据具有相同的数据粒度和相似的内容,两组或多组数据具有相同(似)的数据结构,在数组(结构)中对应的数据粒度相同内容相似。
00407A04  dd 00407A50
00407A08  dd 00000000 00000000 00000000 00000000
          dd 00000000 00000000 00000000
00407A24  dd 00407A50
00407A28  dd 0000000C
00407A2C  dd 0040799C 00403A68 00403A74 00403A78
          dd 00403A7C 00403A70 004037B8 004037D4
          dd 00403810
00407A50  db 6 'EAbort'
00407A57	Align	4
00407AB4  dd 00407B00
00407AB8  dd 00000000 00000000 00000000 00000000
          dd 00000000 00000000 00000000
00407AD4  dd 00407B00
00407AD8  dd 00000010
00407ADC  dd 00407A58 00403A68 00403A74 00403A78
          dd 00403A7C 00403A70 004037B8 0040B1B0
          dd 00403810
00407B00  db 12 'EOutOfMemory'
00407B0D	Align	4

上下两组数据的对比可以看出,从数据结构、数据粒度、数据内容都具有高度的可对比性。

[!abstract]- 可识别性

  • 对于可视数据这一点很好理解。如这一行代码就非常直观地说明了这一点:
00408504  db 36 'TMultiReadExclusiveWriteSynchronizer'

字符串在TMultiReadExclusiveWriteSynchronizer在众多的数据中非常容易区分出来。

  • 对于二进制这类非可视数据,则需要我们对它有非常详细的了解,清楚地知道1字节、2字节、4字节等数据的特点和内容。再结合前面介绍的数据特点对这类数据做出准确识别。
  • 对于普通人来说,指令代码不具有这四个特点,特别是后三个特点(除非是你对CPU指令集非常了解,可无视数据的四个特点)。

[[Qogri 数据解析(二)]]

%%%

对于普通人来说(除非是你对CPU指令集非常了解),指令代码不具有这四个特点,特别是后三个特点。
#Qogri数据工程 正是根据数据与指令代码的特点对数据进行解析。

[!Infobox right 55%]
对齐码表

B1B2B3组合码定位说明
8BC0
CC
8BC0
8BC0CC
8D40008D4000
90
90

可重复
90
9090…
CC
CC

可重复
CC
CCCC…
00可重复0000…长度不定
位于块尾

[!note|right 35% indent ]+ TextBox
With the development of Chinese economy, the world is watching us. More and more foreigners have sensed the great potential market and come to China to seek for cooperation. Chinese film market had been ignored before, but now more Hollywood directors show their willingness to work with Chinese actors, so as to catch more Chinese audiences and increase the box office.

[!tips right 35% ]+ Title
Indeed, Chinese box office is increasing every year, even surpasses the foreign’s, which makes the foreign directors pay so much attention to Chinese audiences. It also shows that China has influnced the world and it plays more and more important role in the world economy. There is no doubt that more cooperations will happen during foreign enterprises and Chinese business.

With the development of Chinese economy, the world is watching us. More and more foreigners have sensed the great potential market and come to China to seek for cooperation. Chinese film market had been ignored before, but now more Hollywood directors show their willingness to work with Chinese actors, so as to catch more Chinese audiences and increase the box office.
Indeed, Chinese box office is increasing every year, even surpasses the foreign’s, which makes the foreign directors pay so much attention to Chinese audiences. It also shows that China has influnced the world and it plays more and more important role in the world economy. There is no doubt that more cooperations will happen during foreign enterprises and Chinese business.
With the development of Chinese economy, the world is watching us. More and more foreigners have sensed the great potential market and come to China to seek for cooperation. Chinese film market had been ignored before, but now more Hollywood directors show their willingness to work with Chinese actors, so as to catch more Chinese audiences and increase the box office.
%%%

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值