188 words
1 minute
สอน Crack โปรแกรมที่เขียนด้วย ภาษา C++ (x64dbg)

สอน 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 ได้เลย

image.png

ถ้าใคร Build ไม่เป็นก็กดโหลดไฟล์ได้ที่ปุ่มด้านล่างนี้ได้เลย

โหลดไฟล์ CrackMeC++.exe

เริ่มขั้นตอน Crack ด้วย x64dbg#

ให้ทุกคนเปิดโปรแกรมขึ้นมาได้เลย โดยเลือกเปิดที่ไฟล์ x32dbg.exe เพราะโปรแกรมของเราเป็น 32bit หลังจากเปิดแล้วจะได้หน้าตาตามรูปด้านล่าง จากนั้นให้เลือกไฟล์ .exe ที่เราต้องการ Crack ได้เลย โดยไปที่ File > Open หรือจะลากมาใส่ก็ได้นะ

ก่อนจะเริ่มการแครก เรามาสังเกตการทำงานโปรแกรมกันก่อน หากเรารันโปรแกรม CrackME C++.exe ขึ้นมาก็จะเห็นว่าตัวโปรแกรม แสดงคำว่า Input Password: และต้องการให้เราใส่รหัสผ่าน หากเราใส่รหัสผิดโปรแกรมจะแสดงคำว่า Password Incorect. และจบการทำงานทันที

เริ่มแรกเราต้องหาตำหน่งของคำสั่งที่ตัดสินใจของ if else โดยค้นหา string คำว่า Password Incorect. เพื่อค้นหาตำแหน่งที่ if นี้ทำงาน เมื่อเจอแล้วก็ทำการเปลี่ยนเงื่อนไข if เท่านี้ก็แครกได้ละ

image.png

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

image.png

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

image.png

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

สอน Crack โปรแกรมที่เขียนด้วย ภาษา C++ (x64dbg)
https://blog.0x01code.me/posts/how-to-crack-programe-with-x64dbg/
Author
0x01code
Published at
2023-01-23
License
CC BY-NC-SA 4.0