#include <Windows.h>
void memfrob(void * s, size_t n)
{
char *p = (char *) s;
while (n-- > 0)
*p++ ^= 42;
}
int main()
{
memfrob("C:\\Program Files\\***\***\\***\***\\***", 30344);
}
Вот мой код. Если вы не можете сказать, я не уверен, что я делаю. Я гуглил около часа, и я не видел пример того, как использовать memfrob (), возможно, поэтому я так потерян. Я пытаюсь передать ему имя файла, а затем размер файла в байтах, но моя программа просто падает.
Хорошо, это то, что у меня сейчас есть:
#include <Windows.h>
#include <stdio.h>
int count = 0;
FILE* pFile = 0;
long Size = 0;
void *memfrob(void * s, size_t n)
{
char *p = (char *) s;
while (n-- > 0)
*p++ ^= 42;
return s;
}
int main()
{
fopen_s(&pFile, "C:\\Program Files\\CCP\\EVE\\lib\\corelib\\nasty.pyj", "r+");
fseek(pFile, 0, SEEK_END);
Size = ftell(pFile);
char *buffer = (char*)malloc(Size);
memset(buffer, 0, Size);
fread(buffer, Size, 1, pFile);
fclose(pFile);
memfrob(buffer, Size);
fopen_s(&pFile, "C:\\Program Files\\CCP\\EVE\\lib\\corelib\\nasty.pyj", "w+");
fwrite(buffer, Size, 1, pFile);
fclose(pFile);
}
В моем отладчике кажется, что fread ничего не записывает в буфер, и мой конечный файл просто 2A снова и снова, то есть 00 xor'd с 42. Так я могу получить еще одну подсказку?