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.. tuy nhiên do tương thích ngược nên các lệnh viết trên đờ
Trang 1TURTORIAL 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
Trang 2Ví 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
Trang 3nhé!) 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
Trang 4constant
-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
Trang 5
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
Trang 6material 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