小编Ali*_*ice的帖子

如何访问其他进程的内存?

我以为一个进程无法读取另一个进程的内存.但我很震惊地看到名为" WinHex " 的应用程序具有"Ram Editor"并且它能够访问整个内存.所有过程.

怎么可能?它甚至能够修改其他进程的内存.这不是恶意的吗?

memory security winapi

26
推荐指数
2
解决办法
2万
查看次数

程序中的标识符会发生什么?

我是新手程序员.我只想看到不同阶段的输出编译,汇编和链接.我也不懂汇编语言.

我写了一个简单的程序

#include <stdio.h>

int humans = 9;

 int main() 
 {
        int lions = 2;
        int cubs = populate(lions);
        return 0;
 }

 int populate(int crappyVariable)
 {
    return ++crappyVariable;
}
Run Code Online (Sandbox Code Playgroud)

我使用gcc - S sample.c汇编语言的输出感到惊讶.我丢失了所有变量名称和函数名称.

它保留了像人类,填充,主要的全局标识符,但它以下划线_为前缀.所以,我不认为它使用标识符.无论如何,重点是丢失了所有标识符.

我的问题是它如何调用函数或引用变量?

我对输出的更多阶段感到好奇,这些阶段将是二进制的(这是不可见的).

如何在组装之后和链接之前输出?我猜它甚至会松散下划线前缀全局标识符?那么问题是如何调用函数或引用变量进行操作?

我在互联网上搜索信息,但找不到任何有用的东西.可能我不知道该搜索什么.我不想读这本书的大书.但是如果有任何文章,教程清楚概念.这也会有所帮助.

我是新手程序员.所以,你可以用简单但技术性的术语来解释它.

编辑:作为回应,评论.我把问题分成了几个问题.这是这个问题的第二部分:不清楚链接器的工作

compiler-construction assembly linker

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

不清楚链接器的工作

我在Windows上使用C语言.这个问题以前是程序中标识符会发生什么变化的一部分.我打破它减少没有.问题 这是一个独立的查询(不依赖于前一个问题)

如果没有要链接的东西(即我没有使用任何库.我知道它没有任何用处.)链接器会更改汇编程序的目标代码输出吗?如果是这样,它会改变什么?

我听说LINKER也做了一些内存映射的操作.我不明白怎么做.该程序没有运行,它刚刚处于制造阶段.链接器如何映射到内存?它看起来怎么样?LINKER的功能是什么?

当人们提到"搬迁","地址绑定"时.我真的不明白他们的意思.它是什么?它的目的是什么?

一些调试器显示如下信息:调用堆栈:0xfffef32,0xf3234fe等.它在运行时是否正确?或者是链接器所谓的"内存映射"的内存地址?

当人们提到类似symbolssymbol table.它们是指标识符(变量名,常量名,函数名)吗?

我在互联网上搜索信息,但找不到任何有用的东西.可能我不知道该搜索什么.我不想读这本书的大书.但是如果有任何文章,教程清楚概念.这也会有所帮助.

我是新手程序员.所以,你可以用简单但技术性的术语来解释它.

compiler-construction linker

6
推荐指数
2
解决办法
337
查看次数