全面了解驱动特性、安全规范和使用方法
// Cracker-Drive C++ 调用示例 #include "CrackerUserCall.h" int main() { // 初始化用户调用部分 printf("[ Cracker ] 开始初始化用户调用部分.\n"); if (!Cracker_InitUserCall()) { printf("[ Cracker ] 用户调用部分初始化失败!\n"); system("pause"); return 0; } printf("[ Cracker ] 初始化用户调用部分成功.\n"); // 通过SecretKey登录平台 printf("[ Cracker ] 开始登录平台.\n"); int CrackerStatus = Cracker_InitAppKey("your_secret_key"); if (CrackerStatus != 0x0A000001) { printf("[ Cracker ] 平台登录失败, 错误代码 %x!\n", CrackerStatus); system("pause"); return 0; } printf("[ Cracker ] 登录平台成功.\n"); // 安装驱动 printf("[ Cracker ] 开始安装驱动\n"); int AppStatus = Cracker_Install(); if (AppStatus != 0x0A000001) { printf("[ Cracker ] 驱动安装失败, 错误代码 %x!\n", AppStatus); system("pause"); return 0; } printf("[ Cracker ] 安装驱动成功\n"); // 设置进程 printf("[ Cracker ] 开始设置进程\n"); if (!Cracker_SetProcess(GetCurrentProcessId(), true)) { printf("[Cracker] 设置进程失败!\n"); system("pause"); return 0; } printf("[ Cracker ] 设置进程成功\n"); // 内存操作示例 int Target = 0; int Src = 0xB8; printf("[ Cracker ] 读物理内存\n"); Cracker_ReadPhysicalMemory((__int64)&Src, &Target, sizeof(int)); printf("Target -> %x, Src -> %x\n", Target, Src); // 更多操作... printf("[ Cracker ] 演示完毕\n"); system("pause"); }
.版本 2
.支持库 spec
.程序集 启动
.程序集变量 演示进程名, 文本型
.程序集变量 驱动授权密钥, 文本型
.子程序 _启动子程序, 整数型
驱动授权密钥 = "Key"
演示进程名 = "Dwm.exe"
.如果 (信息框 ("你是否是新手?", #是否钮, "内存操作Demo", ) = #是钮)
新手操作 ()
.否则
大佬操作 ()
.如果结束
返回 (0)
.子程序 新手操作
.局部变量 结果_安装驱动, 逻辑型
.局部变量 ProcessID, 整数型
.局部变量 结果_申请地址, 长整数型
.局部变量 结果_写入内存, 逻辑型
.局部变量 结果_读取内存, 字节集
.局部变量 结果_修改保护, 逻辑型
.局部变量 结果_释放内存, 逻辑型
' 第一步:安装驱动
结果_安装驱动 = Drv.驱动_安装驱动 (驱动授权密钥)
.如果 (结果_安装驱动)
标准输出 (, "[ √ ] 驱动安装成功" + #换行符)
.否则
标准输出 (, "[ × ] 驱动安装失败" + #换行符)
标准输入 ()
结束 ()
.如果结束
' 获取目标进程PID并绑定
ProcessID = 进程_名取ID (演示进程名)
.如果 (ProcessID ≠ 0)
.如果 (Drv.初始化_设置进程 (ProcessID, 假))
标准输出 (, "[ √ ] 设置进程成功 PID = " + 到文本 (ProcessID) + #换行符)
.否则
标准输出 (, "[ × ] 设置进程失败" + #换行符)
标准输入 ()
结束 ()
.如果结束
.否则
标准输出 (, "[ × ] 进程PID获取失败" + #换行符)
标准输入 ()
结束 ()
.如果结束
' 申请内存
结果_申请地址 = Drv.内存_申请内存 (0, 4096, 位或 (#MEM_COMMIT, #MEM_RESERVE), #PAGE_EXECUTE_READWRITE)
.如果 (结果_申请地址 ≠ 0)
标准输出 (, "[ √ ] 申请内存成功 地址 = " + 十到十六 (结果_申请地址) + #换行符)
.否则
标准输出 (, "[ × ] 申请内存失败" + #换行符)
标准输入 ()
结束 ()
.如果结束
' 内存读写操作...
' 释放内存
结果_释放内存 = Drv.内存_释放内存 (结果_申请地址, 4096, 位或 (#MEM_COMMIT, #MEM_RESERVE))
.如果 (结果_释放内存)
标准输出 (, "[ √ ] 释放内存成功" + #换行符)
.否则
标准输出 (, "[ × ] 释放内存失败" + #换行符)
标准输入 ()
结束 ()
.如果结束
标准输入 ()
结束 ()