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

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

  1. SHP!ON

    SHP!ON Elder - Старейшина

    Joined:
    7 Sep 2005
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    Я неособо разбираюсь в masm и не могу скомпилировать данный код, чтоб был exe. Кто может помочь ? Может что дописать нужно. Алгоритм: md5 hashing algo.

    Code:
    .686
    .model flat,stdcall
    option casemap:none
    
    .data?
    MD5HashBuf db 64 dup(?)
    MD5Digest dd 4 dup(?)
    MD5Len dd ?
    MD5Index dd ? 
      
    .code
    MD5FF macro dwA, dwB, dwC, dwD, locX, rolS, constAC
    	mov	edi,dwC
    	xor	edi,dwD
    	and	edi,dwB
    	xor	edi,dwD
    	add	dwA,[locX]
    	lea	dwA,[edi+dwA+constAC]
    	rol	dwA,rolS
    	add	dwA,dwB
    endm
    
    MD5GG macro dwA, dwB, dwC, dwD, locX, rolS, constAC
    	mov	edi,dwC
    	xor	edi,dwB
    	and	edi,dwD
    	xor	edi,dwC
    	add dwA,[locX]
    	lea	dwA,[edi+dwA+constAC]
    	rol	dwA,rolS
    	add	dwA,dwB
    endm
    
    MD5HH macro dwA, dwB, dwC, dwD, locX, rolS, constAC
    	mov	edi,dwC
    	xor	edi,dwD
    	xor	edi,dwB
    	add dwA,[locX]
    	lea	dwA,[dwA+edi+constAC]
    	rol	dwA,rolS
    	add	dwA,dwB
    endm
    
    MD5II macro dwA, dwB, dwC, dwD, locX, rolS, constAC
    	mov edi,dwD
    	xor edi,-1
    	or edi,dwB
    	xor edi,dwC
    	add dwA,[locX]
    	lea dwA,[edi+dwA+constAC]
    	rol dwA,rolS
    	add dwA,dwB
    endm
    
    align dword
    MD5Transform proc
    	pushad
    	mov esi,offset MD5Digest
    	mov edi,offset MD5HashBuf	
    	mov eax,[esi+0*4]
    	mov ebx,[esi+1*4]
    	mov ecx,[esi+2*4]
    	mov ebp,edi
    	mov edx,[esi+3*4]
    	;=================================================  =============
    	MD5FF eax, ebx, ecx, edx, dword ptr [ebp+ 0*4],  7, 0D76AA478H
    	MD5FF edx, eax, ebx, ecx, dword ptr [ebp+ 1*4], 12, 0E8C7B756H
    	MD5FF ecx, edx, eax, ebx, dword ptr [ebp+ 2*4], 17, 0242070DBH
    	MD5FF ebx, ecx, edx, eax, dword ptr [ebp+ 3*4], 22, 0C1BDCEEEH
    	MD5FF eax, ebx, ecx, edx, dword ptr [ebp+ 4*4],  7, 0F57C0FAFH
    	MD5FF edx, eax, ebx, ecx, dword ptr [ebp+ 5*4], 12, 04787C62AH
    	MD5FF ecx, edx, eax, ebx, dword ptr [ebp+ 6*4], 17, 0A8304613H
    	MD5FF ebx, ecx, edx, eax, dword ptr [ebp+ 7*4], 22, 0FD469501H
    	MD5FF eax, ebx, ecx, edx, dword ptr [ebp+ 8*4],  7, 0698098D8H
    	MD5FF edx, eax, ebx, ecx, dword ptr [ebp+ 9*4], 12, 08B44F7AFH
    	MD5FF ecx, edx, eax, ebx, dword ptr [ebp+10*4], 17, 0FFFF5BB1H
    	MD5FF ebx, ecx, edx, eax, dword ptr [ebp+11*4], 22, 0895CD7BEH
    	MD5FF eax, ebx, ecx, edx, dword ptr [ebp+12*4],  7, 06B901122H
    	MD5FF edx, eax, ebx, ecx, dword ptr [ebp+13*4], 12, 0FD987193H
    	MD5FF ecx, edx, eax, ebx, dword ptr [ebp+14*4], 17, 0A679438EH
    	MD5FF ebx, ecx, edx, eax, dword ptr [ebp+15*4], 22, 049B40821H
    	;=================================================  =============
    	MD5GG eax, ebx, ecx, edx, dword ptr [ebp+ 1*4],  5, 0F61E2562H
    	MD5GG edx, eax, ebx, ecx, dword ptr [ebp+ 6*4],  9, 0C040B340H
    	MD5GG ecx, edx, eax, ebx, dword ptr [ebp+11*4], 14, 0265E5A51H
    	MD5GG ebx, ecx, edx, eax, dword ptr [ebp+ 0*4], 20, 0E9B6C7AAH
    	MD5GG eax, ebx, ecx, edx, dword ptr [ebp+ 5*4],  5, 0D62F105DH
    	MD5GG edx, eax, ebx, ecx, dword ptr [ebp+10*4],  9, 002441453H
    	MD5GG ecx, edx, eax, ebx, dword ptr [ebp+15*4], 14, 0D8A1E681H
    	MD5GG ebx, ecx, edx, eax, dword ptr [ebp+ 4*4], 20, 0E7D3FBC8H
    	MD5GG eax, ebx, ecx, edx, dword ptr [ebp+ 9*4],  5, 021E1CDE6H
    	MD5GG edx, eax, ebx, ecx, dword ptr [ebp+14*4],  9, 0C33707D6H
    	MD5GG ecx, edx, eax, ebx, dword ptr [ebp+ 3*4], 14, 0F4D50D87H
    	MD5GG ebx, ecx, edx, eax, dword ptr [ebp+ 8*4], 20, 0455A14EDH
    	MD5GG eax, ebx, ecx, edx, dword ptr [ebp+13*4],  5, 0A9E3E905H
    	MD5GG edx, eax, ebx, ecx, dword ptr [ebp+ 2*4],  9, 0FCEFA3F8H
    	MD5GG ecx, edx, eax, ebx, dword ptr [ebp+ 7*4], 14, 0676F02D9H
    	MD5GG ebx, ecx, edx, eax, dword ptr [ebp+12*4], 20, 08D2A4C8AH
    	;=================================================  =============
    	MD5HH eax, ebx, ecx, edx, dword ptr [ebp+ 5*4],  4, 0FFFA3942H
    	MD5HH edx, eax, ebx, ecx, dword ptr [ebp+ 8*4], 11, 08771F681H
    	MD5HH ecx, edx, eax, ebx, dword ptr [ebp+11*4], 16, 06D9D6122H
    	MD5HH ebx, ecx, edx, eax, dword ptr [ebp+14*4], 23, 0FDE5380CH
    	MD5HH eax, ebx, ecx, edx, dword ptr [ebp+ 1*4],  4, 0A4BEEA44H
    	MD5HH edx, eax, ebx, ecx, dword ptr [ebp+ 4*4], 11, 04BDECFA9H
    	MD5HH ecx, edx, eax, ebx, dword ptr [ebp+ 7*4], 16, 0F6BB4B60H
    	MD5HH ebx, ecx, edx, eax, dword ptr [ebp+10*4], 23, 0BEBFBC70H
    	MD5HH eax, ebx, ecx, edx, dword ptr [ebp+13*4],  4, 0289B7EC6H
    	MD5HH edx, eax, ebx, ecx, dword ptr [ebp+ 0*4], 11, 0EAA127FAH
    	MD5HH ecx, edx, eax, ebx, dword ptr [ebp+ 3*4], 16, 0D4EF3085H
    	MD5HH ebx, ecx, edx, eax, dword ptr [ebp+ 6*4], 23, 004881D05H
    	MD5HH eax, ebx, ecx, edx, dword ptr [ebp+ 9*4],  4, 0D9D4D039H
    	MD5HH edx, eax, ebx, ecx, dword ptr [ebp+12*4], 11, 0E6DB99E5H
    	MD5HH ecx, edx, eax, ebx, dword ptr [ebp+15*4], 16, 01FA27CF8H
    	MD5HH ebx, ecx, edx, eax, dword ptr [ebp+ 2*4], 23, 0C4AC5665H
    	;=================================================  =============
    	MD5II eax, ebx, ecx, edx, dword ptr [ebp+ 0*4],  6, 0F4292244H
    	MD5II edx, eax, ebx, ecx, dword ptr [ebp+ 7*4], 10, 0432AFF97H
    	MD5II ecx, edx, eax, ebx, dword ptr [ebp+14*4], 15, 0AB9423A7H
    	MD5II ebx, ecx, edx, eax, dword ptr [ebp+ 5*4], 21, 0FC93A039H
    	MD5II eax, ebx, ecx, edx, dword ptr [ebp+12*4],  6, 0655B59C3H
    	MD5II edx, eax, ebx, ecx, dword ptr [ebp+ 3*4], 10, 08F0CCC92H
    	MD5II ecx, edx, eax, ebx, dword ptr [ebp+10*4], 15, 0FFEFF47DH
    	MD5II ebx, ecx, edx, eax, dword ptr [ebp+ 1*4], 21, 085845DD1H
    	MD5II eax, ebx, ecx, edx, dword ptr [ebp+ 8*4],  6, 06FA87E4FH
    	MD5II edx, eax, ebx, ecx, dword ptr [ebp+15*4], 10, 0FE2CE6E0H
    	MD5II ecx, edx, eax, ebx, dword ptr [ebp+ 6*4], 15, 0A3014314H
    	MD5II ebx, ecx, edx, eax, dword ptr [ebp+13*4], 21, 04E0811A1H
    	MD5II eax, ebx, ecx, edx, dword ptr [ebp+ 4*4],  6, 0F7537E82H
    	MD5II edx, eax, ebx, ecx, dword ptr [ebp+11*4], 10, 0BD3AF235H
    	MD5II ecx, edx, eax, ebx, dword ptr [ebp+ 2*4], 15, 02AD7D2BBH
    	MD5II ebx, ecx, edx, eax, dword ptr [ebp+ 9*4], 21, 0EB86D391H
    	;=================================================  =============
    	add [esi+0*4],eax	; update digest
    	add [esi+1*4],ebx
    	add [esi+2*4],ecx
    	add [esi+3*4],edx
    	popad
    	retn
    MD5Transform endp
    
    MD5BURN macro
    	xor eax,eax
    	mov MD5Index,eax
    	mov edi,Offset MD5HashBuf
    	mov ecx,(sizeof MD5HashBuf)/4
    	rep stosd
    endm
    
    align dword
    MD5Init proc uses edi
    	xor eax, eax
    	mov MD5Len,eax
    	MD5BURN
    	mov eax,offset MD5Digest
    	mov dword ptr [eax+0*4],067452301h
    	mov dword ptr [eax+1*4],0EFCDAB89h
    	mov dword ptr [eax+2*4],098BADCFEh
    	mov dword ptr [eax+3*4],010325476h
    	ret
    MD5Init endp
    
    align dword
    MD5Update proc uses esi edi ebx lpBuffer:dword, dwBufLen:dword
    	mov ebx,dwBufLen
    	mov esi,lpBuffer
    	add MD5Len,ebx
    	.while ebx
    		mov eax,MD5Index
    		mov ecx,64
    		sub ecx,eax
    		lea edi,[MD5HashBuf+eax]	
    		.if ecx <= ebx
    			sub ebx,ecx
    			rep movsb
    			call MD5Transform
    			MD5BURN
    		.else
    			mov ecx,ebx
    			rep movsb
    			add MD5Index,ebx
    			.break
    		.endif
    	.endw
    	ret
    MD5Update endp
    
    align dword
    MD5Final proc uses esi edi
    	mov ecx, MD5Index
    	mov byte ptr [MD5HashBuf+ecx],80h
    	.if ecx >= 56
    		call MD5Transform
    		MD5BURN
    	.endif
    	mov eax,MD5Len
    	xor edx,edx
    	shld edx,eax,3
    	shl eax,3
    	mov dword ptr [MD5HashBuf+56],eax
    	mov dword ptr [MD5HashBuf+60],edx
    	call MD5Transform
    	mov eax,offset MD5Digest	
    	ret
    MD5Final endp
    
    end
    
     
  2. ronald

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

    Joined:
    27 Mar 2008
    Messages:
    252
    Likes Received:
    42
    Reputations:
    6
    Чур меня, чур! Нет конешно!
     
  3. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    SHP!ON Точка входа не определена, помимо реализации еще нужно вызывать
    функции для подсчета md5, легче поискать другую реализацию
     
  4. airyashov

    airyashov New Member

    Joined:
    15 Jan 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    SHP!ON это просто библиотечка помоему, скомпилировать в obj и вызывать из C++ например
     
  5. -m0rgan-

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

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    Ре, адепты!
    Посоветуйте хороший редактор дль асма,с хорошей подсветкой синтаксиса!
    3арание спс!
     
  6. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    RadASM :)
     
    1 person likes this.
  7. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    >>Посоветуйте хороший редактор дль асма,с хорошей подсветкой синтаксиса!

    где-то я уже тут отписывалась. в этой теме вроде или где-то в этой ветке ))))) студия для этих дел есть. Negatory Assembly Studio. подсветка, хорошая!
     
    1 person likes this.
  8. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    А вообще вот тут вот описаны более менее нормальные ASM IDE
    www.wasm.ru/article.php?article=ide
     
    2 people like this.
  9. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    ага.

    http://www.wasm.ru/article.php?article=ide
     
    1 person likes this.
  10. Ergoproxy

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

    Joined:
    18 Jan 2008
    Messages:
    248
    Likes Received:
    155
    Reputations:
    45
    Notepad++ and Wasm32 и больше нех ненадо=)
     
  11. vikseriq

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

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    Ergoproxy , истинно! отдаю свой голос за Notepad++ и winASM от мелкомягких. мой выбор.
     
  12. mixkorshun

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

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    Source Insight и ASM Editor
    1ый тяжеловесный редактор не только для асма(платный)
    2ой бесплатный с подсветкой синтаксиса и добавлением своих keyword'ов. Главное - простота в освоении
     
  13. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Notepad++ и winASM
     
  14. Girsoft

    Girsoft New Member

    Joined:
    22 Jan 2007
    Messages:
    21
    Likes Received:
    1
    Reputations:
    0
    набрал код на масме:
    (директивы масма стараюсь сильно не использовать, приближенно к чистому ассемблеру)
    Он всего-то и делает, что создаёт окно, ну и пара обработок сообщений. Но вот проблема - функция сознания окна CreateWindowExA постоянно в ЕАХ возвращает 0, то бишь происходит ошибка - смотрел в отладчике. Не хочет создавать окно... В чём моя ошибка? Почему код не работатет? Всем Спасибо за ответы! ++++

    Огромная просьба не давать ссылки на рабочие примеры. У меня они есть, но почему-то они работают, а мой код - нет... даже незнаю почему - в отладчике почти 1 в 1 ....
     
    #474 Girsoft, 4 Feb 2009
    Last edited: 4 Feb 2009
    1 person likes this.
  15. Rag

    Rag New Member

    Joined:
    29 Jan 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Подскажите пожалуйста алгоритм, который
    сможет убрать все нули в буфере
    base64 не предлагать, запостил сюда
    потому как делать хочу на асме...
     
  16. none222

    none222 Guest

    Reputations:
    0
    .................../>  フ.....................
         |  _  _|
         /`ミ _x 彡
         /      |
        /  ヽ   ノ
     / ̄|   | | |
     | ( ̄ヽ__ヽ_)_)
     \二つ
     
    #476 none222, 8 Feb 2009
    Last edited by a moderator: 6 Nov 2020
  17. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    2Girsoft в wndproc

    Code:
    push dword ptr [ebp+14h]
    push dword ptr [ebp+10h]
    push dword ptr [ebp+0Ch]
    push dword ptr [ebp+08h]
    call DefWindowProcA@16
    jmp finish
    
    вот так надо. mov eax,0 уберите после DefWindowProcA.
     
  18. Rag

    Rag New Member

    Joined:
    29 Jan 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    o3,14um, byte+1 \-1
    тогда FF->00 а шанс что FF встретится довольно велик

    http://wasm.ru/forum/viewtopic.php?id=31088
     
  19. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    2Rag
    Хм, не понимаю, зачем что-то брать из пинча, когда есть реализации алго на асме.

    http://wasm.ru/srclist.php

    качайте cryptohash - там все есть. когда-то сама юзала реализации из этого сборника.
     
  20. Rag

    Rag New Member

    Joined:
    29 Jan 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    эмм какбе там тож на асме, и 100% работает
    Проблема не в том что вообще не работает а в том что не до конца...
    Попробовал алго от ct757 и тож самое... Наверн я чего то не понимаю =\