Crack ก่อนโดน Crack

** เป็นบทความที่ผมเขียนให้ Magazine เกี่ยวกับ Hacking แห่งนึงเมื่อ 3 ถึง 4 ปีที่แล้วแต่บทความไม่ได้ถูกเผยแพร่ผมเลยนำมาลงที่ Blog ใหม่ของผมครับ **

สวัสดีครับหลังจากฉบับที่แล้ว อาจารย์ กรินทร์ สุมังคะโยธิน ได้เกริ่นเกี่ยวกับเรื่องราวของ Reverse Engineering , Debugger , Disassembly กันไปแล้ว ในฉบับนี้ผมรับหน้าที่ต่อผมจะลงถึงขั้น Technical ในการ Crack เบื้องต้นและวิธีป้องกันในเบื้องต้น เพื่อชี้ให้เห็นว่าโปรแกรมที่สร้างขึ้นมาโดยไม่ได้ป้องกันอะไรเลยนั้นจะถูก Crack ได้ง่ายแค่ไหนครับ ^^
Crack , Keygen คำเหล่านี้ผมว่าหลายๆท่านคงคุ้นเคยกันเป็นอย่างดี และแน่นอนว่าท่านที่ทำงานในด้านการพัฒนาโปรแกรมขึ้นมาเพื่อขายนั้นคงจะไม่ชอบใจแน่ถ้ามี Crack หรือ Keygen ของโปรแกรมท่าน ให้ดาวน์โหลดตามเว็บทั่วไปหรือตามเว็บ BitTorrent ทีนี้แล้วจะทำยังไงดีละถึงจะไม่เกิดเหตุการณ์นี้ขึ้นกับท่าน มีคนคนหนึ่งเคยกล่าวไว้ว่า One who knows the enemy and knows himself will not be in danger in a hundred battles หรือแปลเป็นไทยคือ รู้เขารู้เรารบร้อยครั้งชนะร้อยครั้งนั้นเอง(ฮ่า ขอใช้สำนวนนิสนึง ^^) ทีนี้เราจะมาเริ่มจากรู้เขาก่อนว่าเหล่า Cracker นั้นใช้หลักการอย่างไรในการ Crack โปรแกรม และใช้ Tools อะไรบ้าง ในฉบับนี้จะเอามาแฉซะให้หมด (เอิ๊กๆ)
1.Tools ที่เหล่า Crackerใช้ Crack โปรแกรมนั้นในเบื้องต้นผมจะแนะนำ Tools ที่เอาไว้ Disassembly ได้แก่ OllyDbg , W32DSM89 , Softice เป็นต้น

2.หลักการที่เหล่า Cracker ใช้ในการ Crack โปรแกรมนั้น เริ่มจากการ Disassembly หรือการทำให้โปรแกรมนั้นกลับไปเป็นภาษา Assembly เพื่อดูวิธีการและขั้นตอนการทำงานของโปรแกรมเปรียบเทียบเหมือนกับสูตรส้มตำของ อาจารย์ กรินทร์ ฉบับที่แล้ว เมื่อ Disassembly แล้วหลังจากนั้นเหล่า Cracker ก็จะหาจุดที่ต้องการแก้ไขโปรแกรมโดยในเบื้องต้นอาจจะแก้เพื่อ Bypass ระบบตรวจสอบ Serial ให้ข้ามขั้นตอนการตรวจสอบไปซะ! ผลก็คือไม่ว่าเราจะกรอก Serial อะไรลงเป็นก็จะข้ามไปทำในส่วนที่ถูกต้อง เอาละสิบปากว่าไม่เท่าตาเห็นเราจะมาลองทำ Lab กันเลย (เนื่องจากการ Crack โปรแกรมนั้นจะต้องใช้ความรู้พื้นฐานภาษา Assembly ผมจะยกตัวอย่างง่ายๆ)

ตัวอย่างการ Crack (การ Crack โปรแกรมที่มีลิขสิทธิ์ผิดกฏหมายตาม พรบ. คอมพิวเตอร์)
เครื่องมือที่ใช้ OllyDbg
ความรู้ที่ต้องมี ควรมีความรู้พื้น Assembly สักนิสนึงครับ ^^
โปรแกรมที่ถูก Crack ในที่นี้เป็นโปรแกรมที่เขียนขึ้นมาด้วย Visual C++ ไม่ได้ป้องกันใดๆโดยเป็นโปรแกรมที่สร้างขึ้นไว้เพื่อฝึก Crack ไม่ใช่โปรแกรมชาวบ้านที่มีลิขสิทธ์นะครับเดี๋ยวงานเข้าฮ่าๆๆ (ถ้าท่านเขียนโปรแกรมขึ้นมาโดยไม่ได้ป้องกันใดๆสภาพก็จะไม่ต่างจากโปรแกรมที่โดน Crack นี้)
1.เปิดโปรแกรม OllyDbg ขึ้นมา แล้ว Open โปรแกรมที่จะ Crack จะได้ลักษณะตามรูป

1

จะเห็นว่าโปรแกรมถูก Disassembly ให้อยู่ในรูปภาษาเครื่องแล้วทีนี้เหล่า Cracker ก็จะหาจุดที่พวกเขาจะแก้ไขเพื่อให้โปรแกรมเป็นไปตามเขาต้องการ หึๆ
2.เปิดโปรแกรมที่จะ Crack ขึ้นมาเพื่อดูว่ารูปแบบการป้องกันเป็นยังไง

2

เมื่อเราเปิดโปรแกรมขึ้นมาแล้วลองใส่ Serial มั่วๆลงไป มันก็ตะโกนตอบมาว่า เฮ้ยคุณใส่ผิดลองใส่ใหม่นะ
เราก็เอาสิ่งที่โปรแกรมมันร้องตอบนี่แระไปหา Address
3.หา Address โดยคลิกขวา > Search for > All referenced text strings

3

จะเห็นข้อความที่มันตะโกนใส่เราเมื่อกี้ คอลัมน์ทางซ้ายสุดคือ Address ดับเบิ้ลคลิกเพื่อเปิด Address นี้ขึ้นมาจะได้หน้าตาตามรูป

4

เมื่อเรามองสูงขึ้นมาหน่อยจะเห็นข้อความ “Good job cracker! Now write a keygen and a tutorial.” นี่แหละคือสิ่งที่เหล่า Cracker ต้องการให้มันแสดงขึ้นมา
4. ขั้นตอนการแก้ไขค่าให้มัน Bypass ระบบตรวจสอบ Serial ของโปรแกรม
หลังจากรูปเมื่อกี้เหล่า Crackerได้ Address ที่เก็บข้อความมาแล้วทีนี้เลื่อนขึ้นไปอีกนิดจะเห็นในส่วนระบบตรวจสอบ Serial และระบบ Generate Serial ตามรูป

5

 

ในแถบเทาๆที่ Address 00401320 นั้นให้ใส่ชื่อของผมลงไปแทน JNZ SHORT Test_Cra.00401347
ชื่อของผมคือ NOP (ไม่เชื่ออย่าลบหลู่นะเธอว์ เอิ๊กๆ) จะได้ลักษะตามรูป

6

หลังจากนั้น Run โปรแกรมขึ้นมากรอก Serial ตามเดิมจะได้ผลตามรูป

7

เห็นไหมว่าชื่อผมขลังจริงๆ ฮ่าๆ (จริงๆ NOP คือ No Operation เป็นคำสั่งในภาษา Assembly และใช้พื้ที่เก็บ 1 byte ในที่นี้มีสองบรรทัดเพราะว่าคำสั่ง JNZ SHORT ก่อนเราแก้ไขเป็น NOP นั้นใช้พื้นที่ 2 byte นั้นเอง)

หลังจากที่รู้วิธีที่เหล่า Cracker ใช้ในการ Crack แล้วทีนี้เราจะมาดูว่าในส่วนของเราจะป้องกันอย่างไร
สำหรับในการป้องกันนั้นผมขอแนะนำ Tools สารพัดประโยชน์ตัวหนึ่งชื่อว่า UPX หรือนามเต็มของมันก็คือ Ultimate Packer for eXecutables สำหรับเจ้าตัว UPX นั้นเป็น Open Source ด้วยนะเธอว์ ไม่พูดพร่ำทำเพลงมาทดสอบกันเลยดีกว่า ว่าของมันแน่แค่ไหนขั้นแรกเปิดเจ้าตัวโปรแกรม UPX ขึ้นมาจะได้หน้าตาตามรูป

8

ทีนี้เราลองมา Pack กับเจ้าโปรแกรมที่ถูก Crack เมื่อกี้กันว่าผลมันจะออกมาเป็นยังไง โดยผมจะ
Pack แบบ Original เลยละกันด้วยคำสั่ง ‘upx test_crack.exe –o test_crack_pack.exe’ จะได้ผลดังรูป

9

ทีนี้ผมลองเปิดเจ้าไฟล์ test_crack_pack.exe ปรากฏว่าทำงานได้ตามปกติหลังจากนั้นเราจะมาลอง Disassembly ดูว่าผลจะออกมาเป็นอย่างไรเมื่อผมเปิดเจ้าไฟล์ test_crack_pack.exe ขึ้นมาปรากฏว่ามันมีการแจ้งเตือนดังรูป

หลังจากที่ผมกด Yes ไปผมลองไปดูที่ All referenced text strings ก็พบกับความว่างปล่าวตามรูป

สุดท้ายนี้ถามว่านี้คือจุดจบของ Cracker แล้วหรือไม่ การ Pack แบบนี้ปลอดภัยมากน้อยแค่ไหน อะไรจะช่วยป้องกัน Software ของเราจากเหล่า Cracker ได้อย่างแท้จริงบนอันโหดร้ายใบนี้ โปรดติดตามตอนต่อไป สู้เขาทาเคชิ ^^

Written by MaYaSeVeN

crack, cracking, Disassembly, ollydbg, reverse engineering, upx
Previous Post
How to hack back to the basic Episode [1] {Remote Buffer Overflow}
Next Post
Netcut Killer จุดจบของคนใช้ Netcut !!!! + CAST.V2

Related Posts

10 Comments. Leave new

  • Nuttapong Sarkana
    January 4, 2014 21:41

    ขอบคุณสำหรับความรู้ดีๆแบบนี้ครับพี่ ^_^ ติดตามตลอดครับ #

    Reply
  • ถึงผมจะไม่รู้เรื่องพวกนี้แต่ผมก็อยากรู้มากๆ เพราะว่า ผมอยากจะเก่ง ในสายนี้ครับ ขอบคุณครับ ความรู้ในห้องสอบทั้งนั้น 555

    Reply
    • สู้ๆครับ ขยันอ่าน ขยันทำเดี๋ยวก็เก่ง ผมก็จะพยายามเข็นบทความดีๆออกมาเผยแพร่ความรู้ครับ 🙂

      Reply
  • ขอบคุณบทความเมพๆ จาก mayaseven ด้วยนะครับ

    Reply
  • เดี๋ยวนี้มันหา String ไม่ง่ายแบบนี้แล้วครับ ^^

    Reply
  • ขอเป็นผู้ใช้ละกันเขียนโปรแกรมของเขียนไม่ออก

    Reply
  • ดีครับ ได้ความรู้เบื้องต้นที่ดีมาก ๆ thank!

    Reply
  • ขอบคุณสำหรับความรู้ดีๆครับ

    Reply
  • Jame Stroub
    April 22, 2021 00:34

    Very good blog,thank you very much for your effort in writing the posts.

    Reply

Leave a Reply

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

Fill out this field
Fill out this field
Please enter a valid email address.
You need to agree with the terms to proceed