low-level 相关问题

就计算机系统而言,低级别是指在系统层堆栈中显得较低的组件。

为什么这个数组中的最后两个值始终有效?

我正在用 C 语言编写堆栈来向朋友演示一些东西。我知道下面的函数返回指向垃圾内存的指针,因此我们不能依赖它们。这就是重点...

回答 1 投票 0

从 ELF 和堆栈十六进制获取堆栈跟踪

我正在为运行 FreeRTOS 的 STM32 mcus 开发核心转储机制。 我设法提取正在运行的任务的堆栈,并将其传输到服务器,其中 python 脚本将其写入十六进制文件...

回答 1 投票 0

Z80 CPU 编译器

我是一名工程学院的学生,我在做项目时遇到了一个问题。在这个项目中,我正在设计一个微控制器。我选择使用 Z80 CPU 因为它简单...

回答 1 投票 0

z80 cpu 的 c 编译器

我是一名工程学院的学生,我在做项目时遇到了一个问题。在这个项目中,我正在设计一个微控制器。我选择使用 Z80 CPU 因为它简单...

回答 1 投票 0

FAT 文件系统上的第一个数据扇区到底在哪里?

我不太明白FAT格式磁盘上的第一个数据扇区应该在哪里(尤其是FAT-12和FAT-16)。我已经阅读了 FAT 系统的 Microsoft 文档,其中...

回答 1 投票 0

使用vm_read读取另一个进程内存

我编写了一些代码来读取另一个进程内存。这是针对 macOS/GNU Mach 的。 #包括 #包括 #包括 #包括 我编写了一些代码来读取另一个进程内存。这是针对 macOS/GNU Mach 的。 #include <stdio.h> #include <sys/types.h> #include <mach/mach.h> #include <mach/mach_vm.h> int main() { pid_t pid; printf("PID: "); scanf("%d", &pid); vm_address_t address; printf("Address: "); scanf("%lx", &address); vm_offset_t readMem; vm_map_read_t task = task_for_pid(mach_task_self(), pid, &task); mach_msg_type_number_t size = sizeof(int); kern_return_t result = vm_read(task, address, (pointer_t)sizeof(int), &readMem, &size); if (result) { fprintf(stderr, "cant read, result 0x%x\n", result); } printf("%lu", readMem); } 运行它并提供有效的 PID 后,它会返回 MACH_SEND_INVALID_DEST。 我知道这个答案已经晚了,但它可能对遇到同样问题的其他人有用。 问题 正如 Craig Estey 指出的那样,task_for_pid() 返回 kern_return_t。 您没有检查潜在的错误。 获取指针后读取数据的方式不正确。 使用 sudo 运行程序。 我修改了您的代码以使其更加清晰,添加了一些错误检查并进行了正确的阅读。根据您所做的评论,我相信您正在尝试读取整数,因此我调整了代码以满足该需求。 #include <stdio.h> #include <sys/types.h> #include <mach/mach.h> #include <mach/mach_vm.h> #include <stdlib.h> void check_result(kern_return_t kern_res, char * msg) { if (kern_res != KERN_SUCCESS) { if (msg == NULL) fprintf(stderr, "%s\n", mach_error_string(kern_res)); else fprintf(stderr, "%s : %s\n", msg, mach_error_string(kern_res)); exit(1); } } int main() { pid_t pid; printf("PID: "); scanf("%d", &pid); vm_address_t address; printf("Address: "); scanf("%lx", &address); kern_return_t res; mach_port_t task_self = mach_task_self(); mach_port_t other_task; res = task_for_pid(task_self, pid, &other_task); check_result(res, "Error getting task"); void * data; mach_msg_type_number_t size = sizeof(int); vm_size_t size_to_read = (vm_size_t) sizeof(int); res = vm_read(other_task, address, size_to_read, (vm_offset_t *) &data, &size); check_result(res, "Error reading virtual memory"); char * char_ptr = (char *) data; fprintf(stdout, "%d\n", (int) char_ptr[0]); } 我测试了它,并确保它按预期工作。有任何改进请告诉我!

回答 1 投票 0

为什么会有低级和高层装配

作为前言,我确实希望被否决而被遗忘,但我不明白这是如何运作的。 我想学习汇编,但我遇到的那种教程似乎遵循两个原则之一......

回答 1 投票 0

Bochs 在 WSL 中找不到发言者后陷入恐慌

我正在制作自己的基本操作系统,显然我面临一些错误,到目前为止我一直只是使用构建日志,但随着操作系统变得越来越复杂,调试变得非常困难。这就是为什么我...

回答 1 投票 0

如何仅使用 Windows NT Api 从进程名称获取进程 pid? [重复]

我正在制作一个本机Windows程序,这只是意味着它没有Windows程序所具有的所有膨胀,因为它只链接到ntdll并且没有子系统。 因此我无法使用

回答 1 投票 0

如何从进程名称获取进程pid?

我正在制作一个本机Windows程序,这只是意味着它没有Windows程序所具有的所有膨胀,因为它只链接到ntdll并且没有子系统。 因此我无法使用

回答 1 投票 0

AppData 文件夹到底有什么作用?

我正在寻找有关appdata文件夹的信息,我知道它包含Local,Local low和Roaming 本地无法移动,并且包含与保存的游戏、浏览器数据相关的大文件...... 洛克...

回答 1 投票 0

多字节指令的地址转换

嗨我的问题很简单: 如果您有 4 字节指令并且您的操作系统使用分页。是否有可能进行多次地址转换来获取这个 4 字节指令...

回答 1 投票 0

如何使用mips汇编中的地址设置按钮和LED?

系统有 4 个按钮,分别命名为 A 到 D。这些按钮被内存映射到地址 0xffffe440。按钮的状态在位索引 7 到 4 处给出,其中按钮 A 在索引处给出...

回答 1 投票 0

STM32 FDCAN 通信:如何在 STM32U5 上使用低级编程设置 FDCAN? [已解决]

我目前正在尝试在 STM32U575 微控制器上初始化和配置 FDCAN,以与 microchip CAN 总线分析仪进行通信。所有编码都是通过 Keil uVision studio 在低级嵌入中完成的...

回答 2 投票 0

C# 编译器是否在最终二进制文件中留下重新引用?

我有这个代码: 私有静态无效Tokenize(RichTextLabel Log,字符串commandString){ 日志.Text += " &”; int[] 令牌 = new int[5]; 整数当前= 0; ...

回答 1 投票 0

C 程序初始化闪存并检测其已初始化

我想将外部闪存中的一些值保存到微控制器中。每次运行程序时,这些值通常都会增加。我想将它们初始化为0。 之前...

回答 1 投票 0

是否可以通过PL使Zynq上的DDR控制器过载?怎么分析呢?

我有一个 Zynq7000,软件在两个内核上运行。它们与包含大量 DMA 的 FPGA 接口。这些 DMA 用于执行高达多个 MB 的数据传输。 我的问题...

回答 1 投票 0

Python 中的 print() 在硬件层面如何工作?

我正在寻求对 print() 函数在硬件级别的操作的深入解释,特别是在 Python 的上下文中。当执行简单的 Python 命令时,例如 print("Hel...

回答 2 投票 0

python 中的 print() 如何在硬件级别工作?

大家晚上好!我对 print() 函数在硬件级别如何工作感兴趣。即一些文本如何在屏幕上显示的详细过程,例如“Hello, Worl...

回答 2 投票 0

用于命令行 Linux (ArchLinux) 的简单图形库/API?

我想在 ArchLinux 上做一些图形化的东西。没什么大的,只是一些二维线,圆圈之类的。我实际上喜欢低级编码,但我看到linux内核不提供任何支持

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.