单板选择NandFlash启动,则硬件上电后,系统会自己主动将NandFlash中的前4K内容复制到STEPSTONE即4K SRAM中。然后从SRAM中的0X0地址启动。基于mini2440的简易bootloader制作方法在上一篇文章中有提到。它编译出的boot.bin仅仅有1.96KB,小于S ...
分类:
其他好文 时间:
2018-12-02 22:42:57
阅读次数:
272
title: 链接脚本与重定位 tags: ARM date: 2018 10 12 19:25:53 链接脚本与重定位 [TOC] 学习视频 "韦东山" 总结 1. 尽量使用一体式的链接脚本,方便简单,灵活 2. 学会使用链接脚本的值 3. bss段和comm段是需要我们手动去清除的 4. 位置无 ...
分类:
其他好文 时间:
2018-11-27 01:26:49
阅读次数:
352
前面链接地址都是0x0,可以从nor正常启动内核和文件系统。现在把链接地址改成0x33f00000 一旦更改了链接地址, u-boot从nor flash加载时,串口没有任何输出 添加文件boot_init.c #define NFCONF (*((volatile unsigned long *) ...
分类:
其他好文 时间:
2018-11-03 23:04:51
阅读次数:
193
GOT应该保存的是puts函数的绝对虚地址,这里为什么保存的却是puts@plt的第二条指令呢? 原来“解释器”将动态库载入内存后,并没有直接将函数地址更新到GOT表中,而是在函数第一次被调用时,才会进行函数地址的重定位,这样做的好处是可以加快程序加载速度,尤其对大型程序来说。有关这方面的更详细的信 ...
分类:
其他好文 时间:
2018-11-03 19:21:27
阅读次数:
251
ARM ELF的函数重定位与x86是一致的,但由于汇编指令不同,再鼓捣一遍。 示例代码: 通过 readelf -r 可以查看ELF中所有需要重定位的函数,我们以fopen()函数为例,分析其重定位过程。 首先main()函数中,通过 bl 82f4调用fopen(),82f4是一个16进制表示的地 ...
分类:
其他好文 时间:
2018-10-28 00:07:36
阅读次数:
519
0x00 前言 对于加壳程序第一件事就是要找到OEP(oringinal Entry point),由于加壳的缘故,当PE文件载入OD或者其他调试软件时进入的的往往是壳程序的入口地址。所以要进行逆向分析第一步就必须找到PE程序的原始入口点。 0x01 壳的加载过程 壳和病毒在某些方面比较类似,都需要 ...
分类:
其他好文 时间:
2018-10-26 12:08:51
阅读次数:
353
title: 链接脚本与重定位 tags: ARM date: 2018 10 12 19:25:53 链接脚本与重定位 [TOC] 学习视频 "韦东山" 总结 1. 尽量使用一体式的链接脚本,方便简单,灵活 2. 学会使用链接脚本的值 3. bss段和comm段是需要我们手动去清除的 4. 位置无 ...
分类:
其他好文 时间:
2018-10-24 01:05:03
阅读次数:
497
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件 ...
分类:
编程语言 时间:
2018-10-23 14:24:59
阅读次数:
180
PE文件格式详解(七) Ox00 前言 前面好几篇在讲输入表,今天要讲的是输出表和地址的是地址重定位。有了前面的基础,其实对于怎么找输出表地址重定位的表已经非常熟悉了。 0x01 输出表结构 当创建一个DLL文件时,实际上创建了一组能让EXE或者其他DLL调用的一组函数,PE装载器根据DLL文件中输 ...
分类:
其他好文 时间:
2018-10-22 17:47:58
阅读次数:
299
思考: 链接器根据什么原则完成具体的链接工作? 入口函数是可配置的?那么其他的原则是不是也可以配置呢? 假设是可以配置的,那么必然的存在一个配置文件,在这个文件中可以配置各种各样的原则。这个配置文件就是链接脚本。 链接脚本里面就写了链接原则(如何链接各个段,如何重定位)。 上图指定了代码段的起始地址 ...
分类:
其他好文 时间:
2018-10-21 21:46:20
阅读次数:
204