分析*(a1 + 0x30C)
首先看一下赋值的位置
核心位置的代码分别为获取用户名
和计算用户名的长度
看似是和 0x30C
是无关紧要的
Sysutils::DiskFree(0)
SysUtils::DiskFree(0)
是 Delphi(Object Pascal)或 C++ Builder 中用于获取磁盘剩余空间的一个函数调用
__int64 freeBytes = SysUtils::DiskFree(0);
DiskFree()
是一个来自SysUtils
单元的函数。- 参数
0
表示获取当前驱动器(即程序运行所在的磁盘分区,例如C:
)的剩余可用空间。 - 返回值类型:
__int64
(在较新版本中),表示以字节为单位的剩余可用空间。
下断分析Sysutils::DiskFree
由于返回的是 64 位的数据,所以保存格式为edx:eax
(64 位整数)
所以磁盘所剩空间是:edx:eax
:0x0EB25A8000
== 63121817600
也就是≈ 58.8 GB(字节)
一、基础单位换算
- 1 KB = 1024 字节
- 1 MB = 1024 KB = 1,048,576 字节
- 1 GB = 1024 MB = 1,073,741,824 字节
二、将字节数换成 GB
现在有的字节数是:63,121,817,600 字节
换算为 GB:
63,121,817,600 ÷ 1,073,741,824 ≈ 58.8 GB
磁盘数据加密运算过程
4.修复_LLMOD
函数
分析TForm1_FormMouseMove
校验
v6 = 1;
v7 = (v6 == 0);
// 注意括号,优先级问题
==
的优先级高于=
- 所以会先判断
v6 == 0
,结果是false
(0) - 然后把结果
0
赋值给v7
v8 = 1 - 1 = 0
- 所以最终
*(a1 + 0x314) = 0x3D;
将会被执行,0x3D = 61
感想大家收看~
没有回复内容