- 主题:能否给dll尾部加个字符串数组
想法:程序的一个小dll文件要用到一个常量字符串,每次重新编译比较麻烦,现在是预留几MB的空间直接打开dll修改这个字符串(字符串常量可能几KB,也可能几MB)。问题是:如果不想预留几MB长度,能否把字符串加在dll尾部,然后把这个字符串的地址改到dll尾部位置。
--
FROM 223.104.39.*
当然可以,通过PE file header是可以定位到这个地方的,不过可能要注意一下padding。
另外一个办法是单独搞一个resource dll,字符串放在这个resource dll中。
或者直接load一个txt file也行啊
--
修改:z16166 FROM 221.218.162.*
FROM 221.218.162.*
需求是只能在一个dll内。不知道padding会不会遇到字节对齐等问题出bug,还一个问题是linux的so能否同样处理。
【 在 z16166 的大作中提到: 】
: 当然可以,通过PE file header是可以定位到这个地方的,不过可能要注意一下padding。
: 另外一个办法是单独搞一个resource dll,字符串放在这个resource dll中。
--
FROM 223.104.39.*
win/linux应该都没问题
优先用PE/ELF的header来定位数据。
实在不行,还可以用笨办法的,就是从文件尾部回溯几兆,然后搜索起始的特征串(在正常串的前面加个定位用的特征串)
【 在 toutouqi 的大作中提到: 】
: 需求是只能在一个dll内。不知道padding会不会遇到字节对齐等问题出bug,还一个问题是linux的so能否同样处理。
--
FROM 221.218.162.*
重新编译有啥麻烦的。不就是鼠标点一下的事吗
【 在 toutouqi 的大作中提到: 】
: 想法:程序的一个小dll文件要用到一个常量字符串,每次重新编译比较麻烦,现在是预留几MB的空间直接打开dll修改这个字符串(字符串常量可能几KB,也可能几MB)。问题是:如果不想预留几MB长度,能否把字符串加在dll尾部,然后把这个字符串的地址改到dll尾部位置。
--
FROM 39.144.49.*
重新编译需要编译环境一直在才行啊。
【 在 dormouseBHU 的大作中提到: 】
: 重新编译有啥麻烦的。不就是鼠标点一下的事吗
--
FROM 114.246.248.*
你这是放在debug版本里还是release版本里?
release我就不参与讨论了。
要是debug,完全可以额外加一个文本文件读一下嘛。几行代码的事。
【 在 toutouqi 的大作中提到: 】
: 重新编译需要编译环境一直在才行啊。
--
FROM 76.126.252.*
能,如果不想看PE结构,就直接放到文件最后面,用的时候取最后固定长度就行。
【 在 toutouqi 的大作中提到: 】
:
: 想法:程序的一个小dll文件要用到一个常量字符串,每次重新编译比较麻烦,现在是预留几MB的空间直接打开dll修改这个字符串(字符串常量可能几KB,也可能几MB)。问题是:如果不想预留几MB长度,能否把字符串加在dll尾部,然后把这个字符串的地址改到dll尾部位置。
#发自zSMTH@HRY-AL00Ta
--
FROM 111.197.173.*
release版本。
【 在 here080 的大作中提到: 】
: 你这是放在debug版本里还是release版本里?
: release我就不参与讨论了。
: 要是debug,完全可以额外加一个文本文件读一下嘛。几行代码的事。
--
FROM 114.246.248.*
dll/so被加载后,dll内的函数获得dll尾部的数据地址用啥函数?
【 在 youngbug 的大作中提到: 】
: 能,如果不想看PE结构,就直接放到文件最后面,用的时候取最后固定长度就行。
:
: #发自zSMTH@HRY-AL00Ta
--
FROM 114.246.248.*