0x004 เริ่มต้น โปรแกรม reverse1.c

เข้าสู่เรื่อง reverse engineer ในช่วงเริ่มต้นกันก่อน เราเริ่มมาจาก "สิ่งที่ไม่อันตรายง่ายๆ" นั่นก็คือโปรแกรมที่ง่ายที่สุด จากภาษาที่พื้นฐานสุดๆ และฟังก์ชั่นที่มีความซับซ้อนน้อยที่สุด



หลังจาก execute ขึ้นมาโปรแกรมจะมีอะไรบ้าง ดังนี้
1. แสดงข้อความ Enter a number :
2. เราพิมพ์ตัวเลขลงไป เช่น 5
3. โปรแกรมแสดงค่า The number is 5 .
4. จบ program




เรียบง่ายมั้ยครับ โปรแกรมแบบนี้
แต่นี่เป็นโปรแกรมที่สำคัญมากที่ผมจะพาเข้ามาสู่เรื่องราวของ reverse engineer กันครับ


อันดับแรก เราจะทำการเตรียม LAB ก่อน ในที่นี้คือผมจะใช้ Windows VM (หรือใครจะใช้ Flare-vm ก็ได้)
โดย Lab นี้สามารถไปไกลได้ถึงการ Dynamic Code Analysis reverse Engineering method เพื่อเราจะฝึก Reverse กันได้เต็มที่
เครื่องมือหลักที่เราจะใช้ ก็จะผสมผสานกันทั้ง Static Analysis และ Dynamic Analysis


องค์ประกอบของ Lab Windows ผม มีเครื่องมืออะไรบ้าง
เนื่องจากผมใช้ Linux เป็นหลัก ทั้ง Arch และ Ubuntu
การ Compile โปรแกรม reverse1.c ผมจะทำใน VM LAB เลย เพราะจได้ทดสอบ .exe file ทันที

วิธีการที่ง่ายที่สุดคือ ติดตั้ง compile ที่เบา และจบงานไวที่สุดคือ MiniGW

มาย้อนกัน
เริ่มต้น ผมจะทำการติดตั้ง c compiler บน windows ก่อนเพื่อให้สามารถเขียนโปรแกรมภาษา C แล้ว compile เป็น .exe ที่เป็น PE Files ได้ ซึ่ง compilter ในภาษา C ก็มีให้ติดตั้งหลายแบบ แต่ผมเลือก MiniGW ครับ นั่นเป็นเพราะว่ามันเป็นงานเล็กๆ ง่ายๆ ไม่ต้องมีส่วนขยายอะไรมารบกวนให้มากเหมือนพวก Visual Studio Community

MiniGW หาโหลดได้จาก >> https://github.com/niXman/mingw-builds-binaries/releases

หลังจากโหลด และติดตั้ง เราก็จะได้ path สำหรับการ compile มา เราก็จะไปทำการ set path ให้ Windows รู้จักว่าเครื่องเรามี compiler คำสั่งนี้อยู่นะ
โดยการไปที่ All Control Panel > System > System Properties


จากนั้นทำการเลือก TAB : Advanced , คลิกที่ Environment Variables เพื่อตั้งค่าตัวแปร



จะมีอยู่ 2 Sections คือ user variable กับ system variable , ความแตกต่างคือ System variables จะเป็น environment ที่ใช้งานได้กับทุกๆ user ซึ่งมีความสะดวกสำหรับเครื่องที่มีหลายๆ user หรือในบางโปรแกรมที่ต้องขอสิทธิ์สูง แต่ก็ต้องแลกมากับความเสี่ยงด้วยเช่นกัน เพราะตัวแปรพวกนี้ก็เข้าถึงระบบได้โดยตรงเพราะเป็นสิทธิ์สูงนั่นเอง กรณีนี้ผมทำเพื่อทดสอบ malware อยู่แล้ว และเป็น VM สำหรับทดสอบ ผมจึงเลือก Path ที่อยู่ใน System variables จากนั้นผมก็ทำการคลิกไปที่ Edit...




หน้าต่างเพิ่ม path ก็จะโผล่มา เราก็ทำการเพิ่ม minigw\bin path เข้าไปโดนการคลิก New และ browse ไปที่ path นั้น เพื่อให้ระบบรู้ว่า เรามี c compiler ที่เป็นคำสั่งสำหรับ compile ภาษา C อยู่ที่นี่นะ

เมื่อทำเสร็จแล้วเราทำการ restart เครื่อง และลองใช้ cmd พิมพ์คำสั่งว่า

gcc --version



ถ้ามีข้อความตอบมาว่า gcc version อะไรแสดงว่าเครื่องพร้อมจะ compile ภาษา C แล้ว เราก็ใช้ความสามารถพื้นฐาน ทางด้าน path / dir / cd command ของ windows ต่างๆ เพื่อจะบอก gcc ว่า
ให้คอมไพล์ไฟล์ให้ออกมาเป็น reverse1.exe โดยไฟล์ต้นทางคือ reverse1.c
ผมก็ทำแบบนี้แหละ , เขียนโค้ดภาษา c ไว้ที่ C:\Users\keng\Documents\ghidra-c เป็นไฟล์ชื่อ reverse.c ผมก็เข้าไปใน path นั้น ทำการ dir หรือ ls ดู



แล้วผมก็ทำการ compile ด้วยคำสั่งที่ว่า gcc -o reverse1.exe reverse1.c
ผมก็จะได้ไฟล์ reverse1.exe มาที่รันใน windows ได้จริง พอ double click ขึ้นมาแล้วเป็นงี้


คราวนี้เราก็จะได้ PE File ที่เหมาะสำหรับการเริ่มต้น ง่ายๆ พร้อมสำหรับทำความเข้าใจ reverse engineer แล้ว

Leave a Reply

Your email address will not be published. Required fields are marked *