assime в inline asm VC++

Тема в разделе "LANGS.C", создана пользователем perdimonokl, 4 фев 2008.

  1. perdimonokl

    perdimonokl New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    38
    Есть ли под VC++ в его inline assembler деректива assume как в MASM? А то я хотле перенести код. Код простой а именно это детект дебагера в юзермоде через прямой доступ к PEB и проверки BeingDebugged

    Код на масм
    Код (Text):
    1. ASSUME FS:NOTHING
    2. MOV EAX,DWORD PTR FS:[18h]
    3. MOV EAX,DWORD PTR DS:[EAX+30h]
    4. MOVZX EAX,BYTE PTR DS:[EAX+2h]
    5.  
    6. CMP EAX,1
    7. JE @DebuggerDetected
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    assume reg:datatype нет в инлайне, а в твоём случае вообще не надо assume. Мог бы и проверить.
     
  3. perdimonokl

    perdimonokl New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    38
    Дак я и проверил на mams скомпилил всё работает на С++ накатал и в функции слетает на MOV EAX,DWORD PTR DS:[EAX+30h]
    Может чтот не так делал просто. Попроавьте тогда если не трудно.
     
  4. perdimonokl

    perdimonokl New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    38
    оч интересно не знаю что было может я где то нагнал в тот раз в коде. И без assume пашет отлично

    Код (Text):
    1. #include <windows.h>
    2. #include <stdio.h>
    3.  
    4. DWORD WINAPI IsDebug()
    5. {
    6.     DWORD addr;
    7.  
    8.     __asm {
    9.         MOV EAX,DWORD PTR FS:[18h]
    10.         MOV EAX,DWORD PTR DS:[EAX+30h]
    11.         MOVZX EAX,BYTE PTR DS:[EAX+2h]
    12.         MOV [addr],EAX
    13.     }
    14.  
    15.     return addr;
    16. }
    17.  
    18. int main()
    19. {
    20.     if(IsDebug()==TRUE)
    21.     {
    22.         MessageBox(NULL,"Debugger","OK",MB_OK);
    23.     } else {
    24.         MessageBox(NULL,"Not Debugger","OK",MB_OK);
    25.     }
    26.    
    27.     return 0;
    28. }