У меня есть прога, которая "делает" на стол, если я запускаю с MyComputer значка: HKLM\Software\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Attrman\command короче, создаёт ini-файл будто бы стол это её текущий дир. Хочу зделать лоадер, чтоб исправить. Както уже было я накатал нечто и даже думал пойдёт! Код (Text): start: invoke GetCurrentDirectory,MAX_PATH,lpBuffer invoke MessageBox,NULL,lpBuffer,'I''m here:',MB_OK exit: invoke ExitProcess,0 lpBuffer db 2048 dup (?) но оно не захотело пойти. :'( если pe.exe лоадер лежащий в c:\xxx запустить батником из c:\zzz\my.bat, то оно скажет что я в c:\zzz - значит это не та апи Вообще-то достаточно бы в Код (Text): invoke ShellExecute,NULL,NULL,lpFile,NULL,NULL,SW_HIDE указать каталог лоадера, но как? invoke ShellExecute,NULL,NULL,lpFile,NULL,'.',SW_HIDE invoke ShellExecute,NULL,NULL,lpFile,NULL,'.\',SW_HIDE invoke ShellExecute,NULL,NULL,lpFile,NULL,'..\',SW_HIDE как? было бы как MAX_PATH, нечто вроде BINARYLOAD_DIR!
invoke ShellExecute,NULL,NULL,lpFileName,NULL,'C:\~\Apps\Attrman',SW_HIDE так работает чисто, проверил! осталось "C:\~\Apps\Attrman" получить, впрочем из того же реестра, хотя жаль, что узнать этот путь без реестра неизвестно как. ...таг, надо теперь вспомнить как реестр читать, RegQueryValueEx - это не то... небось RegReadValue там не водится как обычно!... RegGetValue
Код (Text): include '%fasm%\win32ax.inc' entry start data import library Advapi32,'ADVAPI32.DLL',kernel32,'KERNEL32.DLL',user32,'USER32.DLL' import Advapi32,RegQueryValueExA,'RegQueryValueExA',RegCloseKey,'RegCloseKey',RegOpenKeyExA,'RegOpenKeyExA' import user32,MessageBox,'MessageBoxA' import kernel32,ExitProcess,'ExitProcess' end data ;section '.code' code readable writeable executable start: invoke RegOpenKeyExA,HKEY_LOCAL_MACHINE,addr RegSubKey,0,KEY_READ,addr hSubKey invoke RegQueryValueExA,hSubKey,addr RegValue,NULL,addr RegType,addr RegBuffer, addr RegSize invoke MessageBox,NULL,RegBuffer,RegBuffer,,MB_OK invoke RegCloseKey,hSubKey exit: invoke ExitProcess,0 ;section '.data' data readable writeable executable RegSubKey db "SOFTWARE\Microsoft\Windows\CurrentVersion",0 RegValue db "ProductId",0 RegBuffer db 256 dup(?) RegSize dd 256 ;section '.idata' data readable writeable executable RegType dw ? hSubKey dd 0x40000 ; HINSTANCE = 0x40000 Что-то криво... :'( Пример украл тут, http://freetek.netfirms.com/ASM/RegQueryValueEx.html ...как реестр читать?
Semiono В этом указаны какие функции использовать надо. Узнать про эти функции ты можешь на msdn. RegOpenKeyExA, RegQueryValueEx, RegCloseKey
Вроде бы пустяковый вопрос, но раздражает. OllyDbg начинает ругаться "OEP outside the code" если в программе такой макрос section '.idata' import data readable writeable ну хорошо, хотя я к этому привык, data import end data но а как тогда прикреплять такое section '.rsrc' resource data readable или что делать с олли? конечно можно кампилить без ресурсов и тестить, но хотелось бы другие мнения узнать? или это вообще не проблемма для дебага?