khanhhoangbkdn
VIP Members
- 
							
							07/10/2016
						
- 
							
							34
						
- 
							
							65 bài viết
						
								Tổng hợp tài liệu học assembly trên NASM
							
						
						
							Với những người bước đầu mới tìm hiểu đến Khai thác lỗ hổng phần mềm thì định hướng đầu tiên chắc chắn là phải biết và lập trình Assembly .
Mới bắt đầu mình nghĩ là các bạn nên lập trình assembly với NASM trên i386 vậy mình chia sẻ 1 số tài liệu mình đã xem qua và bạn nào có tài liệu về lập trình assembly trên NASM chia sẻ luôn để mọi người cùng học hỏi
- Ví dụ cấu trúc chương trình của 1 bài assembly convert hệ Dec qua Bin và Hex.
	
		
Các bạn có thể trao đổi source bài tập trong box này nhé ,có gì cứ đưa lên để anh em còn giúp đỡ 
 
			
			Mới bắt đầu mình nghĩ là các bạn nên lập trình assembly với NASM trên i386 vậy mình chia sẻ 1 số tài liệu mình đã xem qua và bạn nào có tài liệu về lập trình assembly trên NASM chia sẻ luôn để mọi người cùng học hỏi
- Để hiểu các lệnh dùng trong Assembly bạn có search trên google hoặc đọc tài liệu của bác này "_[Kienmanowar]_" mình thấy khá đầy đủ (tài liệu về RE nhưng có giới thiệu về các lệnh trong Assembly đọc từ phần 2 đến 6 rảnh thì có thể dọc hết ). 
- Tài liệu về lập trình assembly trên NASM
- Các tools biên dich và file thư viện để biên dịch các hàm
- Ví dụ cấu trúc chương trình của 1 bài assembly convert hệ Dec qua Bin và Hex.
		Mã:
	
	[INDENT]%include "WIN32N.INC"
extern gets
import gets msvcrt.dll
extern printf
import printf msvcrt.dll
extern scanf
import scanf msvcrt.dll
extern puts
import puts msvcrt.dll
segment .data USE32
    t db "0123456789ABCDEF",0
    formatin db "%d",0
    n times 4 dd 0
    msg1 db "Nhap vao so tu nhien N :", 0
    bin db "00000000000000000000000000000000" ,0
    msg2 db "convert bin is :",0
    hex db "00000000",0
    msg3 db "convert hex is :",0
segment .bss USE32
segment .code USE32
   
..start:
    push dword msg1
    call [printf]
    add esp,4
    push n
    push formatin
    call [scanf]
    add esp,8
    mov eax ,dword [n]
    mov ebx ,2
    mov cx ,32
    mov esi, 0
    lap_bin:
        xor edi,edi
        xor edx,edx
        div ebx            ;thuong luu tai eax du luu tai edx
        mov dl,[t+edx]
        mov edi,bin
        add edi,31
        sub edi,esi
        mov [edi],dl
        inc esi
        cmp eax,0
        je lap_hex
    loop lap_bin
    lap_hex:
        mov eax ,dword [n]
        mov ebx ,16
        mov cx ,8
        mov esi,0
        lap_hex2:
            xor edi,edi
            xor edx,edx
            div ebx
            mov dl,[t+edx]
            mov edi ,hex
            add edi,7
            sub edi,esi
            mov [edi],dl
            inc esi
            cmp eax ,0
            je printf_bin
        loop lap_hex2   
    printf_bin:
        push dword msg2
        call [printf]
        add esp,4
        push bin
        call [puts]
        add esp,4
        push dword msg3
        call [printf]
        add esp,4
        push hex
        call [puts]
        add esp,4
        jmp ..start   
[/INDENT] 
 
		 
 
		 
 
		 
 
		 
 
		