arrays - 这个反汇编数组的开头和结尾是什么?

标签 arrays assembly reverse-engineering disassembly ida

在一个反汇编的dll中(由IDA),我得到了一个数组,它被注释为int数组(但它可能是byte):

.rdata:000000018003CC00 ; int boxA[264]
.rdata:000000018003CC00 boxA            dd 0                    ; DATA XREF: BlockPrepXOR+5FC↑r
.rdata:000000018003CC04                 db  0Eh
.rdata:000000018003CC05                 db  0Bh
.rdata:000000018003CC06                 db  0Dh
.rdata:000000018003CC07                 db    9
.rdata:000000018003CC08                 db  1Ch
.rdata:000000018003CC09                 db  16h
.rdata:000000018003CC0A                 db  1Ah
.rdata:000000018003CC0B                 db  12h
.rdata:000000018003CC0C                 db  12h
.rdata:000000018003CC0D                 db  1Dh
.rdata:000000018003CC0E                 db  17h
.rdata:000000018003CC0F                 db  1Bh

我可以将数据解释为

  1. {000000h、E0B0D09h、1C161A12h、..}
  2. {0、90D0B0Eh、121A161Ch、...}
  3. {00h,00h,00h,00h, 0Eh, 0Bh, ..} ?

根据评论(来自 IDA),您能否确认数组以 CC00h + 253*4 = D01Fh 结尾?我有另一个从 D020h 开始的数组:

.rdata:000000018003D01D                 db 0F9h ; ù
.rdata:000000018003D01E                 db 0A2h ; ¢
.rdata:000000018003D01F                 db  3Fh ; ?
.rdata:000000018003D020 array4_1248     db    1                 ; DATA XREF: BlockPrepXOR+39A↑o
.rdata:000000018003D021                 db    2
.rdata:000000018003D022                 db    4
.rdata:000000018003D023                 db    8

最佳答案

这只是 AES 解密的 T8 矩阵,如 this paper 中所述。 .
您可以通过在 Google 上查找 DWORD 值(例如 this is one of the results )轻松识别它。

这只是 AES 解密函数的数据。

另请注意,将字节序列解释为多字节数据(WORD、DWORD、QWORD 等)序列取决于体系结构。
对于 x86,只有小端解释是正确的(这是您的情况 2),但数据可能会经历任意操作(例如,它可以被 bswapped),因此,在 Google 上查找时,请始终使用数据的小端版本和大端版本。

还值得注意的是,IDA 可以将字节解释为 DWORD(键入 d 两次或使用上下文菜单),根据反汇编二进制的体系结构显示正确的值。

关于arrays - 这个反汇编数组的开头和结尾是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66530084/

相关文章:

javascript - 在javascript中通过路径将值插入数组

javascript - 如何从数组中的数组中删除空值?

c - 二维数组: C Programming

assembly - 在汇编/编译/链接时构建静态 IDT 和 GDT 所需的解决方案

assembly - 汇编如何在操作系统上工作?

visual-c++ - 为什么我可以在使用 Visual C++ 编译的 .exe 文件中看到类/结构名称?

python - 如何在 C 语言中使用经过训练的图形文件

java - 使用for语句从数组java中删除元素

linux - 使用 x64 linux 系统调用(汇编)从键盘读取输入

symfony - 如何在使用 Doctrine2 生成实体中指定目标目录