ฟอรั่ม PSsix

Would you like to react to this message? Create an account in a few clicks or log in to continue.

ฟอรั่มของบล็อก http://pssix.blogspot.com


4 posters

    การแข่งเขียนโปรแกรม

    POS
    POS
    PSsix
    PSsix


    การแข่งเขียนโปรแกรม Empty การแข่งเขียนโปรแกรม Empty การแข่งเขียนโปรแกรม Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    การแข่งเขียนโปรแกรม Empty การแข่งเขียนโปรแกรม

    ตั้งหัวข้อ by POS 21/04/11, 08:22 am

    สืบเนื่องจาก [You must be registered and logged in to see this link.] ขอให้คนที่จะเข้าแข่งเขียนโปรแกรม ลงชื่อที่กระทู้นี้ครับ (เห็นคำว่าแข่งแต่ไม่มีรางวัลนะครับ แข่งเล่นๆ เท่านั้น)


    จุดประสงค์โปรแกรม
    เขียนคำสั่งบันทึกและตรวจค่าที่เพิ่มเข้ามาใน Registry ที่คีย์ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run เพื่อใช้ในการป้องกันไวรัสเข้ามาฝังคำสั่งเรียกเปิดไฟล์ไวรัสเมื่อตอนบูตเครื่อง

    ลักษณะการทำงานของโปรแกรม
    1. เมื่อคลิกที่ปุ่ม Button1 โปรแกรมจะบันทึกค่าทั้งหมดในคีย์ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run เก็บเป็นข้อมูลเอาไว้เปรียบเทียบ โดยจะเขียนให้เก็บไว้ที่ไฟล์ข้อความหรือเก็บไว้ที่ไหนก็ได้ตามถนัด (เก็บเอาไว้เป็นข้อมูลที่ใช้นำมาเปรียบเทียบ)

    2. เมื่อคลิกปุ่ม Button2 โปรแกรมจะดึงเอาข้อมูลที่เคยบันทึกไว้ (จากการคลิกปุ่ม Button1) มาเปรียบเทียบกับข้อมูลที่อยู่ในคีย์ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run ณ เวลาปัจจุบัน

    3. หากนำค่าทั้งสองมาเปรียบเทียบข้อมูลกันแล้ว พบว่ามีการใส่ค่าเพิ่มเข้ามาในคีย์ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run (ในกรณีนี้สมมุติว่าเป็นไวรัสเขียนคำสั่งเพิ่มเข้าไป) ก็นำเอาค่าดังกล่าวมาแสดงที่ช่อง Edit1

    อย่างไรก็ตามในสภาพปกติการเปรียบเทียบจะไม่มีผลอะไรเนื่องจากระหว่างการเขียนโปรแกรมและทดสอบคงไม่มีไวรัสมาฝังตัวเองให้เห็น ดังนั้นระหว่างที่ทำขั้นตอนที่ 1 เสร็จ ก่อนเขียนคำสั่งทำขั้นตอนที่ 2 คุณต้องสร้างค่าอะไรก็ได้เพิ่มเข้าไปใน Regsitry เพื่อให้เกิดความแตกต่างระหว่างข้อมูลที่บันทึกไปแล้ว กับข้อมูลที่เพิ่มเข้าไปใหม่

    [You must be registered and logged in to see this image.]


    ผมจะทดสอบโปรแกรมว่าทำงานได้จริงดังนี้

    1. คลิกปุ่ม Button1 แล้วมีการบันทึกข้อมูลในคีย์ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run ทั้งหมดเก็บเอาไว้

    2. จะสร้างค่าเพิ่มในคีย์ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run จำนวน 1 ค่า เพื่อจำลองสถานการณ์ว่ามีไวรัสเขียนคำสั่งเพิ่มเข้ามา

    3. คลิกปุ่ม Button2 เพื่อให้โปรแกรมนำเอาข้อมูลที่สำรองไว้มาเปรียบเทียบกับข้อมูลในคีย์ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run (ตอนนี้มีค่าแปลกปลอมเพิ่มขึ้น 1 ค่า) ถ้าโปรแกรมทำงานถูกต้องจะแสดงค่าที่แปลกปลอม 1 ค่านั้นออกมาให้เห็นทันที่ช่อง Edit1

    หมายเหตุ
    ผมจะทดสอบโปรแกรม 3 รอบ โดยเพิ่มค่าในคีย์ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run ทีละ 1 เพื่อดูโปรแกรมสามารถตรวจหาค่าที่เพิ่มเข้ามาครบทุกรอบหรือไม่


    แนวคิดการเขียนคำสั่ง
    - คำสั่งในการอ่านค่า Regsitry มี RegRead, RegEnumVal, RegEnumKey แต่ละคำสั่งใช้ไม่เหมือนกันลองประยุกต์ดู
    - คำสั่งในการอ่านค่า Registry เอื้อต่อการใช้ลูปอยู่แล้วลองอ่าน Help ดูครับ
    - ใช้คำสั่งลูปอะไรก็ได้ตามถนัด แต่ขอให้สามารถทำงานได้ตามที่ต้องการก็พอ

    ข้อสรุป
    ให้ระยะเวลาในการเขียนโปรแกรม 1 วัน ส่งก่อนวันพรุ่งนี้ 9 โมงเช้า เขียนได้แค่ไหนก็เอาแค่นั้น การส่งคลิกที่ชื่อผมแล้ว PM โค้ดมา อย่านำโค้ดมาแปะในกระทู้ เพื่อป้องกันการนำโค้ดของผู้แข่งที่ส่งก่อนมาดัดแปลง (หลังจาก 9 โมงเช้าพรุ่งนี้ ผมจะนำโค้ดมาแปะให้เอง)

    เพื่อความสะดวกรวดเร็วผมได้ทำ GUI ให้แล้วดังนี้ การแข่งครั้งนี้เน้นที่การใช้ชุดคำสั่ง ที่มีการใช้ลูป และความเร็วในการเขียน(ใครเขียนเสร็จก่อน) ดังนั้นเรื่องหน้าตาโปรแกรมไม่มีผลใดๆ ทั้งสิ้น แค่เอาชุดคำสั่งหรือการเรียกฟังก์ชั่นมาใส่ที่ Case $Button1 และ Case $Button2 ก็พอ

    Code:
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 496, 314, 192, 124)
    $Edit1 = GUICtrlCreateEdit("", 16, 8, 465, 257)
    GUICtrlSetData(-1, "Edit1")
    $Button1 = GUICtrlCreateButton("Button1", 16, 280, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Button2", 392, 280, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
          Case $GUI_EVENT_CLOSE
             Exit
          Case $Button1
          Case $Button2
       EndSwitch
    WEnd


    โจทย์เดียวกัน และระยะกำหนดไว้ 1 วัน พรุ่งนี้จะมาประกาศผล
    em230


    แก้ไขล่าสุดโดย POS เมื่อ 21/04/11, 09:31 am, ทั้งหมด 1 ครั้ง
    aut
    aut
    PSsix Powerful Scripting Class
    PSsix Powerful Scripting Class


    PSsix Game Coder
    จำนวนข้อความ : 472
    ความนิยม : 126
    เข้าร่วมเมื่อ : 24/07/2010

    การแข่งเขียนโปรแกรม Empty Re: การแข่งเขียนโปรแกรม

    ตั้งหัวข้อ by aut 21/04/11, 08:59 am

    มาลงชื่องับ
    ชินจัง
    sak20102005
    sak20102005
    ระงับสมาชิก
    ระงับสมาชิก


    การแข่งเขียนโปรแกรม Empty
    จำนวนข้อความ : 96
    ความนิยม : 4
    เข้าร่วมเมื่อ : 07/04/2011

    การแข่งเขียนโปรแกรม Empty Re: การแข่งเขียนโปรแกรม

    ตั้งหัวข้อ by sak20102005 21/04/11, 09:19 am

    sak20102005


    มาแจ้งท่าน Pos ให้ทราบว่า ผมส่ง Program project ให้แล้วนะ

    ถ้าได้รับหรือไม่ได้รับ ขอให้บอกด้วย จะได้จัดการส่งไปให้ใหม่

    อยากจะบอกกับท่าน Pos ว่า ใครเขียนโปรแกรมเอง หรือ ไม่ได้เขียนเอง

    สามารถพิสูจน์ได้ง่ายมาก ใครที่เขียนเอง ต้องสามารถอธิบายโค๊ดที่เขาเขียนได้

    ไว้ให้ท่าน Pos นำโค๊ดที่ผมเขีียนไว้มาลงเมื่อไหร่ ผมจะอธิบายให้กันสดๆเลย

    เพราะอยากให้เพื่อนๆสมาชิกที่ไม่รู้ ได้มีความรู้ตามไปด้วย.

    โปรแกรมที่ผมเขียนส่งไป ผมเขียนโค๊ดไวรัสจำลอง อยู่ในรูป Function ไว้ให้

    เวลาจะใช้งานกันจริงๆ ต้องเอาคำสั่ง Function ออกก่อน ถึงจะทำงานได้สมบูรณ์.

    อยากจะเขียนไวรัสตัวจริงเสียงให้เลยก็กลัวว่ามันจะระบาดไปทั่วทั้งเว็บ ผิดกฏหมายด้วย





    [project end:DateTime:21/4/2011 :: 17:00 น.]

    em218


    มีอยู่ท่านหนึ่ง ให้ช่วยเขียนโปรแกรมดาวน์โหลดไฟล์แบบต่อเนื่องให้

    เด๊๋ยวมีเวลาว่าจะเขียนให้อยู่เหมือนกัน

    วันนี้ตั้งใจว่า ถ้าเขียนโปรแกรมไม่สำเร็จ จะไม่เลิกเขียน จะค้นคว้าและทดลองเขียนไปเรื่อยๆยันเช้าเลย

    โดยไม่ลุกออกมาจากเก้าอี้ ยกเว้นตอนทานอาหารเท่านั้น จังหวะดีที่เปิด help ไปเจอข้อมูลที่ต้องการพอดี

    เลยทำให้เขียนโปรแกรมได้ง่ายขึ้น ไม่มีครั้งไหนที่ผมเขียนโปรแกรมแบบมาราธอนได้นานขนาดนี้

    เริ่มเขียนตั้งแต่ 4โมงเช้ายั้น 5 โมงเย็น.
    anirud
    anirud
    มือใหม่เพิ่งสมัคร
    มือใหม่เพิ่งสมัคร


    การแข่งเขียนโปรแกรม Empty
    จำนวนข้อความ : 6
    ความนิยม : 0
    เข้าร่วมเมื่อ : 26/11/2010
    อายุ : 32
    ที่อยู่ : SakonNakhon...Thailand

    การแข่งเขียนโปรแกรม Empty Re: การแข่งเขียนโปรแกรม

    ตั้งหัวข้อ by anirud 09/05/11, 02:34 pm

    ผมไม่ได้มาลงชื่อ น่ะครับ...

    แต่ผมมาชื่นชมท่าน อ.sak20102005 ครับ
    ใครจะว่าอย่างไรแต่ผมว่า ท่าน สุดยอดจริงๆครับผม...
    em233

      เวลาขณะนี้ 02/05/24, 08:43 pm