|
ตัวอย่าง
Code ในภาษา Assembly
|
015F:0120 |
CMP |
EAX
, ECX |
|
015F:0125 |
JNZ |
012B |
|
015F:0128 |
CALL |
01B5 |
|
015F:012B |
MOV |
AH
, 18 |
จากตัวอย่าง
Code (Assembly) ข้างบน ซึ่งเป็นบางส่วนที่ผู้เขียนนำมายก ตัวอย่างเพื่ออธิบายให้เป็นภาพวิธีการ
Crack
เบื้องต้นจาก
Code
ข้างบนสามารถอธิบายได้ดังนี้
บรรทัดแรก -
015F:0120 CMP EAX , ECX
ทำการเปรียบเทียบข้อมูลในรีจิสเตอร์
EAX กับ ECX
ว่ามีค่าเท่ากันหรือเหมือนกันหรือไม่
โดยที่รีจิสเตอร์
EAX เก็บข้อมูล
Registration Code
ที่ถูกต้องไว้
และ ECX เก็บข้อมูลตัวเลข
Registration Code
ที่เราป้อนเข้าไป
บรรทัดที่สอง
- 015F:0125 JNZ 012B
เป็นคำสั่งที่
ให้มีการกระโดดไปทำงานในตำแหน่งที่ต้องการโดยมีเงื่อนไข คือ
ถ้าจากการเปรียบเทียบในบรรทัดแรก
(คำสั่ง CMP)
มีค่าไม่เท่ากันหรือไม่เหมือนกัน
จะสั่งให้ไปทำงานต่อ
ณ ตำแหน่ง 012B
แต่ถ้าค่าเปรียบเทียบเท่ากันหรือเหมือนกัน
จะไม่มีการกระโดด
(Jump) เกิดขึ้น
บรรทัดที่สาม
- 015F:0128 CALL 01B5
เป็นคำสั่งเรียกการทำงานที่ตำแหน่ง
01ฺB5
ในที่นี้คือแสดงข้อความว่า"คุณผ่านการลงทะะเบียนเรียบร้อยแล้ว"
และเริ่มใช้โปรแกรมได้อย่างสมบูรณ์
บรรทัดสุดท้าย
- 015F:012B MOV AH , 18
Registration Code
ไม่ถูกต้อง
ออกจากการใช้งานจากลักษณะการทำงานของ
Code
ตัวอย่างดังที่กล่าวมาแล้วการที่จะ
Crack โปรแกรมนี้เป็นเรื่องที่ไม่ยากเลย
ถ้าคุณสามารถเปลี่ยน
Code
บางบรรทัดเพื่อเปลี่ยนทิศทางขบวนการทำงานของโปรแกรม
คือ
ทำการแก้ไขเปลี่ยนแปลงในบรรทัดที่
2
ให้เป็นดังนี้
บรรทัดที่สอง
- 015F:0125 JZ 012B
โดยการเปลี่ยน
Code ดังกล่าว
จะอธิบายได้ดังนี้
คือ
เป็นคำสั่งที่ให้มีการกระโดดไปทำงานในตำแหน่งที่ต้องการ
โดยมีเงื่อนไขว่า
ถ้าจากการเปรียบเทียบในบรรทัดแรก
(คำสั่ง CMP)
มีค่าเท่ากันหรือเหมือนกัน
จะสั่งให้กระโดด
(Jump) ไปทำงานต่อ
ณ ตำแหน่ง 012B (Registration
Code
ไม่ถูกต้องออกจากการใช้งาน)
แต่ถ้าค่าที่เปรียบเทียบไม่มเท่ากันหรือไม่เหทือนกัน
จะไม่มีการกระโดด(Jump)
เกิดขึ้น (ทำงานต่อที่บรรทัดที่
3
คือแสดงข้อความว่าคุณผ่านการลงทะเบียนเรียบร้อย
และเริ่มใช้โปรแกรมได้อย่างสมบูรณ์)
ซึ่งจากการเปลี่ยนแปลงสิ่งนี้
จะทำให้สามารถลงทะเบียน
และใช้โปรแกรมได้
ถึงแม้ Registration Code
ที่คุณป้อนจะผิดก็ตาม
แต่ในทางกลับกัน
ถ้าป้อนRegistration Code
ถูกก็จะไม่สามารถใช้โปรแกรมได้
ซึ่งไม่น่าจะเกิดขึ้นเพราะไม่มีทางป้อน
Registration Code
ถูกแน่นอนถ้าไม่จ่ายเงินซื้อจริงกับผู้พัฒนาโปรแกรม
จริงมั้ย
!!
|
Code - เดิม |
Code -
หลังจากการแก้ไขแล้ว |
015F:0120
015F;0125
015F:0128
015F:012B |
CMP EAX,CX
JNZ 012B
CALL 01B5
MOV AH,18 |
015F:0120
015F;0125
015F:0128
015F:012B |
CMP EAX,CX
JZ 012B
CALL 01B5
MOV AH,18 |
|