То, что на сайте у меня про DLL - это слишком уже крайняя мера, потому как там код из ядра должен был грузить(да и устаревший он уже. Я уже написал универсальнй работающий от 2000 до w7), а в юзермоде проще всё. Так что советую почитать тебе на васме про инжект DLL в процесс. также есть и другой вариант - когдато тут выкладывал код для изменения файла проги так, чтобы при старте она подгружала нужную нам DLL. Тут зависит от того для чего ты это всё делаеш. Потмоу как можно и банальным копированием хендлов обойтись
Буду рад любой информации по работе с ICS. Пока ковыряю примеры, идущие в комплекте, скорость и стабильность определенно выше, чем у старой доброй indy, под впечатлением.
2 transserg нет, нет и еще раз нет. Для работы с файлами существуют обычные апишки CreateFile - открытие/создание файла WriteFile - запись в файл ReadFile - чтение из файла CloseHandle - закрытие дискриптора SetFilePointer - перемещение указателя внутри файла на какую либо позицию.
тогда немного похожий вопрос (задавал на прошлой странице но небыло ответа) как записать структуру в файл в бинарный поля структыру динамические.... + надописать не одну структуру а несколько... как тогда лучше организовать хранение данных, данные в основном строковые
Как и в любой подобной ситуации - если в файле должно быть несколько обьектов данных, а загружать надо только один, то надо писать хэдер с ID обьекта (в данном случае строки), а также его длиной и смещением (позицией в файле), а дальше писать сами файлы. Хэдер надо делать в 2 захода - сначала сделать макет, проверить его длину, и потом вписать значения смещений обьектов плюс длина хэдера. А дальше писать сами обьекты по смещениям в хэдере.
KaZ@NoVa как же быть если надо будет изменить что то? тогда предется весь файл перелопачивать так как места в заголовке может не остаться=)
А как же иначе? Если надо изменить строки, которые хранятся в бинарном файле, причем неизвестно, какая максимальная длина строки, то файл придется перезаписывать в любом случае. Можно, конечно, его в XML/WDDX/serialize хранить, но это уже другой случай.
Подскажите. проверяю список фтп. делаю через инди. IdFTP1.Host := ftp; IdFTP1.UserName := username; IdFTP1.Password := password; IdFTP1.Connect; но медленно работает при проверках большого количества фтп. как проверку можно ускорить? может кто поделится исходником или примером. можно пм. спасибо.
--------true--------------- case <value> of constant:expression; end; -----------false------------- case <value> of expression:expression; end; ------------fix--------------- oO ?????????????? для меня открытие, что case не воспринимает выражения, действительно нельзя вместо константы подставить рандом числа к примеру?должен быть ведь обход... собственно говоря вот от источник проблеммы ПС:вопрос актуален, но решен циклом, бриками, цитромоном
Можно ли в Delphi написать циклический сдвиг строки вправо\влево используя вставку на ассемблере? И будет ли эта функция работать быстрее, чем например: Code: function (str: string; index: integer): string; begin Result := copy(string, index, length(str) - index) + copy(str, 1, index) end;
boomba тебе нужна многопоточность, но если ты будешь использовать инди+многопоточность это сильно подвесит систему, тебе нужен Winsock. Вобщем для брутера фтп тебе нужна многопоточность+Winsock, исходники исчи сам, про winsock и фтп есть тут на ачате гдето, вроде в статьях. Ну а использование потоков смотри в учебниках.
2 StealthMaster то, что ты написал - это самый медленный вариант. Проще будет просто циклом пробежаться по все строке и поменять элементы местами
Нашёл вот на сорцах ру http://forum.sources.ru/index.php?showtopic=282574 Code: function InjectLibrary(Process: LongWord; DLLPath: PChar): Boolean; var Parameters: Pointer; BytesWritten, Thread, ThreadID: dword; begin Result := False; Parameters := VirtualAllocEx(Process, nil, 4096, MEM_COMMIT, PAGE_READWRITE); if Parameters = nil then Exit; WriteProcessMemory(Process, Parameters, Pointer(DLLPath), 4096, BytesWritten); Thread := CreateRemoteThread(Process, nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'), Parameters, 0, ThreadId); WaitForSingleObject(Thread, 3000); VirtualFreeEx(Process, Parameters, 0, MEM_RELEASE); if Thread = 0 then Exit; CloseHandle(Thread); Result := True; end; Только вот не понимаю как должна выглядеть переменная процесса (Process: LongWord), как её получить? Вроде ProcessID это Dword
вот что написанно в мсдн Code: LPVOID WINAPI VirtualAllocEx( __in HANDLE hProcess, __in LPVOID lpAddress, __in SIZE_T dwSize, __in DWORD flAllocationType, __in DWORD flProtect ); hProcess The handle to a process. The function allocates memory within the virtual address space of this process. тоесть в параметре функции Process: LongWord; ты должен передать хендл процесса с которым будеш работать. хендл процесса получаеш через OpenProcess
Всем доброго времени суток! Прочитал сию статью... Но функции такой нету... Мб кто знает где туплю.. Заранее спасибо! _http://www.xakep.ru/post/37143/default.asp?page=1
Добавь в список используемых приложением юнитов WinSvc. Code: uses "все что было", WinSvc; Должно помочь. потому что большая часть функций для работы с сервисами объявлена в WinSvc.Pas.
Вот в борланд дельфи запустил прогу, она зациклила, как её убить? Ненадо мне щас тут про Alt+Ctrl+Del и ребут, есть какя-то комбинация клавиш для этого, банан говорил и я юзал, но вот забыл >_< Гугл мне вобще про OnClose(); и destroy(); расказывает
Переходишь в окно делфи, дальше по вкладкам -> RUN -> PROGRAM RESET Или Application.ProcessMessages; в цикле (понял как есть)