导航:首页 > 操作系统 > linux常量

linux常量

发布时间:2024-12-31 17:37:37

linux 编译常量被重复定义了怎么办

宏phys定义了你的机器上的地址转换__virt_to_phys()。这个宏用于把虚拟地址转换为一个物理地址。通常情况下:
phys = virt - PAGE_OFFSET PHYS_OFFSET 解压缩器的地址地址。由于当你调用解压缩器代码时,通常关闭MMU,因此这里并不讨论虚拟地址和物理地址的问题。通常你在这个地址处调用内核,开始引导内核。它不需要在RAM中,只需要位于FLASH或其他只读或读/写的可寻址的存储设备中。
l ZBSSADDR
解压缩器的初始化为0的工作区的起始地址。必须位于RAM中,解压缩器会替你把它初始化为0,此外,需要关闭MMU。
l ZRELADDR
解压缩内核将被写入的地址和最终的执行地址。必须满足:
__virt_to_phys(TEXTADDR) == ZRELADDR
内核的开始部分被编码为与位置无关的代码。
l INITRD_PHYS
放置初始RAM盘的物理地址。仅当你使用bootpImage时相关(这是一种非常老的param_struct结构)
l INITRD_ⅥRT
初始RAM盘的虚拟地址。必须满足:
__virt_to_phys(INITRD_ⅥRT) == INITRD_PHYS
l PARAMS_PHYS
param_struct 结构体或tag lis的物理地址,用于给定内核执行环境下的不同参数。 RAM第一个BANK的物理地址地址。
l PAGE_OFFSET
RAM第一个BANK的虚拟地址地址。在内核引导阶段,虚拟地址PAGE_OFFSE将被映射为物理地址PHYS_OFFSET,它应该与TASK_SIZE具有相同的值。
l TASK_SIZE
一个用户进程的最大值,单位为byte。用户空间的堆栈从这个地址处向下增长。
任何一个低于TASK_SIZE的虚拟地址对用户进程来说都是不可见的,因此,内核通过进程偏移对每个进行进行动态的管理。我把这叫做用户段。任何高于TASK_SIZE的对所有进程都是相同的,称之为内核段。(换句话说,你不能把IO映射放在低于TASK_SIZE和PAGE_OFFSET的位置处。)
l TEXTADDR
内核的虚拟起始地址,通常为PAGE_OFFSET 0x8000。内核映射必须在此结束。
l DATAADDR
内核数据段的虚拟地址,不能在使用解压缩器的情况下定义。
l VMALLOC_START
l VMALLOC_END
用于限制vmalloc()区域的虚拟地址。此地址必须位于内核段。通常,vmalloc()区域在最后的虚拟RAM地址以上开始VMALLOC_OFFSET字节。
l VMALLOC_OFFSET
Offset normally incorporated into VMALLOC_START to provide a hole between virtual RAM and the vmalloc area. We do this to allow out of bounds memory accesses (eg,something writing off the end of the mapped memory map) to be caught. Normally set to 8MB. pram——指定了RAM起始的物理地址,必须始终存在,并应等于PHYS_OFFSET。
pio——是供arch/arm/kernel/debug-armv.S中的调试宏使用的,包含IO的8 MB区域的物理地址。
vio——是8MB调试区域的虚拟地址。
这个调试区域将被位于代码中(通过MAPIO函数)的随后的构架相关代码再次进行初始化。
l BOOT_PARAMS
参见 PARAMS_PHYS.
l FⅨUP(func)
机器相关的修正,在存储子系统被初始化前运行。
l MAPIO(func)
机器相关的函数,用于IO区域的映射(包括上面的调试区)。
l INITIRQ(func)
用于初始化中断的机器相关的函数 。

② linux c++源代码,如何隐藏源代码中的常量字符串使得通过反汇编难以获取到此字符串。 不使用加壳。

首先,要对这个常量字符串进行加密
然后,加密用的密码(密钥)需要进行特殊处理。
比如:要保护字符串123456,用密钥13579进行加密。
密钥13579的16进制数组形式为:{0x31, 0x33, 0x35, 0x37, 0x39, 0x00}
你可以对这个数组进行数据干扰。比如:高位乱填数据(因为你知道是3),低位都加/减某数值:
变为了:{ 0xA3, 0xF5, 0x67, 0xD9, 0x3A, 0x00 }
你在代码中对每一位进行恢复:
*p &= 0x0F, *p |= 0x30, *p -= 0x02,如此得到你的原始密码:13579;
反汇编看到的你的密钥串为:0xA3, 0xF5, 0x67, 0xD9, 0x3A, 0x00。
不知道你思路的话,只能碰运气猜啦。

在上面两种干扰方法基础上,你甚至还可以把高低位调换,这样就又加了一层干扰信息。
别人想破解也得好好猜一会了。

阅读全文

与linux常量相关的资料

热点内容
连接oracle数据库命令 浏览:950
网易云改id服务器出现错误 浏览:316
程序员怎样拿到36万 浏览:11
linuxhttpd服务 浏览:568
解压声控2017 浏览:573
赛欧压缩比102加几号油 浏览:821
程序员了吗 浏览:7
如何用命令打开本地用户 浏览:708
中望cad分解命令 浏览:850
解压到系统盘找不到了 浏览:590
空气压缩机电磁阀漏气 浏览:844
mongodbpython教程 浏览:590
解压系列蜘蛛侠救空难飞机 浏览:944
java解压缩软件下载 浏览:512
安卓怎么用shadowsocksr 浏览:90
苏州市常用的文件加密软件 浏览:585
安卓手机怎么玩怪物弹珠台服 浏览:433
写小白程序员的一封信 浏览:808
数控编程图纸没有坐标 浏览:880
数控编程丝杆间隙 浏览:590