小编Ari*_*Ari的帖子

使用ELF文件

我需要在我的C程序中使用简单的ELF文件.我不能使用任何外部库,但我可以使用elf.h.

让我们把hello.o文件作为源代码:

int Hello() { return 3; }
Run Code Online (Sandbox Code Playgroud)

我怎样才能访问Hello只有hello.o文件的ohter C程序?

我应该把它加载到内存中使用mmap或者像这样.最后我需要使用更复杂的ELF文件,但我现在不知道,如何开始.

更新:我需要按照我描述的方式执行此操作,因为它是出于学习目的.整个问题比我描述的更复杂.

对于这个问题假设我需要编写方法:

int HelloFromElfO(const char* helloFile);
Run Code Online (Sandbox Code Playgroud)

这将执行Hello在中实现的功能helloFile.

我不想要完整的答案.我不需要任何代码.我需要一些东西开始.

我有关于ELF文件结构的基本知识,但我不知道如何在没有任何解析器的情况下使用二进制文件在C中工作或者像这样.

UPDATE2:好的,像readelf这样的应用程序非常复杂.所以也许我尝试这种方式:再说一遍,我已经hello.o映射到内存了ptr.如何获得指向Hello函数的指针?

如何从中获取任何结构化数据hello.o?我的意思是,不是纯字节,而是我可以使用的东西.

c linux elf

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

保护分配的内存

我需要动态分配内存的某些部分,每个部分都有一些保护 - RW 或 RX。

我试图通过 分配内存malloc,但mprotect总是返回-1 Invalid argument

我的示例代码:

void *x = malloc(getpagesize());
mprotect(x, getpagesize(), PROT_READ); // returns -1, it;s sample, so only R, not RW or RX
Run Code Online (Sandbox Code Playgroud)

c memory malloc mprotect

3
推荐指数
2
解决办法
2572
查看次数

在LINQ选择中更改变量

我正在将一个列表转换为另一个列表.除了第一个列表中的数据,我想要添加位置.为此,我创建了以下代码:

class A
{
    ...
}

class B
{
    ...
    public int Position { get; set; }
}

List<A> listA = ...;
int pos = 1;
List<B> listB = listA.Where(...).Take(...).Select(
    a => new B { ..., Position = pos++ }).ToList();
Run Code Online (Sandbox Code Playgroud)

它有效,但它应该并且它会一直有效吗?pos在我的代码中使用这样的变量并在LINQ中更改其值是否安全Select

c# linq

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

urls.py中的例外情况

我花了很多时间来追踪我的错误,但我找不到任何人可以找出错误的位置?

Environment:


Request Method: GET

Request URL: [http://127.0.0.1:8000/blog/archives]

Django Version: 1.4.1

Python Version: 2.7.3

Installed Applications:

('django.contrib.auth',

 'django.contrib.contenttypes',

 'django.contrib.sessions',

 'django.contrib.sites',

 'django.contrib.messages',

 'django.contrib.staticfiles',

 'django.contrib.admin',

 'taggit',

 'blog')

Installed Middleware:

('django.middleware.common.CommonMiddleware',

 'django.contrib.sessions.middleware.SessionMiddleware',

 'django.middleware.csrf.CsrfViewMiddleware',

 'django.contrib.auth.middleware.AuthenticationMiddleware',

 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:

File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  89.                     response = middleware_method(request)

File "/usr/local/lib/python2.7/dist-packages/django/middleware/common.py" in process_request
  67.             if (not urlresolvers.is_valid_path(request.path_info, urlconf) and

File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in is_valid_path
  531.         resolve(path, urlconf)

File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve
  420.     return get_resolver(urlconf).resolve(path)

File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve
  300.                     sub_match = pattern.resolve(new_path)

File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve
  300.                     sub_match = …
Run Code Online (Sandbox Code Playgroud)

python regex django url

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

标签 统计

c ×2

c# ×1

django ×1

elf ×1

linq ×1

linux ×1

malloc ×1

memory ×1

mprotect ×1

python ×1

regex ×1

url ×1