การใช้โปรแกรมดีบัก (Debug program)

ปรับปรุง : 2557-12-29 (ปรับคำสั่ง)

มีเรื่องเล่าว่า เครื่องคอมพิวเตอร์ในปี 1946 ทำงานผิดปกติ เมื่อ Grace Hopper ทหารเรือหญิงและนักวิทยาศาสตร์คอมพิวเตอร์ ตรวจสอบโดยละเอียดพบว่ามีผีเสื้อกลางคืน (Bug แมลง) บินไปเกาะบนแผงวงจรของเครื่อง Mark-II เมื่อนำแมลงออกมา ระบบต่าง ๆ ก็ทำงานได้ตามปกติ ปัจจุบันจึงเรียกการแก้ปัญหาที่เกี่ยวกับเครื่องคอมพิวเตอร์ว่าการดีบัก (Debug)
ดีบัก (Debug) คือ โปรแกรมที่พัฒนาเพื่อแก้ไขปัญหาพื้นฐานในระบบปฏิบัติการดอส (DOS = Disk Operation System) เป็นโปรแกรมสำหรับแก้ไขแฟ้มอย่างง่าย เป็นคำสั่งภายนอก (External Command) ของดอส (DOS) ที่นิยมใช้งานในกลุ่มนักพัฒนามาตั้งแต่ยุคระบบปฏิบัติการดอส
? คือการแสดงคำสั่งที่ใช้งานได้ของ debug
C:\>debug
-?
assemble     A [address]
compare      C range address
dump         D [range]
enter        E address [list]
fill         F range list
go           G [=address] [addresses]
hex          H value1 value2
input        I port
load         L [address] [drive] [firstsector] [number]
move         M range address
name         N [pathname] [arglist]
output       O port byte
proceed      P [=address] [number]
quit         Q
register     R [register]
search       S range list
trace        T [=address] [value]
unassemble   U [range]
write        W [address] [drive] [firstsector] [number]
allocate expanded memory        XA [#pages]
deallocate expanded memory      XD [handle]
map expanded memory pages       XM [Lpage] [Ppage] [handle]
display expanded memory status  XS
-

? ดูข้อมูลใน Register
C:\>debug
-t
AX=0000  BX=0000  CX=0000  DX=0011  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AE8  ES=0AE8  SS=0AE8  CS=0AE8  IP=0102   NV UP EI PL NZ NA PO NC
-

EXAMPLE :: ตัวอย่างการใช้ SHL
- SHL คือย้ายบิท เข้าไปทางซ้าย
- DFFD = 1101 1111 1111 1101
- BFFA = 1011 1111 1111 1010
C:\>debug
-a 100
0B24:0100 mov dx,dffd
0B24:0103 shl dx,1
0B24:0105

-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=01B8
DS=0B24  ES=0B24  SS=0B24  CS=0B24  IP=0103   OV UP EI PL NZ NA PE CY
0B24:0103 D1E2          SHL     DX,1

-t =cs:100 2
AX=0000  BX=0000  CX=0000  DX=DFFD  SP=FFEE  BP=0000  SI=0000  DI=01B8
DS=0B24  ES=0B24  SS=0B24  CS=0B24  IP=0103   OV UP EI PL NZ NA PE CY
0B24:0103 D1E2          SHL     DX,1

AX=0000  BX=0000  CX=0000  DX=BFFA  SP=FFEE  BP=0000  SI=0000  DI=01B8
DS=0B24  ES=0B24  SS=0B24  CS=0B24  IP=0105   NV UP EI NG NZ NA PE CY
0B24:0105 D1E2          SHL     DX,1
-


โปรแกรมนี้แสดงการเขียน assembly ใน DOS และการสั่งประมวลผลด้วยคำสั่ง g
การเขียนโปรแกรมนี้ได้ต้องเข้าใจว่า int 20 คืออะไร int 21 ใช้อย่างไร และ 41 คืออักษรอะไร และที่สำคัญต้องเข้าใจว่า debug มีคำสั่งอะไรให้ใช้บ้าง
C:\>debug
-a
106F:0100 mov ah,02
106F:0102 mov dl,41
106F:0104 int 21
106F:0106 int 20
106F:0108
-g
A
Program terminated normally
- n x.com
- rcx
: 8
- w
- q
C:\>x
A
C:\>
    สรุปคำสั่ง debug
    เลขที่ใช้คือ 0000 หมายถึงเลขฐาน 16 จำนวน 4 หลัก สูงสุดคือ ffff a :: Assemble แปลภาษา aassembly ไปแปลเป็นภาษาเครื่อง (enter 2 ครั้งเมื่อจบ)
    C:\assembly>debug
    -n i.com
    -a cs:100
    106F:0100 mov ah,08
    106F:0102 int 21
    106F:0104 mov ah,4c
    106F:0106 int 21
    106F:0108
    -rcx
    CX 0000
    :8
    -w
    Writing 00008 bytes
    -q c :: Compare เปรียบเทียบ
    -c cs:100 102 ds:1a0
    1090:0100 B4 1E 1090:01A0
    1090:0101 08 B4 1090:01A1
    1090:0102 CD 52 1090:01A2
    - d :: Dump แสดงข้อมูล
    -d cs:100 200
    -d cs:100 107 (แสดงเพียง 7 ตัวอักษรจากตำแหน่ง 100 - 107)
    -d cs:100 e :: Enter แก้ไขข้อมูล
    -e cs:4a5 41 42 43 f :: Fill เติมลงในช่องที่กำหนด
    -f cs:100 107 "abc" (ทำให้ทั้งแฟ้มมีแต่ abc)
    -f cs:103 105 "d" (ทำให้ตัวที่ 4 ถึง 6 เป็นอักษร d) g :: Go สั่งประมวลผล
    -g
    -g 102 ประมวลผลไปถึง address ที่ต้องการ h :: Hexarithmatic คำนวณเลขฐาน 16
    -h f 8
    0017 0007 (ผลลัพธ์คือผลบวก และผลต่าง)
    -h 111 110
    0221 0001 (ผลลัพธ์คือผลบวก และผลต่าง) i :: Input อ่านข้อมูลจาก port ที่กำหนด
    -i 2f8 l :: Load เรียกข้อมูลจาก disk ใหม่ ถ้าเคย Load มาแล้วก็หมายถึง Load มาทับของเดิมในหน่วยความจำ
    -n inkey.com
    -l m :: Move ย้ายข้อมูล 6 อักษรไปเริ่มทับตำแหน่งที่ 130 เป็นต้นไป
    คัดลอกจาก 100 ไปถึง 106 รวม 6 byte ไปตำแหน่งที่ 130

    -m cs:100 106 130 n :: Name กำหนดชื่อแฟ้มที่จะ load หรือ write
    -n inkey.com o :: Output ส่งข้อมูลออกทาง port ที่กำหนด
    -o 2f8 p :: Proceed สั่งประมวลผล แต่ต้องมีโปรแกรมที่ทดสอบได้นะครับ
    -p =100
    -p q :: Quit เลิกการทำงาน
    -q r :: Register เรียกดู หรือแก้ไขค่าใน register
    ค่าของ IP จะไม่เลื่อนเหมือนการใช้ t ที่ประมวลผล และทำให้ตำแหน่งของ IP เลื่อนไป แต่คำสั่ง r จะแสดงค่าเดิมทุกครั้ง

    -r
    -r ax (แล้วกรอกค่าที่ต้องการ) s :: Search ค้นหา
    -s cs:100 110 41 t :: Trace ประมวลผล แล้วแสดงผลทีละคำสั่ง ตัวอย่างนี้ทำเพียง 3 บรรทัดคำสั่ง
    ค่าของ IP จะเลื่อนไป IP ถัดไป ไม่เหมือนคำสั่ง r ที่แสดงค่าเหมือนเดิมทุกครั้ง

    -t =cs:100 3
    -t u :: Unassemble แปลจากภาษาเครื่องมาเป็น assembly
    -u
    1091:0100 B408 MOV AH,08
    1091:0102 CD21 INT 21
    1091:0104 B44C MOV AH,4C
    1091:0106 CD21 INT 21
    - w :: Write เขียนข้อมูลจากหน่วยความจำลง disk
    -w
- รับอักษร ด้วยบริการ AH=8 แบบไม่แสดงผล
- แสดงอักษร ด้วยบริการ AH=02
- ตัวอย่างนี้ผู้ทดสอบกด a หนึ่งครั้ง จะแสดงอักษร a มา 3 ครั้ง
    C:\>debug
    -n x.com
    -a
    0AEA:0100 mov ah,08
    0AEA:0102 int 21
    0AEA:0104 mov dl,al
    0AEA:0106 mov ah,02
    0AEA:0108 int 21
    0AEA:010A int 21
    0AEA:010C int 21
    0AEA:010E int 20
    0AEA:0110
    -rcx
    CX 0000
    :10
    -w
    Writing 00010 bytes
    -g
    aaa
    Program terminated normally
    -
    

การ clear password ของ BIOS ถ้าเข้าในฐานะ Admin ไม่ได้
+ http://www.wikihow.com/Break-a-BIOS-Password
+ http://www.go4expert.com/forums/showthread.php?t=114
+ http://rahulhackingarticles.wetpaint.com/page/Clear+BIOS+Password,+All+tricks+!?t=anon
Boot DOS by Windows98 and DOS>debug
for : AWARD BIOS
-o 70 2e
-o 71 17
-q
and reboot
for : AMI/AWARD BIOS -o 70 17 -o 71 17 -q and reboot
for : PHOENIX BIOS -o 70 FF -o 71 17 -q and reboot
for : GENERIC Invalidates CMOS RAM. Should work on all AT motherboards (XT motherboards don't have CMOS) -o 70 2E -o 71 FF -q and reboot

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223