开发者

Search for a string in memory

I'm trying to get this cod开发者_C百科e to work, from here

    char *mem = (unsigned char *) 0xF0000;
    int length, i;
    unsigned char checksum;
    while ((unsigned int) mem < 0x100000) {
        if (mem[0] == '_' && mem[1] == 'S' && mem[2] == 'M' && mem[3] == '_') {
            length = mem[5];
            checksum = 0;
            for(i = 0; i < length; i++) {
                checksum += mem[i];
            }
            if(checksum == 0) break;
        }
        mem += 16;
}

There are some type errors, like cant init char* with unsigned char*.

when I try to replace char * with unsigned char * int first line I cant use [] notation, how can I use memcmp with this code?


In the first line, you cast to unsigned char*, but try assigning to char*. Why not cast to char* directly?

I'm assuming you are working on some embedded system code, since with multitasking operating systems, simply accessing hard-coded memory locations will cause your program to crash.


The code failed to work because it is incorrect way of finding smbios entry point structure address on an EFI machine,

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜