View Full Version : คำถามเกี่ยวกับการทำ KeyGen ในการ RE ครัีบ
Tummy
04-02-2008, 10:52 PM
พอดีตอนนี้ผมกำลังอยู่ในช่วงทดลองทำ KeyGen เล่นอยู่ โดยใช้ตัว EditPlus 2.31 เป็นตัวทดลอง
ซึ่งตอนนี้กำลังติดปัญหาเรื่อง เืทคนิค ในการสร้าง KeyGen นิดหน่อย เลยอยากเอามาถามผู้รุ้นะครับ ว่ามีความคิดหรือวิธีการที่ดีกว่าที่ผมกำลังคิดอยู่ตอนนี้หรือเปล่า
รูปที่ 1 คือส่วนของ Code ที่เอาไว้ทำสำหรับ สร้าง Encoding Value เพื่อเอามาใช้ในการหา Serial ของ EditPlus ซึ่งจะ้้เห็นได้ว่า Input ที่นำมาใช้ก็คือ UserName และ ความยาวของ UserName ที่เราพิมพ์ลงไป
http://pic.citecclub.org/out.php/i1973_pic01.JPG
รูปที่ 2 แสดงให้เห็นถึงส่วนที่มีการนำเอาค่า EDX ที่ไดคูณด้วย 2 แล้วนำ้ ไปบวกกับค่าคงที่ 55E8BCH แล้วนำมาเป็น Address ของข้อมูลที่จะรำไปใส่ใน AX
http://pic.citecclub.org/out.php/i1974_pic02.JPG
รูปที่ 3 เมื่อเราไปดูที่ Address นั้น (ซึ่งมันก็อยู่ใน Main Thread) จะพบว่าเป็นกลุ่มของคำสั่งก้อนนึง
http://pic.citecclub.org/out.php/i1975_pic03.JPG
คำถามก็คือ
มีวิธีที่ดีกว่าการที่เราต้องเอาไอ้กลุ่มคำสั่งก้อนนั้นทั้งก้อนยัดลงไปใน Program KeyGen ไหมครับ?
เพราะว่าผมรู้สึกว่ามันน่าจะยุ่ง(โคตร) ที่มานั่งกำหนด Address ใหม่ให้ไอ้กลุ่มคำสั่งทั้งก้อนนั้น (จากรูปที่3 คำสั่งที่เห็นเป็นแค่ส่วนเล็กๆส่วนเดียวเท่านั้น)
ใครที่พอจะสามารถช่วยเหลือผมได้ มาช่วยตอบหน่อยนะครับจะเป็นพระคุณอย่างสูง T-T
asylu3
05-02-2008, 02:31 AM
Editplus เป็นโปรแกรมที่ดีดังนั้นจึงมีการป้องกันหนาแน่นเป็นธรรมดา
หากเทียบว่านี้คือเขาวงกต แทนที่เราจะไล่จากด้านในออกมาหาทางออกแต่ถ้าเราไล่จากทางออกเข้ามาก็น่าจะง่ายกว่าและไวขึ้น
ซึ่งหากรณีนี้เป็นการศึกษาอยากให้ลอง นำ keygen ที่เขาสร้างสำเร็จแล้วมาลองวิเคราะห์ฺดูก่อนว่า
1.เรามาถูกทางไหม
2. Pattern ของ Editplus แต่ละ Version นั้น Keygen แต่ละแบบใช้เหมือนกันหรือไม่
3. ส่วนมาKeygen เหล่านี้ใช้ VB หรือ Delphi เขียนซึ่งไม่ยากต่อการDecompile ถ้าเป็น Delphi ผมจำชื่อไม่ผิดก็คงเป็น Dede http://dafixer.cjb.net/
แล้วจริงก็มีอีกหลายตัว http://delphi.about.com/od/devutilities/a/decompiling_3.htm
ซึ่งเมื่อได้ Code มาแล้วก็ให้ลองเก็บ Detail ดูก่อนว่ามันมีลักษณะยังไง
พร้อมที่เราจะเข้าใจหรือยัง
หากยังแทนที่จะเริ่มจากคลำโดยไม่รู้อะไรเลย
ก็ลองใช้พวก IDA ดูมีการสร้าง Flow ช่วยเป็น Graph อาจจะช่วยให้งานง่ายขึ้น
สุดท้ายก็อาจจะทึกหน่อยที่ลองใส่ Input ลงไปแล้วดูที่ Mem ที่ว่ามันถูกแปลกออกมาเป็นอะไรทีละขั้น
แล้วจับ Pattern ให้ได้ (ที่คุณกำลังทำอยู่ก็คงแบบนั้น) ซึ่งก็คงต้องอดทนหน่อยเพราะลักษณะการเอาค่าอักษรมาเข้ารหัสนั้น มันอิงกับ Pointer เยอะ คูณหารกันสารพัด โอกาสหลงทางมีมากแต่ถ้าใจเย็นเก็บประสบการณ์จากข้อแรกๆมาได้ก็คงไม่เกินความสามารถ
ขออภัยที่ผมอาจจะบอกกว้างๆ แต่หวังว่าคงพอเป็นแนวทางได้ระดับนึง
neoclassic
05-02-2008, 08:16 PM
คำถามก็คือ
มีวิธีที่ดีกว่าการที่เราต้องเอาไอ้กลุ่มคำสั่งก้อนนั้นทั้งก้อนยัดลงไปใน 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 ยาก แต่ทำได้ก็เก่งเลยหล่ะ
Tummy
05-02-2008, 08:39 PM
เขียน 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
Edkung_
06-02-2008, 01:32 PM
ES-Computing.EditPlus.v2.31.406.Incl.Keymaker-ZWT -> Download (http://file.citecclub.org/download.php?id=9407ABFB)
เขียนด้วย VS C++ 6.0 น่าจะช่วยได้ เอาไว้ debug ศึกษาเป็นแนวทาง
Edkung_
06-02-2008, 02:19 PM
อืม ผมลองไปนั่งไล่ดูอีกทีนึง ก้อนคำสั่ง ที่ 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
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.