สอน Crack โปรแกรมที่เขียนด้วย ภาษา C++ (x64dbg)
บทความจะยกตัวอย่างการ Crack โปรแกรมที่เขียนด้วยภาษา C++ โดยใช้โปรแกรม x64dbg ในการ Reverse Engineering หากเราจะ Crack โปรแกรมที่เขียนด้วยภาษา C++ เราต้องรู้ Assembly commands พื้นฐาน กันก่อน
คำสั่ง Assembly ที่ต้องรู้ในบทความนี้คือ คำสั่งตระกูล jump ทั้งหมด เช่น je, jz, jmp สามารถอ่านเพิ่มเติมได้ที่ Assembly commands พื้นฐาน
เขียนโปรแกรมตัวอย่างกันก่อน
เราจะมาเขียนโปรแกรมตัวอย่างในการ Crack จะเขียนด้วยภาษา C++ ด้วย Visual Studio Community 2022 ก็ให้ทุกคนสร้างโปรเจคขึ้นมาแล้วเอาโค้ดตัวอย่างไป Build ได้เลย
Main.cpp
#include <iostream>
int main(){ std::string password = "MyPassword"; std::string input;
std::cout << "Input Password: "; std::cin >> input;
if (password == input) { std::cout << "Good Job" << std::endl; } else { std::cout << "Password Incorect." << std::endl; }
system("pause");
}ให้ตั้งค่าโปรเจคเป็น จาก Debug เป็น Release และ x86 ตามรูป แล้วก็ Build เป็นไฟล์ .exe ได้เลย

ถ้าใคร Build ไม่เป็นก็กดโหลดไฟล์ได้ที่ปุ่มด้านล่างนี้ได้เลย
เริ่มขั้นตอน Crack ด้วย x64dbg
ให้ทุกคนเปิดโปรแกรมขึ้นมาได้เลย โดยเลือกเปิดที่ไฟล์ x32dbg.exe เพราะโปรแกรมของเราเป็น 32bit หลังจากเปิดแล้วจะได้หน้าตาตามรูปด้านล่าง จากนั้นให้เลือกไฟล์ .exe ที่เราต้องการ Crack ได้เลย โดยไปที่ File > Open หรือจะลากมาใส่ก็ได้นะ
ก่อนจะเริ่มการแครก เรามาสังเกตการทำงานโปรแกรมกันก่อน หากเรารันโปรแกรม CrackME C++.exe ขึ้นมาก็จะเห็นว่าตัวโปรแกรม แสดงคำว่า Input Password: และต้องการให้เราใส่รหัสผ่าน หากเราใส่รหัสผิดโปรแกรมจะแสดงคำว่า Password Incorect. และจบการทำงานทันที
เริ่มแรกเราต้องหาตำหน่งของคำสั่งที่ตัดสินใจของ if else โดยค้นหา string คำว่า Password Incorect. เพื่อค้นหาตำแหน่งที่ if นี้ทำงาน เมื่อเจอแล้วก็ทำการเปลี่ยนเงื่อนไข if เท่านี้ก็แครกได้ละ

เอาละขั้นแรกก็คลิกขวาตามรูปแล้วเลือก Search for > All User Modules > String refernces

เมื่อค้นหา string แล้วก็หาคำว่า Password Incorect. ถ้าหาเจอแล้วมันจะบอกตำแหน่งที่คำนี้อยู่ เมื่อดับเบิ้ลคลิกมันก็จะพาไปยัง address ที่มันอยู่

ต่อจากนี้จะยากละ ถ้าไม่เข้าใจ assembly เราต้องไล่การทำงานตามคำสั่งไปเรื่อยๆ เพื่อหาจุดข้ามมัน ถ้าจะเขียนเป็นบทความก็กลัวจะงง ดูวิดีโอแทนละกันนะ 55 (ขี้เกียจพิมพ์)