Кресты / Говнокод #17119 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
const VS_FIXEDFILEINFO* GetFileVersion(PCWSTR name)
{
	HMODULE hmod = GetModuleHandle(name);
	static LPCWSTR a[3] = { RT_VERSION, MAKEINTRESOURCE(1) };
	PIMAGE_RESOURCE_DATA_ENTRY pirde;
	PVOID pv;
	DWORD size;

	return !hmod || 
		0 > LdrFindResource_U(hmod, a, 3, &pirde) || 
		0 > LdrAccessResource(hmod, pirde, &pv, &size) ||
		size < sizeof(VS_FIXEDFILEINFO)
		? 0 : (VS_FIXEDFILEINFO*)findDWORD((size - sizeof(VS_FIXEDFILEINFO))/sizeof(DWORD) + 1, (PDWORD)pv, 0xfeef04bd);
}

Запостил: zhukas zhukas, (Updated )

Комментарии (5) RSS

  • P.S. Это кусок какой-то защиты от копирования? Ну где еще может пригодиться получение версии файлов из kernel mode...
    Ответить
      • Ну может какая-то самопальная херня с таким названием? Не пойму, зачем и как из юзермода юзать LdrAccessResource, если есть нормальные функции? Странный код какой-то.
        Ответить
        • >зачем - для доступа к ресурсам
          >как - элементарно
          >есть нормальные функции - а LdrAccessResource менее нормальная чем LoadResource ?? вторая всего лишь тонкая оболочка вокруг первой к тому же менее удобная - не возвращает размер ресурса например. нужно дополнительно SizeofResource вызывать. не возвращает кода ошибки если что.
          Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8