相关疑难解决方法(0)

如何用GDB拆卸内存范围?

我正在尝试反汇编程序以查看系统调用汇编指令(我相信INT指令)和GDB处理程序,并编写了一个程序(见下文),用于打开和关闭文件.

我能够跟随调用与GDB打开,直到它执行了一个调用.

当我试图告诉GDB"反汇编0x ...."(调用地址)时,它回复"没有函数包含指定的地址".

是否有可能强制GDB以内存地址反汇编(或在尽可能好的汇编程序中显示它)?如果是这样,怎么样?

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE* f;
    f = fopen("main.c", "r");
    if (!f) { 
      perror("open");
      return -1;
    }
    fclose(f);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

gdb disassembly

58
推荐指数
5
解决办法
10万
查看次数

系统调用如何在Linux上实际发生?

灵感来自这个问题

如何强制GDB反汇编?

并与此相关

什么是INT 21h?

如何在Linux下实际发生系统调用?执行调用时会发生什么,直到调用实际的内核例程?

linux internals system-calls linux-kernel

9
推荐指数
2
解决办法
2404
查看次数

x86程序集(masm32) - 我可以在windows xp上使用int 21h来打印东西吗?

只是想知道,关于我的内置宏的替代方案,是否可以通过使用int 21h windows API 来避免使用StdOut宏?如:

.data
       msg dd 'This will be displayed'
;original macro usage:
invoke StdOut, addr msg
;what I want to know will work
push msg 
int 21h ; If this does what I think it does, it should print msg
Run Code Online (Sandbox Code Playgroud)

是否存在这样的事情(如使用int 21h打印东西),或者存在类似的东西,但不完全是21h.或者我完全错了.

有人可以为我澄清一下吗?

谢谢,

Progrmr

x86 assembly winapi masm masm32

1
推荐指数
1
解决办法
3615
查看次数