shortタグ値がバイナリファイルで初めて表示される場所を検索します.


このプログラムはただのプレゼンテーションプログラムで、まだ修正する価値があります.
@1.問題の説明:
最初からいくつかのbyteを移動すると、奇数のbyteをオフセットした後、偶数のbyteをオフセットした後、ファイルがテキストファイルではなく、テキストで開くことができず、バイナリで開くしかないバイナリファイルがあります.このタグの数値位置は、ファイルの先頭から数byte後にオフセットされているかどうかを確認します.
@2.現在のバージョンコード2011.9.3.14.38:
#include <stdio.h>
#include <stdlib.h>

long findHexTar(short tar, FILE *fp)
{
    long lSize;
    char* buffer;
    size_t result;
    
    //  
    fseek(fp, 0, SEEK_END);    
    lSize = ftell(fp);
    rewind(fp);
    
    //  
    buffer = (char*)malloc(sizeof(char) * lSize);
    
    //  
    result = fread(buffer, 1, lSize, fp);
    
    long nPos = 0;
    while ( nPos < sizeof(char) * lSize - 1)    //   
    {
        if ( *(short*)(buffer + nPos) == tar )
            break;
        else
            nPos++; 
    }

    free(buffer);
    return nPos; 
}

int main()
{
    FILE* fp = fopen("ProxyThorn.exe", "rb");
    short tar = 0x5A4D;
    long nPos = findHexTar(tar, fp);
    printf("Found 0x%.04X at offset %d bytes",tar, nPos);
    getchar();
    return 0;
}