PDA

View Full Version : การตรวจสอบ Hard lock ใน Aseembly



bo0m
06-05-2009, 05:18 PM
ผมได้โปรแกรมมาโปรแกรมหนึ่ง ........ พอลองเปิด ดู..

มันก็ขึ้นมาแบบนี้ครับ

http://postto.me/ii/t6lu1.jpg


ผมเลยสงสัยว่าเป็นแบบนี้ได้ยังไง เลยลองใช้ Ollydbg เปิดดูครับ

http://postto.me/ik/dy3g2.jpg

ผมอยากรู้ว่า การตรวจสอบ Hardlock อยู่ตรงไหนครับ

ผู้รู้ช่วยบอกหน่อยนะครับ ...........

แล้ว คำสั่ง การตรวจสอบ คือ คำสั่งอะไรครับ

เช่น ตรวจสอบว่า เสียบ Harlock อยู่หรือเปล่า

ใครมี E-book สอนเกี่ยวกับคำสั่งใน Assembly ช่วยแนะนำหน่อยนะครับ ..

ว่าคำสั่งไหน มีหน้าที่อะไรครับ

Edkung_
06-05-2009, 08:02 PM
เหอๆ ถามกันแบบนี้เลยนะ แหมๆ exe ก็ไม่ยอมให้ เอาเถอะ อธิบายให้ฟังก็แล้วกัน

http://pic.citec.us/out.php/i14459_20090506191220.JPG

ให้ดูจากการ error HardLock not found จะเห็นว่ามีคำสั่ง 2 คำสั่งที่น่าสนใจ
1.
CMP [ESI+384], -1
JE SHORT xxxx.00561D0C
2.
CMP [ESI+388], -1
JNZ SHORT xxxx.00561D34

ในข้อ 1. เมื่อ ข้อมูลในตำแหน่ง Address ที่ ESI+384 เท่ากับ -1 จะมีการ Jump ไปที่ Address xxxx.00561D0C ซึ่งจะเข้าไปทำงานในส่วนการแสดงข้อความ HardLock not found

ในข้อ 2. เมื่อ ข้อมูลในตำแหน่ง Address ที่ ESI+388 ไม่เท่ากับ -1 จะมีการทำคำสั่ง Address ถัดมาซึ่งก็คือ Address xxxx.00561D0C ซึ่งแน่นอน ไม่ตรงวัตถุประสงค์ของเรา

แปลง่ายๆ คือ ในกรณีที่มี HardLock อยู่ในเครื่อง จะทำให้ข้อมูลที่ตำแหน่ง ESI+384 จะไม่เท่ากับ -1 และ ESI+388 เท่ากับ -1 (มั้ง อิอิ) อะมีการบ้านให้ไปดูต่อละกัน

http://pic.citec.us/out.php/i14460_20090506195512.JPG
ดู บรรทัดแรก กับ บรรทัดสุดท้าย เอ๊ะ มันใส่ข้อมูลที่ไหนหว่า อืมๆๆๆๆ พอๆ แค่นี้แหละ

ปล. ขอย้ายกระทู้ไปยังหมวด RCE นะครับ ผมว่ามันไม่เข้าข่าย Assembly แล้วละ ^^' ส่วนคำตอบถ้าเปิดดูไม่ได้ ผมจะ PM ไปให้ก็แล้วกัน

Tummy
19-05-2009, 10:43 AM
- -"

ไม่ได้โผล่มาซะนานเลย
ถ้าเอาแค่แก้ว่า HardLock not found ออกนี่ก็ทำตามที่ Ed บอกได้เลยครับ แต่ถ้าจะ bypass HardLock จริงๆมันมีมากกว่านั้นอีกหน่อยครับ
ประเด็นแรก การตรวจสอบ HardLock จะมีการ check ซ้ำเป็นช่วงระยะเวลา และ ข้อมูลที่ใช้ในการตรวจสอบ จะมีการเปลียนแปลงอยู่ตลอดเวลา (สำหรับ HardLock ที่ดีนะ แต่ที่ห่วยๆ นี่ แค่ Jmp pass through ก็ผ่านละ - -")

ดังนั้น ต้องขุดลงไปลึกกว่านั้นเพื่อดูระบบการทำงานของมัน เพราะในบางครั้งจุดที่มันตรวจสอบ อาจจะไมไ่ด้มีแค่จุดๆเดียว
วิธีที่ง่ายที่สุดสำหรับ HardLock สมัยใหม่ก็คือ เขียน Emulate HardLock ขึ้นมาครับ