shellcode-factory icon indicating copy to clipboard operation
shellcode-factory copied to clipboard

修复当变量名长度==8时产生的bug

Open qqq694637644 opened this issue 7 months ago • 0 comments

根据COFF规范,如果符号名称的长度正好是8个字节,那么编译器会在名称后面追加一个空字节,并将其存储在 ShortName 字段中。 修复后代码:

bug复现: 修复前如果导出变量的变量名长度正好为8,那么不会产生shellcode导出

const char *obj::symbol_name(IMAGE_SYMBOL &symbol) {

if (symbol.N.Name.Short != 0) {
    // 如果符号名称的长度小于等于8个字节,从 ShortName 中提取
    char name[9];
    memcpy(name, symbol.N.ShortName, 8);

    // 查找字符串的实际长度
    size_t length = strnlen(name, 8);

    // 添加字符串终止符
    name[length] = '\0';

    // 返回符号名称
    return _strdup(name);
}

导出函数如果的函数名字符串包含hookcall或callfunc(请注意是包含),无法正确导出函数

qqq694637644 avatar Jul 11 '24 07:07 qqq694637644