ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingรบกวนช่วยผมหน่อยผมต้องการดูโค้ดใน cmd ต้องใช้โปรแกรมอะไร?
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: รบกวนช่วยผมหน่อยผมต้องการดูโค้ดใน cmd ต้องใช้โปรแกรมอะไร?  (อ่าน 4954 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
adjobb
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 320
ออฟไลน์ ออฟไลน์

กระทู้: 2,874



ดูรายละเอียด
« เมื่อ: 13 เมษายน 2011, 14:18:27 »

รบกวนช่วยผมหน่อยผมต้องการดูโค้ดใน cmd ต้องใช้โปรแกรมอะไร? ช่วยบอกชื่อโปรแกรมผมหน่อยครับพอมีไหม
บันทึกการเข้า
cafe2
สมุนแก๊งเสียว
*

พลังน้ำใจ: 92
ออฟไลน์ ออฟไลน์

กระทู้: 860



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 13 เมษายน 2011, 14:20:34 »

มาช่วยดัน  Tongue
บันทึกการเข้า

สินค้าใหม่ สาย OTG เชื่อมต่อมือถือกับ USB,Flashdrive,กล้องดิจิตอล,External Harddisk อ่านเพิ่มที่ รีวิวสาย OTG เชื่อมต่อมือถือ
adjobb
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 320
ออฟไลน์ ออฟไลน์

กระทู้: 2,874



ดูรายละเอียด
« ตอบ #2 เมื่อ: 13 เมษายน 2011, 14:34:47 »

ดันๆช่วยผมหน่อย
บันทึกการเข้า
ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 13 เมษายน 2011, 17:44:27 »

หมายถึง batch files ( *.bat ) ?
บันทึกการเข้า
TG_Min
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 164
ออฟไลน์ ออฟไลน์

กระทู้: 1,522



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 13 เมษายน 2011, 17:47:04 »

งงกับคำถาม หรือเราไม่เก่งพอ Tongue
cmd มันคำสั่งไปหน้า dos mode ใน windows นิ
บันทึกการเข้า

adjobb
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 320
ออฟไลน์ ออฟไลน์

กระทู้: 2,874



ดูรายละเอียด
« ตอบ #5 เมื่อ: 13 เมษายน 2011, 17:52:48 »

คือว่าผมต้องการดู Code ที่เขียนด้วย cmd แต่ว่าผมดูไม่ได้ มันไม่ใช่ .bat แต่มันเป็น .exe ผมจากจะดู Code มัน

ปล. งงกันใช่ไหมผมก็อธิบายไม่ถูกไม่เก่งเืรื่องนี้  Tongue แค่ิอยากดูโค้ดเฉยๆ
บันทึกการเข้า
ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 13 เมษายน 2011, 18:00:07 »

ลองค้นคำว่า reverse engineer หรือ disassembler ดู
มันเหมือนกับเห็นอาหารสูตรลับที่ปรุงเสร็จแล้ว แต่เราอยากย้อนไปดูว่า สูตรอาหาร วิธีปรุง ทำอย่างไร
บันทึกการเข้า
chinjung01
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 160
ออฟไลน์ ออฟไลน์

กระทู้: 1,076



ดูรายละเอียด
« ตอบ #7 เมื่อ: 13 เมษายน 2011, 18:41:48 »

.exe มันดู code ไม่ได้กันง่ายๆ ไม่ใช่หรอครับ

งั้นบริษัทที่ทำดปรแกรมขายก้เจ๊งกันพอดี  Sad
บันทึกการเข้า

mrtomson
Verified Seller
ก๊วนเสียว
*

พลังน้ำใจ: 27
ออฟไลน์ ออฟไลน์

กระทู้: 235



ดูรายละเอียด
« ตอบ #8 เมื่อ: 13 เมษายน 2011, 19:58:07 »

ถ้าเป็น EXE ก็ยากที่จะถอดกลลับมาเป็นดังเดิมครับ

ขออธิบายแบบเข้าใจง่ายละกันครับจะได้ไม่งง

ก่อนอื่นมาทำความเข้าใจก่อนว่า ไฟล์ EXE นั้น เป็น EXE ได้เพราะโค้ดถูกแปลเป็นภาษาเครื่องแล้ว การจะย้อนไปดูซอร์สโค้ดนั้นจะทำได้ยากมาก
เพราะภาษาเครื่องนั้นมีความซับซ้อนสูง และเป็นแค่ตัวเลขเท่านั้น
เอาง่ายๆเลยคือภาษาเครื่องมีแค่ ตัวเลขเท่านั้น ไม่มีคำสั่งพวก MsgBox(); หรืออะไรแบบนั้น

ตัวอย่างภาษาเครื่องก็ เช่น
11101000 1000001 1010001 00000000 00000000
แต่ในระดัับ Windows เราจะเห็น 1 ไบต์ < ( ซึ่งเป็น 8 ตัวของเลข Bit 0/1 นี้เท่านั้น)

การจะเปิด EXE ดูว่าทำงานยังไงนั้นทำได้ง่าย แต่ค่อนข้างยากในการที่จะวิเคราะห์ให้เข้าใจ
อุปกรณ์ที่ใช้ก็เป็นพวก Debugger , Diassambler 
และความเข้าใจในระบบการทำงานของคอมพิวเตอร์ OS,Kernel,API,Assembly & C Language, การเขียนโปรแกรมขั้นพื้นฐาน 
ซึ่งภาษาเครื่องข้่างบนนั้นเป็นตัวเลข แต่โดยทั่วไป Hex Editor, Debugger ,Diassambler มักจะแปลตัวเลขภาษาเครื่องเป็น Hexadecimal หรือเลขฐาน 16 มากกว่า (เช่น E8 = 11101000 เป็นต้น )
และพอเราเปิด EXE ดูด้วย Text Editor เช่น Notepad ก็จะเห็นเป็นเพียง ตัวอักษรยึกยือเท่านั้น เพราะ Notepad จะโชว์ตัวอักษรที่อ้างอิงจากตัวเลขในไฟล์นั้นออกมาเท่านั้นเอง

พอเราใช้ Debugger(ยกตัวอย่างเช่น OllyDBG) ในการ Debug ดู EXE โปรแกรม Olly จะทำการแปลภษาเครื่อง (Operation Code) กลับมา เป็นภาษา ASSEMBLY

เช่น ผมเขียนโปรแกรมภาษาซี ว่า

MessageBox(0,cmsg,head,0);


พอแปลเป็น EXE แล้ว จากนั้นคุณก็เอาโปแกรมนี้ไป Debug ก็จะเห็น ประมาณ


PUSH 0
PUSH 00471000H
PUSH 00571000H
PUSH 0
CALL 45710000H


ถ้าหากไม่เคยศึกษาภาษา assembly มาก็จะไม่รู้ว่า โค้ดสีแดงนี่คืออะไร แต่ถ้าศึกษามาจะรู้ว่ามันเป็นคำสั่งทำนองว่า


MessageBox(0,ตัวแปรข้อความที่1,ตัวแปรข้อความที่สอง,0);


จะเห็นว่า สิ่งที่แปลออกมา(สีส้ม) จะไม่เหมือนกับ ต้นฉบับ (สีเขียว) เพราะว่าตัวแปรต่างๆ พอคอมไฟล์(แปลเป็นภาษาเครื่อง)ไปแล้วก็จะอ้างอิงด้วยตัวเลข ซึ่งเรียกว่า Memory Address
ซึ่งคอมพิวเตอร์มันเข้าใจได้ เพราะฉะนั้นถึงแปล Operation Code ออกมาได้ แต่ตัวแปรนั้นเราไม่รู้แน่น่อนว่าชื่อของมันคืออะไร ทำให้เราต้องจินตนาการเองอีกทีว่า Memory Addreess นี้ น่าจะเป็นตัวแปรชื่ออะไีีร
ใช้สำหรับทำอะไร

จากนั้นหากจะแปลกลับไปเป็นโค้ดเดิมต้นฉบับ ความเป็นไปได้มีน้อยจนเกือบจะเป็น 0 เพราะมันอาจจะแตกต่างกันนิดหน่อย(เช่นชื่อตัวแปร) แต่การทำงานเหมือนกันหมด
และเนื่องจากเราแปลจาก Assembly เราจะแปลงเป็นภาษาอะไรก็ได้ เช่นผมเขียนด้วย C แต่คุณอาจแปลโค้ดของผมกลับไปเป็น Delphi ก็ได้

แต่ถึงเป็นเช่นนั้นก็อย่าคิดว่ามันง่าย เพราะมันไม่ง่ายสักเท่าไรนัก เพราะโค้ดจริงๆ ของ โปรแกรม 1 โปรแกรม มันยาวมาก แถมกระโดดไปมาระหว่างฟังก์ชั่นจำนวนมาก
แค่คำสั่งสั้นๆที่เราใช้ในการเขียนโปรแกรม พอแปลเป็นภาษาเครื่องแล้ว มันจะยาวมากๆ
ฉะนั้นการที่คิดจะดูโค้ดเดิมนั้นทำได้ลำบาก แต่ถ้าหากคิดจะแค่ crack เฉยๆ ก็แค่รู้ assembly แล้ววิเคราะห์โครงสร้างการทำงานของระบบ serial เช่น
อัลกอริทึ่มที่ใช้ในการคำนวน serial แล้ว แก้ไข จากนั้นเ้ซฟออกมาเป็น exe ก็แคร็กได้แล้ว
การแคร็กนั้นเป็นการแก้ไขเพียงบางส่วนของโปรแกรมเท่านั้น ไม่ได้แปลซอร์สโค้ดย้อนกลับมาทั้งหมด เพียงแค่วิเคราะห์บางจุดของโปรแกรมแล้วแก้ไข opcode เท่านั้นเอง

แต่เรื่องความยากก็เท่ากัน แต่ทว่า แค่แคร็กเฉยๆ ง่ายกว่าแปลซอร์สโค้ดย้อนกลับเสียอีก เพราะแคร็กแค่วิเคราะห์ serial แต่ แปลโค้ดกลับ ต้องวิเคราะห์ opcode ทั้งหมด

แต่ถึงจะยากแต่ถ้าศึกษามาก็ย่อมทำได้

แน่นอนว่าจากด้านบนว่ายากแค่ไหน มันก็ต้องมีพวกบ้าพลัง(เช่นผม) ยอมเสียเวลานั่งทำแน่นอน จึงได้มีผู้คิดค้น Packer
หรือตัวป้องกัน EXE จากการโดนแคร็ก หรือย้อนกลับไปเป็น source code โดยการเข้ารหัส opcode ให้ซับซ้อนกว่าเดิม
แต่ถึงกระนั้นก็ทำได้เพียงทำให้ซับซ้อนขึ้นเท่านั้น ไม่ถึงกับป้องกันได้ 100%

แต่ก็ไม่ค่อยมีใครอยากแคร็กโปรแกรมที่มี packer ป้องกันเอาไว้หรอกถ้าไม่จำเป็นจริงๆ *
เพราะการแคร็กระดับดังกล่าวค่อนข้างจะต้องใช้ความรู้ และความพยายามในระดับสูงมากจนต้องพูดว่า
 "จะแคร็กทำไมให้เสียเวลานานๆ แบบนี้เราเขียนเองง่ายกว่า" หรือไม่ก็ "โปรแกรมอื่นแบบเดียวกันที่แจกฟรีก็มี จะแคร็กอันนี้ืทำไมให้เมื่อย"
* (ที่จำเป็น ก็ยกตัวย่าง เช่นพวกที่พยายามจะ hack client game online เพื่อเขียนโปรแกรมโกงเกม เพราะให้เขียน client ใหม่คงยากเกินพยายามเพราะไหนจะเรื่องกราฟฟิกอีก)
 

สรุปเอาง่ายๆว่า หากคุณไม่มีความรู้เรื่องของ Programming ในภาษา C/Assembly ก็ยากนักที่จะแกะ
แต่ถึงศึกษาจนมีความรู้ความเข้าใจแล้ว ก็ยังต้องใช้ความพยายามอีกมากในการจะทำให้สำเร็จ
ป.ล. มันไม่มีโปรแกรมที่จะย้อนเอาโค้ดกลับออกมาได้เหมือนต้นฉบับเป๊ะ ล้านเปอร์เซนต์ไม่มีแน่นอน อย่าแม้แต่จะคิดหา
อย่างมากก็พวกโปรแกรมที่เขียนด้วย VB / ,NET ก็ดู Function name ได้อะไรได้อีกนิดๆหน่อยๆ แต่ opcode ยังเป็น ASM อยู่
(เพราะงี้แหละโปรแกรมด้านความปลอดภัยจึงจะไม่ใช้ ภาษาพวก .NET เขียนกัน หรือถ้าใช้ก็แค่ในส่วนของ Interface แล้วก็ใช้ภาษาอื่นประมวลผลแทน)


คุณอาจสงสัยในสิ่งนี้ว่า
Q: แล้วทำไมโค้ด php ที่เข้ารหัสมันถึงแปลกลับมาได้
A: เพราะ php มันเป็น Interpreter
กล่าวคือพอเรียกใช้งาน มันก็แค่โหลดโค้ด php เข้าไปใน RAM แล้วแปลข้อมูลตอนนั้นให้เป็นภาษาเครื่องแล้วดำเนินการตามคำสั่งเท่านั้น
เพราะ PHP เป็นภาษาเขียนเว็บจึงต้องการความยืดหยุ่นสูง จึงต้องเป็นรูปแบบของ Interpreter
ก็สรุปง่ายๆคือ php มันจะแปลซอร์สโค้ดที่เข้ารหัสกลับมาก่อน(แปลกลับมาจน เป็น PHP code ที่สามารถอ่านได้ใน RAM) แล้วจึงโหลดเข้าไปทำงาน
แน่นอนว่าตอนเข้ารหัส php code จะเป็นการเข้ารหัสแบบถอดออกมาเป็นรูปแบบเดิมก่อนเข้ารหัสได้


รีบตอบไปหน่อยไม่รู้ตกหล่นตรงไหนบ้างก็ขออภัยด้วยครับ นานๆจะมีเวลาว่างสักทีนึง
« แก้ไขครั้งสุดท้าย: 13 เมษายน 2011, 20:10:43 โดย mrtomson » บันทึกการเข้า

ติดต่อได้ทาง PM นะครับ
ohmohmohm009
สมุนแก๊งเสียว
*

พลังน้ำใจ: 22
ออฟไลน์ ออฟไลน์

กระทู้: 510



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 13 เมษายน 2011, 20:06:34 »

อธิบายได้สุดยอดมากเลยครับ
บันทึกการเข้า
arafarn12
สมุนแก๊งเสียว
*

พลังน้ำใจ: 40
ออฟไลน์ ออฟไลน์

กระทู้: 748



ดูรายละเอียด
« ตอบ #10 เมื่อ: 04 กรกฎาคม 2013, 18:32:32 »

ตกลง ไฟล์ .bat ที่ทำเป็น .exe มันดู source code ไม่ได้เหรอครับ  Cry
บันทึกการเข้า

เมพ เมพ เมพ บร๊ะมูลใหมล่ะ ?
ERROR: เขียนอะไรบ้างซิ
หน้า: [1]   ขึ้นบน
พิมพ์