Phân biệt các cờ trạng thái và lệnh CMP - Môn Tin học đại cương - Học Viện Kỹ Thuật Mật Mã

Ý nghĩa: Thực hiện so sánh toán hạng Đích và toán hạng Nguồn bằng cách lấy Đích trừ đi Nguồn. Tương tự như SUB nhưng kết quả không được lưu lại, tác dụng chủ yếu của CMP là tác động lên các cờ. Tóm lại là dùng để tạo cờ cho các lệnh nhảy có điều kiện. Tài liệu giúp bạn tham khảo và đạt kết quả tốt. Mời bạn đọc đón xem!

lOMoARcPSD|4 7892172
lOMoARcPSD|4 7892172
* Các cờ trạng thái :
OF : overflow flag ( cờ tràn)
SF :
sign
fl
ag ( cờ dấu)
ZF : zero
fl
ag ( cờ không) PF :
parity
fl
ag ( cờ chẵn lẻ)CF :
carry
fl
ag ( cờ dấu)
Lệnh CMP.
- Đây là câu lệnh so sánh thường gặp trong phân tich chương trình, các điều kiện nhảy thường được
cung cấp bởi lệnh CMP này.
- Dạng : CMP Đích, Nguồn
Trong đó đích nguồn không thể cùng các ô nhớ.
- Ý nghĩa: Thực hiện so sánh toán hạng Đích và toán hạng Nguồn bằng cách lấy Đích trừ đi Nguồn. Tương
tự như SUB nhưng kết quả không được u lại, tác dụng chủ yếu của CMP tác động lên các cờ. Tóm lại
dùng để tạo cờ cho các lệnh nhảy điều kiện.
dụ:
Đích = Nguồn : CF = 0 ; ZF = 1 ; SF = 0
Đích > Nguồn : CF = 0 ; ZF = 0 ; SF = 0
Đích < Nguồn : CF = 1 ; ZF = 0 ; SF = 1
Lệnh TEST.
- Tương tự như CMP, khác chỗ lệnh này cho phép AND, lệnh TEST sẽ tác động lên các cờ SF, ZF, PF.
- Dạng: TEST Đích, Nguồn
Trong đó đích nguồn phải cùng độ dài không được phép đồng thời 2 ô nhớ.
Các lệnh nhảy.
JMP
Đây lệnh nhảy trực tiếp hay còn gọi nhảy không điều kiện ( tức lệnh luôn thực hiện không cần
điều kiện nào).
JE / JZ
JE : nhảy nếu bằng nhau.
JZ : nhảy nếu bằng 0.
Điều kiện nhảy: ZF = 1.
lOMoARcPSD|4 7892172
JNE / JNZ
Ngược lại so với JE JZ, nhảy nếu không bằng nhau nhảy nếu không bằng 0.
Điều kiện: ZF = 0.
JS / JNS
Nhảy nếu kết quả âm ( dấu) sau khi thực hiện tinh toán.
Điều kiện: SF = 1.
JNS ngược lại so với JS ( kết quả không dấu): SF = 0.
JP / JPE
Điều kiện nhảy: PF = 1.
JNP / JNPE
Ngược lại so với JP / JPE.
Điều kiện: PF = 0.
JO / JNO
Nhảy nếu xảy ra tràn sau khi thực hiện phép toán với các số dấu.
Điều kiện : OF = 1
JNO ngược lại so với JO : OF = 0.
JB / JNB
Điều kiện : CF = 1.
JNB ngược lại: CF = 0.
JBE
Nhảy nếu thấp hơn hoặc bằng, lệnh này thực hiện nếu CF = 1 hoặc ZF = 1.
JL
Lệnh này thực hiện khi cờ SF OF khác nhau.
h
re
ô
m
m
ote
na
d
y
eb
c
b
h
u
ú
g
n
l
g
inu
ta
x kh
sẽ
á h
w
ay
riteup một bài
chall ch3.bit
bước 1 : mở ubuntu sau đó cóp thư mục ch3.bin linux_sever64 vào máy ảo còn
linux_server32 bị sao đó chúng ta sẽ tim hiểu sau
KHI ĐÃ COPY VÀO UBUNTU TA MỞ COMAND LINE LÊN CẤP QUYỀN TRUY CẬP CHO FILE
lOMoARcPSD|4 7892172
CH3.BIN LINUX_SERVER64 NHƯ SAU
B1. MỞ CMD NHẬP CÂU LỆNH ./ CH3.BIN để cấp quyền cho truy cập
Á ĐÙ GIỜ ĐÒI PASSWORD PHẢI LÀM SAO ĐÂY KSAO HẾT A KIỆT DẠY RỒI LÀM THÔI
DÙNG REMOTE DEBBUG THẦY KIỆT DẬY NHƯNG K ĐC ĐỂ MÁY BIẾT :))
B2 : TRUY CẬP QUYỀN CHO LINUX_SERVER64 NHẬP ./LINUX_SERVER64
MỌI THỨ ĐỀU VẺ KHÁ OK RỒI GIỜ TÌM ĐỊA CH IP CHO MÁY ẢO PING VÀO MÁY CHÍNH
RỒI DÙNG IDA DEBUGG
LẤY IP ĐC KẾT QUẢ 192.168.21.129
BƯỚC 2 : TRUY CẬP IDA SAU ĐÓ MỞ CH3.BIN SAU ĐÓ CHỌN DEBUGG ĐỂ CẤP ĐỊA CHỈ IP MÁY
CHO FILE
NHẬP IP VÀO MỤC HOST NAME SAU ĐÓ CHẠY SAU ĐÓ ẤN CHẠY THỬ
NHƯNG LÚC NÀY MÁY ẢO PHÁT HIỆN RA MK ĐÃ DEBBUG NÊN SẼ XÓA LỆNH DEBUUD CỦA
MK THOÁT RA KHỎI ĐÓ
TRONG CHUWOWOGN TRÌNH TÌM ĐOẠN PASS DÒNG DEBUGGER DELETTER LẦN THEO DẤU
CỦA THẤY NÓ NHẢY ĐOẠN NÀY
OÁNH NGAY CHO QUẢ BREAKPOINT VÀO ĐỂ TÌM CỜ RỒI SỬA ĐỂ NHẢY SANG Ô ĐÚNG THUI
PHÁT HIỆN RA HÀM ĐẦU BỊ CHẠY VÀO Ô PASS SAI SAU ĐÓ CHÚNG TA CHỌN SỬA CỜ SF ( CỜ
DẤU ) ĐỂ CHƯƠNG TRÌNH CHẠY SANG Ô KỀ
SAU ĐÓ TIẾP TỤC CHÂY THÌ CHƯƠNG TRÌNH TRÊN MÁY ÁO IN ĐC
ĐÂY HÀM FGET CHO PHÉP MÌNH NHẬP MẬT KHẨU T MÁY ẢO QUA
RẤT HAY
LAN MAN CHÚT NOTE CÁI THANH GHI AL CHO NHỚ :))
lOMoARcPSD|4 7892172
sau đó c tiếp tục thay đổi các đường dẫ và kiểm tra giá trị thì ta tim đc easy sau đó cứ thay cờ
để đổi hương cuối cùng chúng ta ra được kết quả như sau ( đổi cờ để lệnh chạy theo hướng
good pass) vậy ta tim đc key trong bài này
vậy xong
| 1/4

Preview text:

lOMoARcPSD|47892172 lOMoARcPSD|47892172 * Các cờ trạng thái :
OF : overflow flag ( cờ tràn)SF : sign flag ( cờ dấu)
ZF : zero flag ( cờ không) PF :
parity flag ( cờ chẵn lẻ)CF : carry flag ( cờ dấu) Lệnh CMP.
- Đây là câu lệnh so sánh thường gặp trong phân tich chương trình, các điều kiện nhảy thường được
cung cấp bởi lệnh CMP này. - Dạng : CMP Đích, Nguồn
Trong đó đích và nguồn không thể cùng là các ô nhớ.
- Ý nghĩa: Thực hiện so sánh toán hạng Đích và toán hạng Nguồn bằng cách lấy Đích trừ đi Nguồn. Tương
tự như SUB nhưng kết quả không được lưu lại, tác dụng chủ yếu của CMP là tác động lên các cờ. Tóm lại
là dùng để tạo cờ cho các lệnh nhảy có điều kiện. Ví dụ:
Đích = Nguồn : CF = 0 ; ZF = 1 ; SF = 0
Đích > Nguồn : CF = 0 ; ZF = 0 ; SF = 0
Đích < Nguồn : CF = 1 ; ZF = 0 ; SF = 1 Lệnh TEST.
- Tương tự như CMP, khác ở chỗ lệnh này cho phép AND, lệnh TEST sẽ tác động lên các cờ SF, ZF, PF. - Dạng: TEST Đích, Nguồn
Trong đó đích và nguồn phải cùng độ dài và không được phép đồng thời là 2 ô nhớ. Các lệnh nhảy. JMP
Đây là lệnh nhảy trực tiếp hay còn gọi là nhảy không điều kiện ( tức là lệnh luôn thực hiện mà không cần điều kiện nào). JE / JZ JE : nhảy nếu bằng nhau. JZ : nhảy nếu bằng 0. Điều kiện nhảy: ZF = 1. lOMoARcPSD|47892172 JNE / JNZ
Ngược lại so với JE và JZ, nhảy nếu không bằng nhau và nhảy nếu không bằng 0. Điều kiện: ZF = 0. JS / JNS
Nhảy nếu kết quả âm ( có dấu) sau khi thực hiện tinh toán. Điều kiện: SF = 1.
JNS ngược lại so với JS ( kết quả không có dấu): SF = 0. JP / JPE Điều kiện nhảy: PF = 1. JNP / JNPE
Ngược lại so với JP / JPE. Điều kiện: PF = 0. JO / JNO
Nhảy nếu xảy ra tràn sau khi thực hiện phép toán với các số có dấu. Điều kiện : OF = 1
JNO ngược lại so với JO : OF = 0. JB / JNB Điều kiện : CF = 1. JNB ngược lại: CF = 0. JBE
Nhảy nếu thấp hơn hoặc bằng, lệnh này thực hiện nếu CF = 1 hoặc ZF = 1. JL
Lệnh này thực hiện khi cờ SF và OF khác nhau.
hreômmotenadyebcbhuúgnlginutaxkhsẽá hwayriteup một bài chal ch3.bit
bước 1 : mở ubuntu sau đó cóp thư mục ch3.bin và linux_sever64 vào máy ảo còn
linux_server32 bị sao đó chúng ta sẽ tim hiểu sau
KHI ĐÃ COPY VÀO UBUNTU TA MỞ COMAND LINE LÊN VÀ CẤP QUYỀN TRUY CẬP CHO FILE lOMoARcPSD|47892172
CH3.BIN VÀ LINUX_SERVER64 NHƯ SAU
B1. MỞ CMD NHẬP CÂU LỆNH ./ CH3.BIN để cấp quyền cho truy cập
Á ĐÙ GIỜ NÓ ĐÒI PASSWORD PHẢI LÀM SAO ĐÂY KSAO HẾT A KIỆT DẠY RỒI LÀM THÔI
DÙNG REMOTE DEBBUG THẦY KIỆT DẬY NHƯNG K ĐC ĐỂ MÁY BIẾT :))
B2 : TRUY CẬP QUYỀN CHO LINUX_SERVER64 NHẬP ./LINUX_SERVER64
MỌI THỨ ĐỀU CÓ VẺ KHÁ OK RỒI GIỜ TÌM ĐỊA CHỈ IP CHO MÁY ẢO VÀ PING VÀO MÁY CHÍNH RỒI DÙNG IDA DEBUGG
LẤY IP VÀ ĐC KẾT QUẢ LÀ 192.168.21.129
BƯỚC 2 : TRUY CẬP IDA SAU ĐÓ MỞ CH3.BIN SAU ĐÓ CHỌN DEBUGG ĐỂ CẤP ĐỊA CHỈ IP MÁY CHO FILE
NHẬP IP VÀO MỤC HOST NAME SAU ĐÓ CHẠY SAU ĐÓ ẤN CHẠY THỬ
NHƯNG LÚC NÀY MÁY ẢO PHÁT HIỆN RA MK ĐÃ DEBBUG NÊN NÓ SẼ XÓA LỆNH DEBUUD CỦA MK VÀ THOÁT RA KHỎI ĐÓ
TRONG CHUWOWOGN TRÌNH TÌM ĐOẠN PASS CÓ DÒNG DEBUGGER DELETTER LẦN THEO DẤU
CỦA NÓ THẤY NÓ NHẢY Ở ĐOẠN NÀY
OÁNH NGAY CHO QUẢ BREAKPOINT VÀO ĐỂ TÌM CỜ RỒI SỬA ĐỂ NHẢY SANG Ô ĐÚNG THUI
PHÁT HIỆN RA HÀM ĐẦU BỊ CHẠY VÀO Ô CÓ PASS SAI SAU ĐÓ CHÚNG TA CHỌN SỬA CỜ SF ( CỜ
DẤU ) ĐỂ CHƯƠNG TRÌNH CHẠY SANG Ô KỀ
SAU ĐÓ TIẾP TỤC CHÂY THÌ CHƯƠNG TRÌNH TRÊN MÁY ÁO IN ĐC
Ở ĐÂY HÀM FGET LÀ CHO PHÉP MÌNH NHẬP MẬT KHẨU TỪ MÁY ẢO QUA RẤT HAY
LAN MAN CHÚT NOTE CÁI THANH GHI AL CHO NHỚ :)) lOMoARcPSD|47892172
sau đó cứ tiếp tục thay đổi các đường dẫ và kiểm tra giá trị thì ta tim đc easy sau đó cứ thay cờ
để nó đổi hương cuối cùng chúng ta ra được kết quả như sau ( đổi cờ để lệnh chạy theo hướng
good pass) vậy là ta tim đc key trong bài này vậy là xong
Document Outline

  • •Lệnh CMP.
  • •Lệnh TEST.
  • •Các lệnh nhảy.
  • •JE / JZ
  • •JNE / JNZ
  • •JS / JNS
  • •JP / JPE
  • •JO / JNO
  • •JB / JNB
  • •JBE
  • •JL