ไปที่เนื้อหา


มูมิน้อย

เป็นสมาชิกตั้งแต่ 30 Jan 2008
ออฟไลน์ ใช้งานล่าสุด Feb 04 2008 09:19 AM
-----

โพสต์ที่ฉันโพสต์

ในกระทู้: การ debug โดยใช้ OllyDbg

30 January 2008 - 06:53:08 PM

QUOTE(watan @ Jan 6 2008, 04:58 AM) ดูโพสต์

รบกวนหน่อยครับผม คือ ถ้า เกมที่เราจะ Debug มัน ใช้ file run 2 ตัว หรือ ตัว loader and ตัว bin
ตอนนี้ผมไปลอง debug ที่ตัว .bin โดยเปลี่ยนเป็น .exe แล้ว ลอง debug ดูโดยใช้โปรแกรม OllyDbg ปรากฎว่ามันต้องการค่ามาจากตัว loader เราจะมีวิธีอะไรไหมครับที่จะทำการหลอกมันได้ (ค่าที่มันต้องการเหมือนจะเป็น Server ที่จะ login เข้าเกมอ่ะครับ)
ช่วยแนะนำที่ครับ ขอบคุณล่วงหน้างับ


ทำได้หลายทางมาก ขึ้นอยู่กับวิธีที่ ตัวจริงจะเชคว่า ถูกเรียกจาก loader หรือป่าว ถ้าโชคดีก็ง่าย แค่ pass argument (ส่วนใหญ่ทำแบบนี้) แต่ บางเกมก็ ใช้ท่ายาก ส่งผ่าน พวก IPC (Mutex,namepipe, sharemen แล้วแต่เค้าจะคิดออก)

เท่าที่เรานึกออก
0) Process Viewer
อันนี้ ง่ายสุด แต่ต้อง มีโชคด้วย หา software ที่ สามารถ แสดง process ที่รัน รวมทั้ง argument ได้ มาหาก็จบ ที่ต้องมีโชคด้วยคือ ถ้า เค้าแค่ส่งง่ายๆก็จะได้เลย แต่ ถ้าส่งแบบ dynamic หรือ มี IPC ก็จะไม่มีประโยชน์ แต่เท่าที่เคยเห็นมีน้อยมาก ที่ใช้แบบนั้น

1) Debug loader
อันนี้ก็เข้าไปดูว่า ตัวloader เรียก ตัวจริงยังไง หาพวก CreateProcess, WinExec อะไรแบบนี้ แล้ว ก็ ดูว่าเค้าส่งอะไร ไปบ้าง หรือมีวิธีคำนวน argument แบบไหน (บางเกม argument ที่ส่ง เป็น dynamic คือไม่เหมือนกัน) แบบนี้จะง่ายหน่อย ถ้า ตัว loader ไม่ได้กันอะไรก็ง่าย ถ้ากันก็ ไปแกะออกซะก่อน

2) Debug main
อันนี้ก็ไปดูว่า ตัว main ว่าเชค parameter อะไร แล้ว พอไม่เจอ ถึงไม่ยอมรัน ของพวกนี้ จะเจอ แถวๆ ต้นๆโปรแกรม เราใช้แบบนี้ตอนที่ตัว loader pack เอาไว้ขี้เกียจแกะ หาทางนี้อาจจะง่ายกว่า แต่ยากตรงที่ต้องเข้าใจ asm พอที่จะรู้ว่าเค้าเชคหาอะไร เราว่ายากพอๆๆกะ หา serial^^ บางที แก้ให้ bypass ไปเลยง่ายกว่า