Results 1 to 6 of 6

Thread: คำถามเกี่ยวกับการทำ KeyGen ในการ RE ครัีบ

  1. #1
    Senior Member
    Join Date
    Jan 2008
    Location
    Some where on the earth.
    Posts
    106


    พอดีตอนนี้ผมกำลังอยู่ในช่วงทดลองทำ KeyGen เล่นอยู่ โดยใช้ตัว EditPlus 2.31 เป็นตัวทดลอง
    ซึ่งตอนนี้กำลังติดปัญหาเรื่อง เืทคนิค ในการสร้าง KeyGen นิดหน่อย เลยอยากเอามาถามผู้รุ้นะครับ ว่ามีความคิดหรือวิธีการที่ดีกว่าที่ผมกำลังคิดอยู่ตอนนี้หรือเปล่า


    รูปที่ 1 คือส่วนของ Code ที่เอาไว้ทำสำหรับ สร้าง Encoding Value เพื่อเอามาใช้ในการหา Serial ของ EditPlus ซึ่งจะ้้เห็นได้ว่า Input ที่นำมาใช้ก็คือ UserName และ ความยาวของ UserName ที่เราพิมพ์ลงไป



    รูปที่ 2 แสดงให้เห็นถึงส่วนที่มีการนำเอาค่า EDX ที่ไดคูณด้วย 2 แล้วนำ้ ไปบวกกับค่าคงที่ 55E8BCH แล้วนำมาเป็น Address ของข้อมูลที่จะรำไปใส่ใน AX



    รูปที่ 3 เมื่อเราไปดูที่ Address นั้น (ซึ่งมันก็อยู่ใน Main Thread) จะพบว่าเป็นกลุ่มของคำสั่งก้อนนึง



    คำถามก็คือ
    มีวิธีที่ดีกว่าการที่เราต้องเอาไอ้กลุ่มคำสั่งก้อนนั้นทั้งก้อนยัดลงไปใน Program KeyGen ไหมครับ?
    เพราะว่าผมรู้สึกว่ามันน่าจะยุ่ง(โคตร) ที่มานั่งกำหนด Address ใหม่ให้ไอ้กลุ่มคำสั่งทั้งก้อนนั้น (จากรูปที่3 คำสั่งที่เห็นเป็นแค่ส่วนเล็กๆส่วนเดียวเท่านั้น)


    ใครที่พอจะสามารถช่วยเหลือผมได้ มาช่วยตอบหน่อยนะครับจะเป็นพระคุณอย่างสูง T-T
    <div align="center">"Hacking isn’t about helping the security industry, which leeches from Hackers."</div>

    <div align="center">http://img397.imageshack.us/img397/159/cwhbannerzl0.gif</div>

  2. #2
    Administrator asylu3's Avatar
    Join Date
    Jun 2000
    Location
    Thailand
    Posts
    3,557


    Editplus เป็นโปรแกรมที่ดีดังนั้นจึงมีการป้องกันหนาแน่นเป็นธรรมดา
    หากเทียบว่านี้คือเขาวงกต แทนที่เราจะไล่จากด้านในออกมาหาทางออกแต่ถ้าเราไล่จากทางออกเข้ามาก็น่าจะง่ายกว่าและไวขึ้น

    ซึ่งหากรณีนี้เป็นการศึกษาอยากให้ลอง นำ keygen ที่เขาสร้างสำเร็จแล้วมาลองวิเคราะห์ฺดูก่อนว่า
    1.เรามาถูกทางไหม
    2. Pattern ของ Editplus แต่ละ Version นั้น Keygen แต่ละแบบใช้เหมือนกันหรือไม่
    3. ส่วนมาKeygen เหล่านี้ใช้ VB หรือ Delphi เขียนซึ่งไม่ยากต่อการDecompile ถ้าเป็น Delphi ผมจำชื่อไม่ผิดก็คงเป็น Dede http://dafixer.cjb.net/
    แล้วจริงก็มีอีกหลายตัว http://delphi.about.com/od/devutilit...ompiling_3.htm

    ซึ่งเมื่อได้ Code มาแล้วก็ให้ลองเก็บ Detail ดูก่อนว่ามันมีลักษณะยังไง
    พร้อมที่เราจะเข้าใจหรือยัง
    หากยังแทนที่จะเริ่มจากคลำโดยไม่รู้อะไรเลย
    ก็ลองใช้พวก IDA ดูมีการสร้าง Flow ช่วยเป็น Graph อาจจะช่วยให้งานง่ายขึ้น

    สุดท้ายก็อาจจะทึกหน่อยที่ลองใส่ Input ลงไปแล้วดูที่ Mem ที่ว่ามันถูกแปลกออกมาเป็นอะไรทีละขั้น
    แล้วจับ Pattern ให้ได้ (ที่คุณกำลังทำอยู่ก็คงแบบนั้น) ซึ่งก็คงต้องอดทนหน่อยเพราะลักษณะการเอาค่าอักษรมาเข้ารหัสนั้น มันอิงกับ Pointer เยอะ คูณหารกันสารพัด โอกาสหลงทางมีมากแต่ถ้าใจเย็นเก็บประสบการณ์จากข้อแรกๆมาได้ก็คงไม่เกินความสามารถ
    ขออภัยที่ผมอาจจะบอกกว้างๆ แต่หวังว่าคงพอเป็นแนวทางได้ระดับนึง

  3. #3
    Senior Member
    Join Date
    Jul 2004
    Location
    Thailand
    Posts
    211


    คำถามก็คือ
    มีวิธีที่ดีกว่าการที่เราต้องเอาไอ้กลุ่มคำสั่งก้อนนั้นทั้งก้อนยัดลงไปใน Program KeyGen ไหมครับ?
    เพราะว่าผมรู้สึกว่ามันน่าจะยุ่ง(โคตร) ที่มานั่งกำหนด Address ใหม่ให้ไอ้กลุ่มคำสั่งทั้งก้อนนั้น (จากรูปที่3 คำสั่งที่เห็นเป็นแค่ส่วนเล็กๆส่วนเดียวเท่านั้น) [/b]
    เขียน keygen ด้วย Masm หรือ Inline ASM ใน Delphi,c,c++ compiler ของ microsoft และ borland รองรับ ถ้าเป็น vb ใช้ vb thunder(ไม่เคยเล่น)
    ใน Olly หาปลักอิน Code Ripper มันจะ RiP code มาในรูปแบบ asm ได้ว่าจะไปใช้ในไหน


    *ถ้าฝึกทำ keygen EditPlus ไม่เหมาะมันยากไป มันมีระบบป้องกันตั้งแต่ Version 1.XX หา serial algo ยาก แต่ทำได้ก็เก่งเลยหล่ะ



  4. #4
    Senior Member
    Join Date
    Jan 2008
    Location
    Some where on the earth.
    Posts
    106


    เขียน keygen ด้วย Masm หรือ Inline ASM ใน Delphi,c,c++ compiler ของ microsoft และ borland รองรับ ถ้าเป็น vb ใช้ vb thunder(ไม่เคยเล่น)
    ใน Olly หาปลักอิน Code Ripper มันจะ RiP code มาในรูปแบบ asm ได้ว่าจะไปใช้ในไหน
    *ถ้าฝึกทำ keygen EditPlus ไม่เหมาะมันยากไป มันมีระบบป้องกันตั้งแต่ Version 1.XX หา serial algo ยาก แต่ทำได้ก็เก่งเลยหล่ะ
    [/b]

    ตอนนี้ได้ช้อสรุปแล้วครับ (คิดว่าเขียนเสร็จในอีกไม่กี่วันแน่นอน แต่ต้องไปฝึกเขียน VC ก่อน เกิดมาไม่เคยเขียน - -")

    คืออย่างนี้ครับ จากรูปที่สอง จะเห็นว่ามันเอาไป + กับค่าคงที่ค่านึง เพื่อไปดึงค่า byte จาก source code ในรูปที่ 3 ซึ่งไอ้เจ้า source ที่อยู่ในรูปที่ 3 นี่ เป็นแค่ dummy code ครับ เอาไว้หลอกเฉยๆ ไม่ได้ทำอะไร

    ผมก็เลยโกยไอ้เจ้า code นั้นมายัดใส่ array ในรูปของเลขฐาน 16 ซะ แล้วจากนั้น ก็เอา ส่วนที่ process ยัดลงใน Inline ASM
    หลักๆก็มีประมาณนี้อะครับ

    จะบอกว่า UtraEdit ใช้หลัีกการแบบเดียวกับ EditPlus เลยแต่ขั้นตอน Encoding นรกกว่าเยอะ T-T
    <div align="center">"Hacking isn’t about helping the security industry, which leeches from Hackers."</div>

    <div align="center">http://img397.imageshack.us/img397/159/cwhbannerzl0.gif</div>

  5. #5


    ES-Computing.EditPlus.v2.31.406.Incl.Keymaker-ZWT -> Download
    เขียนด้วย VS C++ 6.0 น่าจะช่วยได้ เอาไว้ debug ศึกษาเป็นแนวทาง

  6. #6


    อืม ผมลองไปนั่งไล่ดูอีกทีนึง ก้อนคำสั่ง ที่ address 0055E8BC มีฟังก์ชั่นในการสร้างข้อมูลชุดนี้อยู่ในโปรแกรมอยู่แล้วนะครับ ดังนั้นไม่น่าจะต้องไปทำอะไรกับมัน

    00489E0F |> \E8 3CFFFFFF CALL editplus.00489D50

    00489D50 /$ 56 PUSH ESI
    00489D51 |. 57 PUSH EDI
    00489D52 |. B9 80000000 MOV ECX,80
    00489D57 |. 33C0 XOR EAX,EAX
    00489D59 |. BF BCE85500 MOV EDI,editplus.0055E8BC
    00489D5E |. 33F6 XOR ESI,ESI
    00489D60 |. F3:AB REP STOS DWORD PTR ES:[EDI]
    00489D62 |. BA BCE85500 MOV EDX,editplus.0055E8BC
    00489D67 |> B8 C1C00000 /MOV EAX,0C0C1
    00489D6C |. B9 01000000 |MOV ECX,1
    00489D71 |> 85CE |/TEST ESI,ECX
    00489D73 |. 74 03 ||JE SHORT editplus.00489D78
    00489D75 |. 66:3102 ||XOR WORD PTR DS:[EDX],AX
    00489D78 |> 03C0 ||ADD EAX,EAX
    00489D7A |. D1E1 ||SHL ECX,1
    00489D7C |. 35 03400000 ||XOR EAX,4003
    00489D81 |. 81F9 00010000 ||CMP ECX,100
    00489D87 |.^ 7C E8 |\JL SHORT editplus.00489D71
    00489D89 |. 83C2 02 |ADD EDX,2
    00489D8C |. 46 |INC ESI
    00489D8D |. 81FA BCEA5500 |CMP EDX,editplus.0055EABC
    00489D93 |.^ 7C D2 \JL SHORT editplus.00489D67
    00489D95 |. 5F POP EDI
    00489D96 |. 5E POP ESI
    00489D97 \. C3 RETN

    ภายในนี้จะทำการสร้างข้อมูลขึ้นมาชุดนึง ณ address 0055E8BC ครับ เพราะฉะนั้นถ้าจะทำ keygen ก็ไม่น่าจะต้องไปเก็บก้อนคำสั่งนี้ไว้อยู่แล้ว แค่ตอนทำ keygen นำส่วนนี้ไปใส่ไว้ แล้วเปลี่ยน address อ้างอิงใหม่หมดใน keygen ของเราก็น่าจะ work

Similar Threads

  1. ลืม password ในการ Logon เข้าเครื่องทำไงดี
    By arraiwa in forum บทความ คอมพิวเตอร์ ทัวไป
    Replies: 1
    Last Post: 03-03-2010, 10:47 PM
  2. Replies: 0
    Last Post: 16-04-2009, 12:45 AM
  3. code ในการ disable window xp sp2 firewall
    By conanjung in forum Visual Basic
    Replies: 2
    Last Post: 14-08-2008, 02:29 PM
  4. Replies: 0
    Last Post: 19-03-2008, 01:42 AM

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •