Получить "удалённую" директорию...

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 18 ноя 2009.

  1. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    764
    У меня есть прога, которая "делает" на стол, если я запускаю с MyComputer значка:
    HKLM\Software\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Attrman\command
    короче, создаёт ini-файл будто бы стол это её текущий дир.
    Хочу зделать лоадер, чтоб исправить.
    Както уже было я накатал нечто и даже думал пойдёт!

    Код (Text):
    1. start:
    2.         invoke GetCurrentDirectory,MAX_PATH,lpBuffer
    3.         invoke MessageBox,NULL,lpBuffer,'I''m here:',MB_OK
    4. exit:
    5.         invoke ExitProcess,0
    6.  
    7. lpBuffer db 2048 dup (?)
    но оно не захотело пойти. :'(

    если pe.exe лоадер лежащий в c:\xxx запустить батником из c:\zzz\my.bat,
    то оно скажет что я в c:\zzz - значит это не та апи :dntknw:

    Вообще-то достаточно бы в
    Код (Text):
    1. 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!
     
  2. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    764
    invoke ShellExecute,NULL,NULL,lpFileName,NULL,'C:\~\Apps\Attrman',SW_HIDE
    так работает чисто, проверил!
    осталось "C:\~\Apps\Attrman" получить, впрочем из того же реестра,
    хотя жаль, что узнать этот путь без реестра неизвестно как.
    ...таг, надо теперь вспомнить как реестр читать, RegQueryValueEx - это не то...
    небось RegReadValue там не водится как обычно!... RegGetValue
     
  3. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    764
    Код (Text):
    1. include '%fasm%\win32ax.inc'
    2. entry start
    3.  
    4. data import
    5.         library Advapi32,'ADVAPI32.DLL',kernel32,'KERNEL32.DLL',user32,'USER32.DLL'
    6.         import Advapi32,RegQueryValueExA,'RegQueryValueExA',RegCloseKey,'RegCloseKey',RegOpenKeyExA,'RegOpenKeyExA'
    7.         import user32,MessageBox,'MessageBoxA'
    8.         import kernel32,ExitProcess,'ExitProcess'
    9. end data
    10.  
    11. ;section '.code' code readable writeable executable
    12. start:
    13.         invoke  RegOpenKeyExA,HKEY_LOCAL_MACHINE,addr RegSubKey,0,KEY_READ,addr hSubKey
    14.         invoke  RegQueryValueExA,hSubKey,addr RegValue,NULL,addr RegType,addr RegBuffer, addr RegSize
    15.  
    16.         invoke MessageBox,NULL,RegBuffer,RegBuffer,,MB_OK
    17.         invoke  RegCloseKey,hSubKey
    18. exit:
    19.         invoke ExitProcess,0
    20.  
    21. ;section '.data' data readable writeable executable
    22.  
    23. RegSubKey       db      "SOFTWARE\Microsoft\Windows\CurrentVersion",0
    24. RegValue        db      "ProductId",0
    25. RegBuffer       db      256 dup(?)
    26. RegSize         dd      256
    27.  
    28. ;section '.idata' data readable writeable executable
    29.  
    30. RegType         dw           ?
    31. hSubKey         dd    0x40000   ; HINSTANCE = 0x40000
    Что-то криво... :'(
    Пример украл тут, http://freetek.netfirms.com/ASM/RegQueryValueEx.html ...как реестр читать?
     
  4. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    Semiono В этом указаны какие функции использовать надо. Узнать про эти функции ты можешь на msdn. RegOpenKeyExA, RegQueryValueEx, RegCloseKey
     
  5. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    764
    Вроде бы пустяковый вопрос, но раздражает.
    OllyDbg начинает ругаться "OEP outside the code" если в программе такой макрос
    section '.idata' import data readable writeable
    ну хорошо, хотя я к этому привык,
    data import
    end data
    но а как тогда прикреплять такое
    section '.rsrc' resource data readable
    или что делать с олли?

    конечно можно кампилить без ресурсов и тестить, но хотелось бы другие мнения узнать?
    или это вообще не проблемма для дебага?