User:Cszhu
1 editJoined
More actions
code c d c++ uc drop code to zero. but still can remake those if I need again to create a program or a mutator like. maybe just a pr ai code show out ai free code but no complier yet.
//code
#include <unistd.h> // 系统调用需要
// 我们不直接用 printf,我们要模拟 printf 内部最底层的动作
void deep_print(const char* str, int len) {
// 1. [C语言层] 指针遍历过程 (暴露内存访问)
printf("[C_LAYER] 开始遍历字符数组内存...\n");
for(int i = 0; i < len; i++) {
printf("[C_LAYER] 读取内存地址 %p, 值: '%c' (ASCII: %d)\n",
(void*)(str+i), str[i], (int)str[i]);
}
// 2. [汇编层] 模拟系统调用准备 (暴露寄存器)
// 在 x86-64 Linux 中,write 系统调用号是 1, 放入 rax
// 文件描述符 1 (stdout) 放入 rdi, 字符串指针放入 rsi, 长度放入 rdx
printf("[ASM_LAYER] 准备寄存器上下文...\n");
// 这里我们使用 GCC 的内联汇编来模拟这个过程
// 约束 "=a" 表示输出到 %rax, "D" 表示输入到 %rdi 等
long syscall_result;
asm volatile (
"mov %1, %%rdi;" // 将 stdout (1) 移入 rdi
"mov %2, %%rsi;" // 将字符串指针移入 rsi
"mov %3, %%rdx;" // 将长度移入 rdx
"mov $1, %%rax;" // 系统调用号 write (1)
"syscall;" // 触发系统调用中断
"mov %%rax, %0;" // 将返回值存回变量
: "=r" (syscall_result) // 输出
: "r" (1), "r" (str), "r" (len) // 输入
: "rdi", "rsi", "rdx", "rax", "rcx", "r11", "memory" // 破坏列表
);
printf("[ASM_LAYER] 系统调用完成,返回值 (写入字节数): %ld\n", syscall_result);
}
int main() {
const char* msg = "Hello World"; int len = 11;
printf("=== 深度还原:Hello World 的内部执行过程 ===\n\n");
deep_print(msg, len);
return 0;
} // code
yet I don't have email can't get new a wiki by myself.