
C
文章平均质量分 55
tomorrow_be_good
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言混乱代码:加密文本的过滤器(Binary to encrypted text filter)
原文地址http://uguu.org/src_nyaruko_c.html只为瞻仰牛人转载 2012-10-18 21:12:09 · 1167 阅读 · 0 评论 -
创建Linux下可运行的超小型ELF可执行文件(4)
<br /> p { margin-bottom: 0.21cm; }<br />如果你现在就停止阅读ELF规范,那么你本可以发现另一些规则的:1)ELF文件的不同块可以位于文件中的任何位置,除了ELFheader必须位于文件最开始部分,所以可以把一些部分进行重叠;2)header里的一些字段并没有真正被使用。<br /> <br />具体地说,我正在想header中的16字节长的标识符字段尾部的一串零。它们只是纯粹的填充,旨在为ELF规范将来的扩展预留空间。所以操作系统并翻译 2010-10-03 17:01:00 · 647 阅读 · 0 评论 -
Linux下共享链接库 (2)
p { margin-bottom: 0.21cm; }你可以在某次特定执行中临时替换一个不同的库。在Linux中,环境变量LD_LIBRARY_PATH会被第一个搜索,在标准目录集之前。在调试新库或者是为了特定目的而使用非标准库时特别有用。环境变量LD_PRELOAD的作用跟/etc/ld.so.preload一样。注意LD_LIBRARY_PATH可以在大多数类Unix系统上运行,但是并不是所有的都可以。例如它在HP-UX上叫SHLIB_PATH,在AIX上叫LIBPATH。LD翻译 2010-10-03 14:24:00 · 704 阅读 · 0 评论 -
创建Linux下可运行的超小型ELF可执行文件(1)
<br /> p { margin-bottom: 0.21cm; <br />如果你是一个很自大的程序员,那么你可能发现本文是完美的灵丹妙药。<br /> <br />这篇文档探索用于减少简单程序中过量的字节数。当然,本文的更实用的目的是描述ELF文件格式和Linux操作系统的一些内部工作原理。但是在这个过程中你很有希望也学会怎么制作超小型ELF可执行文件。<br /> <br />请注意这里给出的信息和示例绝大部分是针对运行的intel-386架构上的Linux平台的ELF可执翻译 2010-10-03 16:55:00 · 740 阅读 · 0 评论 -
Linux下共享链接库 (1)
p { margin-bottom: 0.21cm; }共享链接库当应用程序启动时被加载。当一个共享链接库被成功安装后,所有的应用程序从此以后都会自动使用新的共享库。实际上它要比这个更灵活更复杂,因为Linux采用了如下方法允许你:更新库但是仍然支持应用程序使用老的,不向后兼容的版本;当执行应用程序时可以覆盖指定的库甚至是库中特定的函数;就算应用程序正在运行并使用已经存在的库,仍然可以做以上的事情。为了让共享链接库支持这些特性,我们必须遵循一些惯例和规范。首先你需要明白库的各翻译 2010-10-03 13:54:00 · 713 阅读 · 0 评论 -
创建Linux下可运行的超小型ELF可执行文件(3)
p { margin-bottom: 0.21cm; }我们的程序本身只有7字节,难道ELF真的需要361字节的额外空间吗?我们用objdump来看一下文件内容:$objdump -x a.out | less让我们看看块列表:Sections:IdxName Size VMA LMA File off Algn0.text 00000007 08048080 08048080 00000翻译 2010-10-03 16:59:00 · 549 阅读 · 0 评论 -
创建Linux下可运行的超小型ELF可执行文件(2)
<br /> p { margin-bottom: 0.21cm; }<br />我们再试试gcc的其他命令行参数,<br />-nostdlib<br />在链接时不使用标准系统库和startup文件,只有你表明的文件将会被传递给连接器。<br /> <br />试试看:<br />$gcc -Wall -s -nostdlib tiny.o<br />tiny.o(.text+0x6):undefined reference to '_exit'<br /> <br翻译 2010-10-03 16:57:00 · 592 阅读 · 0 评论