elf

    10热度

    2回答

    我试图把一个ELF文件到内存中,然后执行它,这些步骤如下: 1文件放入内存 int main() { printf("Hello world! \n"); return 0; } 2-编译它gcc -o hello hello.c -static ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00

    0热度

    5回答

    有没有办法从堆栈帧 获取函数参数和变量例如 foo(int a){ char z; // Can I know what is the name of my local variable and argument inside this function } 我想这个函数内部是参数和变量名。我也有兴趣知道他们的类型。 我也可以访问堆栈帧的函数指针。我可以从函数指针获取关于

    2热度

    1回答

    我从一个简单的混淆C程序中获得了以下ASM代码作为一个赋值。 0x00000000004006a0 <+147>: lea -0x20(%rbp),%rax 0x00000000004006a4 <+151>: mov %rdx,%rsi 0x00000000004006a7 <+154>: mov %rax,%rdi 0x00000000004006aa <+157

    0热度

    1回答

    我目前正在为现有SO库(Android版GTA SA)开发SO插件加载器。 Android上的SO库是Unix ELF文件。 没有库的源代码我不能简单地在源代码中添加导入的函数并再次编译SO库。 有libGTASA.so,我想编辑和改变导入表,添加一个新的符号RunSOpluginLoader,它将在libFastman92pluginLoader.so中实现,它将在libGTASA.so被加载之

    1热度

    1回答

    我刚刚使用编译器选项“-frecord-gcc-switches”编译代码以查看编译器自动选择哪些选项。现在我可以看到.GCC.command.line中的选项。有几个合理的编译器选项,但我也找不到任何有关文档。 -auxbase-strip png.o是什么意思。很明显,它对png.o做了些什么,但它究竟做了什么?

    27热度

    1回答

    In this document on page。 27它说文本段开始于 0x400000。为什么选择这个特定的地址?有没有 的原因?相同的地址选择在GNU ld上Linux: $ ld -verbose | grep -i text-segment PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)

    0热度

    1回答

    我在这一个上有问题。我正在使用带有DS-5的ARM Cortex-A9来创建裸机固件。我修改了我的链接器文件,故意将.data部分LMA放置在文本和rodata部分的旁边,因为它的默认运行时间VMA位于1MB,而.bin图像大约为1MB,但包含90%的零。所以我故意让LMA!= VM​​A来节省空间。我还在start.S中添加了一个代码,将.data部分从lma重定位到vma。 但是在装载在DS-

    1热度

    1回答

    我在两个程序中获取libc.so中的函数“printf”的物理地址,并且两个物理地址不同。我读了两个不同的物理地址,内容几乎相同。这意味着函数“printf”在内存中有两个副本? 详情: 我的操作系统是32位Linux。 物理地址通过读取“/ proc/self/pagemap”来计算。 物理地址读取与FMEM模块,其源代码是[email protected]实现的:在libc中NateBrune

    7热度

    1回答

    我正在编写一个编译器,并且刚开始从头开始生成ELF可执行文件。我正在创建一个.text部分(尽管它没有名称,因为我还没有创建字符串表),并试图将其放入PT_LOAD分段中。但是,readelf未报告该部分已映射到段中,并且objdump拒绝拆卸.text部分中的代码。这是readelf读出,与为了简洁省略一些位: ELF Header: Magic: 7f 45 4c 46 02 01

    0热度

    1回答

    我有一个从ELF文件中获取信息的c程序。我的问题是:所有的段名都必须以点开头(例如.sffa)?这是必须的,或者它只是用于系统文件?以点开始