Всем привет! У меня keygen сделан на основе одного диалогового окна. Соответственно, идет генерация паролей при нажатии на кнопку и ловления сообщения wm_command с нужным wparam (равным id кнопке). Но вот решил я немного изменить keygen и сделать из него bruteforce. Теперь он у меня перебирает пароли. Все прекрасно. Все бежит и перебирается. Но вот беда. Стоит только нажать на диалоговое окно и все замирает. Я ведь сделал этот перебор в цикле ловления сообщения от кнопки и соответственно у меня никакие сообщения больше не ловятся. Можно ли мне что-то изменить в исходнике, чтобы ловились другие сообщения и можно было допустим остановить процесс генерации или мне надо полностью переписать весь исходник? Thx!
Выполняй перебор паролей в отдельном треде. В отдельном треде проверяй переодически семафор, если на кнопку нажали выставляеш симафор в процедуре диалогового окна и тред перебора паролей завершается, увидев, что семафор выставлен.
Можно просто завершать thread с расчётами посредством TerminateThread из цикла ловления сообщения от кнопки - тогда семафор не нужен.
Блин! Проблема! Хелп! Почему если я вызываю из ThreadProc invoke MessageBoxA, hwind, addr MBoxTxt, addr MBoxCap, MB_OK Линкер меня посылает с сообщением errorA2006: undefined symbol: hwind Как мне передать новому thread'у указатель на основное окно моего диалога hwind?
Код (Text): HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes DWORD dwStackSize, // initial thread stack size, in bytes LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function LPVOID lpParameter, // argument for new thread <- [b]вот здесь[/b] DWORD dwCreationFlags, // creation flags LPDWORD lpThreadId // pointer to returned thread identifier );
Ну я так и делал. Либо так (передаю hwind): 1) invoke CreateThread,NULL,NULL,eax,hwind,0,ADDR ThreadID 2) invoke CreateThread,NULL,NULL,eax,addr hwind,0,ADDR ThreadID В обоих случаях выдает: error A2133: register value overwritten by INVOKE
invoke MessageBoxA, hwind, addr MBoxTxt, addr MBoxCap, MB_OK А так не прокатит? invoke MessageBoxA, NULL, addr MBoxTxt, addr MBoxCap, MB_OK и вот Код (Text): section '.data' data readable writeable ... hwind dd ? ThreadID dd ? section '.code' code readable executable start: ... invoke CreateThread,NULL,NULL,eax,[hwind],0,ThreadID ... section '.idata' import data readable writeable library kernel,'KERNEL32.DLL' import kernel,\ CreateThread,'CreateThread',\ ExitProcess,'ExitProcess' ... примерно так всё работает - мож ты не учел особенности компилера?
Да полный бред! Если я прописываю в .data hwind dd ? то он мне выдает ошибку Symbol Redefinition на строку инициализации моей главной подпрограммы: MainDlgProc proc hwindWORD, wmsgWORD, wparamWORD, lparamWORD А если я убираю эту строчку из .data, то ругается на подпрограмму thread'a, что "Undefined symbol hwind" где я вызываю invoke MessageBoxA, hwind, addr MBoxTxt, addr MBoxCap,MB_OK или invoke SendDlgItemMessage,hwind,WM_FINISH,NULL,NULL Мне же надо как-то передать семафор для основного процесса. (((((((((((((((
Так вот в том-то все и дело, что я не пойму, какая это переменная должна быть. Ведь эта hwind - это у меня главный хэндлер главного диалогового окна. Соответственно мне она нужна и для работы в главной процедуре, и для посылки сообщений из моего второго процесса на главную процедуру. Что, где мне изменить? У меня это должна быть одна и та же переменная.
Под Винду я редко пишу но вроде так - не обращай внимания на лишнии импорты - это я кое что переделывал
Yes! Все, я сделал. Не знаю как, но сделал. Я изменил процедуру вторичного процесса: ThreadProc PROC USES ecx hwindWORD у меня было ThreadProc PROC USES ecx ParamWORD И плюс вначале программы написал CreateThread PROTO WORD,WORD,WORD,WORD,WORD,WORD Одно непонятно. Почему здесь: invoke CreateThread,NULL,NULL,eax,[hwind],0,ADDR ThreadID [hwind] работает, а addr hwind не работает и компилятор ругается?
>Потому что [hwind] - переменная а addr hwind - получается указатель Нет, но раньше в DOSе в асме было так: hwind -> переменная [hwind], offset hwind -> все одно, передавался адрес на hwind
Ураааааааааааа! Заррррработало!!!!!!!!!! Считает, падлюка, серийники! ))))))))))))))) Спасибо всем, кто помогал.