Ich verwende die Funktion , um jedes Byte einer Datei zu lesen, und schreibe es dann mit printf
.fgetc vermisst Bytes beim Lesen einer Datei
Ich habe gerade festgestellt, dass manchmal, nur einige Bytes vermisse, wenn ich mein Ergebnis mit einem Hex-Editor vergleiche.
Zum Beispiel beginnt der erste Fehler, um das 118. Byte und viele andere Fehler zufällig ...
jemand jemals erlebt?
Dies ist der Code (Windows)
char main(int argc, char* argv[]) {
FILE* fdIn;
FILE* fdOut;
long size = 0;
long i = 0;
char c = 0;
if (argc == 3) {
if ((fdIn = fopen(argv[1], "rt")) == NULL) {
printf("FAIL\n");
return 0;
}
if ((fdOut = fopen(argv[2], "w+")) == NULL) {
printf("FAIL\n");
return 0;
}
fseek(fdIn, 0L, SEEK_END);
size = ftell(fdIn);
fseek(fdIn, 0L, 0);
fprintf(fdOut, "unsigned char shellcode[%ld] = {", size);
while (i < size) {
c = fgetc(fdIn);
if (!(i % 16))
fprintf(fdOut, "\n\t");
fprintf(fdOut, "0x%02X", (unsigned char)c);
if (i != size - 1)
fprintf(fdOut, ", ");
i++;
}
fprintf(fdOut, "\n};\n");
fclose(fdIn);
fclose(fdOut);
printf("SUCCESS");
system("PAUSE");
}
return 0;
}
Öffnen Sie die Datei im Binärmodus. – chux
Zeigen Sie uns Ihren Code, Ihre Testdaten, das erwartete Ergebnis und das tatsächliche Ergebnis. – NineBerry
Arbeiten Sie an Windows? Sind die fehlenden Zeichen CR ('\ r',' \ 012')? Oder vielleicht^Z ('\ 032')? Haben Sie die Datei im Textmodus oder im Binärmodus geöffnet? –