TURTORIAL BY hacnho FROM HVA-www.hvaonline.net CONTACT ME : hacnho@hotmail.com How To Become A Cracker Learn 2 crack, very easy Lời Phi Lộ: _Chào các bạn, hôm nay chúng ta sẽ nói về ngôn ngữ Assembly. Đây là một ngôn ngữ không thể thiếu của cracker. Có thể bạn rất giỏi về Delphi, C++, VB v/v nhưng mà không biết về Asm thì kể như bạn không thể nào trở thành một cracker được. Chú ý : Trong bài viết này, phần lý thuyết tôi có tham khảo bài viết của một fan vicki, thitmeongonhon, nicehacker. hacnho PHẦN V: Cơ bản ASM. _Các hệ đếm: Thông thường ta có các hệ đếm cơ bản như sau: a. Hệ Decimal (10): dùng các ký tự số 0,1 9 Ví dụ : 2754 = 4+5.10+7.10.10+2.10.10.10 b. Hệ Hexa (16): dùng các ký tự số và chữ 0,1,…9, A,B F Ví dụ : 3C5F = 15+5.16+16.16.16+3.16.16.16 c. Hệ Binary(2): dùng các ký số 0,1 Ví dụ : 1001 = 1+0.2+0.2.2+1.2.2.2 _Điều cơ bản khi học ASM là phải thông thạo việc chuyển qua lại giữa ba hệ cơ số : 2, 10, 16. Cái này bác nhớ nhá lập trình với hợp ngữ dựa rất nhiều vào phần cứng máy tính. ví dụ các lệnh, thanh ghi của 80386, 80486 không thể chạy trên 8088 (coi như đời đầu của cpu). tuy nhiên do tương thích ngược nên các lệnh viết trên đời trước vẫn chạy ngon với các máy đời sau. các lệnh 286, 386 mở rộng thêm nhiều lệnh mới, tuy nhiên chỉ cần các lệnh cơ bản của 8088 cũng đã đủ để viết phần lớn chương trình. thêm nữa là các trình dịch asm không phân biệt chữ hoa và chữ thường. _CẤU TRÚC THANH GHI TRONG 8088 8088 có cả thảy 14 thanh ghi, mỗi thanh ghi có độ dài 16bit (2 byte). người ta chia thành mấy nhóm sau : - thanh ghi công dụng chung : AX, BX, CX, DX - thanh ghi đoạn : DS, ES, SS, CS - thanh ghi địa chỉ : IP, BP, SP - các thanh ghi khác : SI, DI - thanh ghi cờ : Flags -Trong các thanh ghi, một số có thể tuỳ ý thay đổi (thanh ghi công dụng chung chẳng hạn), một số khác thì phải cẩn thận hoặc không thể bị thay đổi dễ dàng (điển hình là CS và IP). Công dụng cụ thể thì tui sẽ nói dần nhé, okie _CẤU TRÚC THANH GHI CÔNG DỤNG CHUNG -Mỗi thanh ghi gồm 2 thanh ghi 8 bit con gọi là XL, XH ví dụ AL, AH, BH tạo thành. trong asm có thể tự do sử dụng AL, AH hay AX. _VỀ NGẮT TRONG ASM -Đây là phần có tính sống còn đối với asm. Nói chung bất kì chương trình asm nào cũng phải gọi một ngắt nào đó. Có hai loại ngắt là ngắt cứng và ngắt mềm. Tuy nhiên, hiện tại có thể coi ngắt giống như một thủ tục đã tồn tại sẵn trên máy, lấy một lượng dữ liệu nào đó (chủ yếu là lấy qua thanh ghi), xử lý rồi trả lại cho chương trình gọi nó kết quả (cũng chủ yếu qua thanh ghi - từ nay gọi là register nhé!). Ngay cả những người lập trình lâu năm cũng không muốn (và nói chung là không thể ) biết dược ngắt đó hoạt động thế nào. Người ta chỉ quan tâm đến kết quả mà thôi. Mỗi ngắt gắn liền với một con số 8 bit (1byte). Để gọi ngắt nào đó người ta sử dụng lệnh. _INT số_hiệu_ngắt -Nếu như ngắt có nhiều trình con thì người ta đặt số hiệu các trình đó và AH và AL nếu là một trình con nữa của trình con cần gọi -Ví dụ: MOV AH, 2h MOV DL,30h INT 21h -Lưu ý là asm hoạt động chủ yếu trong hệ cơ số 16 và h (hexa) thông báo điều đó.Trong dos tồn tại 256 ngắt (có số hiệu từ 0-255). có thể coi mỗi ngắt nhu một thư viện, mỗi thư viện chứa trong nó hàng trăm hàm, thủ tục _NHỮNG LỆNH CƠ BẢN NHẤT -MOV R,X: Chuyển dữ liệu. thật ra nó có khả năng chuyển với nhiều kiểu như register->register, memory->register, constant->register nhưng hiện tại chỉ cần nhớ đến 2 trường hợp thông dụng register->register và constant->register. lệnh này được sử dụng nhiều nhất với các thanh ghi công dụng chung. từ nay về sau các lệnh chỉ áp dụng với kiểu thanh ghi này. chỗ nào áp dụng với kiểu khác sẽ được nói rõ. -Ví dụ R->R ; MOV AX, BX C->R ; MOV AX,03h -Thanh ghi đững trước luôn là thanh ghi nhận kết quả. ví dụ trên tương đồng với AX=BX AX=3 -ADD R,X :Cộng vào thanh ghi R giá trị chỉ ra bởi X. X có thể là register hay constant. -Ví dụ: ADD AX, 12H ADD AX, BX Tương đương với AX=AX+12H AX=AX+BX -Một ngắt cơ bản nhất là ngắt 21h, nó là ngắt đáp ứng nhiều dịch vụ khác nhau do MS-DOS cung cấp. Ví dụ như ; - hàm 2h dùng để in ra màn hình một kí tự. mã ascii của kí tự đặt trong DL. - hàm 1h dùng đọc một kí tự, mã ascii của kí tự vừa đọc được để trong AL. tất cả chú giải trên một dòng dược đặt sau dấu chấm phẩy ; _VÍ DỤ NHẬP VÀO MỘT KÍ TỰ VÀ IN RA KÍ TỰ KẾ TIẾP NÓ CODE_SEG SEGMENT ASSUME CS : CODE_SEG ORG 100h MOV AH,01 ; hay mov ah,01h -> hàm nhập một kí tự INT 21h ; gọi ngắt chứa hàm nhập đó MOV DL,AL ; dl = mã ascii của kí tự vừa nhập ADD DL,1 ; tăng dl lên 1 -> kí tự tiếp theo MOV AH,02h ; hàm in ra một kí tự INT 21h ; gọi ngắt để hoàn thành việc in ra _Dưới đây là một tut ASM bằng tiếng Anh do nicehacker sưu tầm. Các bạn nên đọc và tự dịch. Tôi đang bận nên không có thời gian ngồi dịch được. Nếu các bạn quen biết với nhóm Translator của HVA thì nhờ họ dịch dùm. :d Assembly Language Tutor: Table of Contents 1 Introduction 2 Basic Concepts 3 Assembler programming 4 Assembler language instructions 5 Interruptions and file managing 6 Macros and procedures 7 Program examples 1 Introduction Table of contents 1.1 What's new in the Assembler material 1.2 Presentation 1.3 Why learn Assembler language 1.4 We need your opinion 1.1 What's new in the Assembler material After of one year that we've released the first Assembler material on-line. We've received a lot of e-mail where each people talk about different aspects about this material. We've tried to put these comments and suggestions in this update assembler material. We hope that this new Assembler material release reach to all people that they interest to learn the most important language for IBM PC. In this new assembler release includes: A complete chapter about how to use debug program More example of the assembler material Each section of this assembler material includes a link file to Free On-line of Computing by Dennis Howe Finally, a search engine to look for any topic or item related with this updated material. 1.2 Presentation The document you are looking at, has the primordial function of introducing you to assembly language programming, and it has been thought for those people who have never worked with this language. The tutorial is completely focused towards the computers that function with processors of the x86 family of Intel, and considering that the language bases its functioning on the internal resources of the processor, the described examples are not compatible with any other architecture. The information was structured in units in order to allow easy access to each of the topics and facilitate the following of the tutorial. In the introductory section some of the elemental concepts regarding . Hệ Decimal ( 10 ): dùng các ký tự số 0 ,1 9 Ví dụ : 2754 = 4+5 . 10 +7 . 10 . 10 +2 . 10 . 10 . 10 b. Hệ Hexa (16 ): dùng các ký tự số và chữ 0 ,1, …9, A,B F Ví dụ : 3C5F = 15 +5 .16 +16 .16 .16 +3 .16 .16 .16 c. Hệ Binary(2):. Hệ Binary(2): dùng các ký số 0 ,1 Ví dụ : 10 01 = 1+ 0. 2 +0. 2.2 +1. 2.2.2 _Điều cơ bản khi học ASM là phải thông thạo việc chuyển qua lại giữa ba hệ cơ số : 2, 10 , 16 . Cái này bác nhớ nhá lập trình. CODE_SEG ORG 10 0h MOV AH, 01 ; hay mov ah ,01 h -> hàm nhập một kí tự INT 21h ; gọi ngắt chứa hàm nhập đó MOV DL,AL ; dl = mã ascii của kí tự vừa nhập ADD DL ,1 ; tăng dl lên 1 -> kí tự