分析*(a1 + 0x30C)
首先看一下赋值的位置
![图片[1]-57.逆向破解分析实战24:160crackme之005(08):番外机器码校验分析-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/e97779617a888958b71c1d30e6e5ecb01e920168f9741b2b29d89431a5a511330c849909137c7334b574fa63865aaa36?pictype=scale&from=30013&version=3.3.3.3&fname=1%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
核心位置的代码分别为获取用户名和计算用户名的长度
看似是和 0x30C 是无关紧要的
![图片[2]-57.逆向破解分析实战24:160crackme之005(08):番外机器码校验分析-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/86603a0f9cd1e271847cc437572e49c3c142ce705503ce1638e6bebbaf7d5ca930cc2b6934af6ecde0aabd0aee87b5f3?pictype=scale&from=30013&version=3.3.3.3&fname=2%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
![图片[3]-57.逆向破解分析实战24:160crackme之005(08):番外机器码校验分析-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/5acff21437083803c85d54471dfa2073f201f8b7898e4295a537b86256716febd34a417aff631879453318411b0d200e?pictype=scale&from=30013&version=3.3.3.3&fname=3%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
Sysutils::DiskFree(0)
SysUtils::DiskFree(0) 是 Delphi(Object Pascal)或 C++ Builder 中用于获取磁盘剩余空间的一个函数调用
__int64 freeBytes = SysUtils::DiskFree(0);
DiskFree()是一个来自SysUtils单元的函数。- 参数
0表示获取当前驱动器(即程序运行所在的磁盘分区,例如C:)的剩余可用空间。 - 返回值类型:
__int64(在较新版本中),表示以字节为单位的剩余可用空间。
![图片[4]-57.逆向破解分析实战24:160crackme之005(08):番外机器码校验分析-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/c27f14241cd11812a14156ef73288a94364fe66007f8d8fa8e2e7b2bab1097c497ba211ac152c58ea0cfcd3d07dc2088?pictype=scale&from=30013&version=3.3.3.3&fname=4%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
![图片[5]-57.逆向破解分析实战24:160crackme之005(08):番外机器码校验分析-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/e8fff6c1d9b2af4350f760165979b09f705ddcd2cad52865d60869ed00042d50434838015937209ddffe3656c6275710?pictype=scale&from=30013&version=3.3.3.3&fname=5%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
下断分析Sysutils::DiskFree
由于返回的是 64 位的数据,所以保存格式为edx:eax(64 位整数)
![图片[6]-57.逆向破解分析实战24:160crackme之005(08):番外机器码校验分析-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/71c70fa9ff0ac75be5c4672231b301be6f20c075bd21fb6dc8b4cf94a281e81dee77f48377830ba6687a063743f9ae24?pictype=scale&from=30013&version=3.3.3.3&fname=6%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
所以磁盘所剩空间是:edx:eax:0x0EB25A8000 == 63121817600
也就是≈ 58.8 GB(字节)
![图片[7]-57.逆向破解分析实战24:160crackme之005(08):番外机器码校验分析-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/973b72511a28ee94408e5b650fab5bafd7b5c5308a27c8757aaa4002d59f193d00132f5feb55d61e8fdd18c661508ff3?pictype=scale&from=30013&version=3.3.3.3&fname=7%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
一、基础单位换算
- 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
![图片[8]-57.逆向破解分析实战24:160crackme之005(08):番外机器码校验分析-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/021f8451449a0d77003349171fa0dba9d8f9d5a0c0f15cfc8a2920ce909996abd28624965638e20344bc53999a322a83?pictype=scale&from=30013&version=3.3.3.3&fname=14%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
感想大家收看~






没有回复内容