Results 1 to 3 of 3

Thread: การทำ keygen

  1. #1
    Junior Member
    Join Date
    Oct 2007
    Posts
    1


    Talking

    [hide=50]เอามาให้อ่านเล่นๆ
    เห็นหากันจัง เผื่อลองทำดูแล้วได้ผล

    ซอฟแวร์เป้าหมาย : South Bay Software FolderView 2.2
    เว็บ : http://www.southbaypc.com
    เครื่องมือที่ใช้ : OllyDbg 1.10
    การแพ็คหรือการเข้ารหัส : N/A
    ภาษาที่ใช้สร้างโปรแกรม : Microsoft Visual C++ 7.0
    วัน เดือน ปี : 15 ก.ค 49
    เขียนบทความโดย : Neoclassic



    ใช้ OllyDBG หา Sorry, you have entered an incorrect registration code.
    search for >> all references text strings >> Sorry, you have entered an incorrect registration code.

    ดับเบิ้นคลิ๊กแล้วจะโผ่วมาที่นี่
    0040DBB9 |. 68 7CDD4200 PUSH FolderVi.0042DD7C ; |Text = "Sorry, you have entered an incorrect registration code."


    แต่เราต้องมาเริ่มต้นการ ทำงานของโปรแกรมที่นี่
    0040DB4F |. E8 CCEAFFFF CALL FolderVi.0040C620 >> ต้องมองให้ออก???

    ========================================================

    0040DB4F |. E8 CCEAFFFF CALL FolderVi.0040C620 ;<< รับชื่อ
    0040DB54 |. 85C0 TEST EAX,EAX
    0040DB56 |. 75 5A JNZ SHORT FolderVi.0040DBB2 ;<< ตรวจสอบ ว่าป้อนชื่อหรือไม่ แล้วโชว์ msg
    0040DB58 |. 8D4424 08 LEA EAX,DWORD PTR SS:[ESP+8]
    0040DB5C |. 50 PUSH EAX ;<< บันทึกชื่อ
    0040DB5D |. 8D8C24 0C0100>LEA ECX,DWORD PTR SS:[ESP+10C]
    0040DB64 |. 51 PUSH ECX ;<< บันทึกโค้ด
    0040DB65 |. E8 36FBFFFF CALL FolderVi.0040D6A0 ;<< call registration routine
    0040DB6A |. 83C4 08 ADD ESP,8
    0040DB6D |. 85C0 TEST EAX,EAX ;<< โค้ดที่ป้อนถูก
    0040DB6F |. 74 41 JE SHORT FolderVi.0040DBB2 ;<< โค้ดที่ป้อนผิด
    0040DB71 |. 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8]
    0040DB75 |. 52 PUSH EDX
    0040DB76 |. 8D8424 0C0100>LEA EAX,DWORD PTR SS:[ESP+10C]

    ==========================================================

    0040DB9C |. 83C4 18 ADD ESP,18
    0040DB9F |. 6A 01 PUSH 1 ; /Result = 1
    0040DBA1 |. 56 PUSH ESI ; |hWnd ;<< else save registration info
    0040DBA2 |. FF15 50D34200 CALL DWORD PTR DS:[<&USER32.EndDialog>] ;<< \EndDialog
    0040DBA8 |. 33C0 XOR EAX,EAX
    0040DBAA |. 5F POP EDI
    0040DBAB |. 5E POP ESI
    0040DBAC |. 8BE5 MOV ESP,EBP
    0040DBAE |. 5D POP EBP
    0040DBAF |. C2 1000 RETN 10
    0040DBB2 |> 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL

    =============================================================

    0040DBB4 |. 68 F8D54200 PUSH FolderVi.0042D5F8 ; |Title = "FolderView"
    0040DBB9 |. 68 7CDD4200 PUSH FolderVi.0042DD7C ; |Text = "Sorry, you have entered an incorrect registration code."
    0040DBBE |. 56 PUSH ESI ; |hOwner
    0040DBBF |. FF15 98D24200 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA

    ================================================================

    ขั้นตอน การทำ (keygen)

    หา serial algo มาที่นี่
    0040DB65 |. E8 36FBFFFF CALL FolderVi.0040D6A0 ;<< call registration routine
    กด enter

    ===========
    โผว่มาบรรทัดนี้
    0040D6A0 /$ 81EC 00010000 SUB ESP,100


    หาบรรทัดนี้
    0040D6CB |. E8 50FCFFFF CALL FolderVi.0040D320
    กด enter

    =======

    มาเจอบรรทัดนี้
    0040D320 /$ 81EC 00010000 SUB ESP,100


    หาบรรทัดนี้
    0040D347 |. FF15 A0D04200 CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; \lstrlenA
    และนี่คือจุดเรื่มต้นการทำ keygen ( KERNEL32.lstrlenA >> \lstrlenA )



    นี้คือ serial algo


    PART 1
    0040D347 |. FF15 A0D04200 CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; \lstrlenA ;<< รับความยาวชื่อ
    0040D34D |. 8BF0 MOV ESI,EAX ;<< ความยาวชื่อ เก็บไว้ที่ register esi
    0040D34F |. 33C9 XOR ECX,ECX ;<< xor ความหมายคือ เหมือนกันเป็น 0 ต่างกันเป็น 1 ดังนั้น register ecx = 0
    0040D351 |. 33C0 XOR EAX,EAX ; << xor ความหมายคือ เหมือนกันเป็น 0 ต่างกันเป็น 1 ดังนั้น register eax = 0
    0040D353 |. 85F6 TEST ESI,ESI ;<< ตรวจสอบชื่อ <=0 หรือไม่
    0040D355 |. 76 16 JBE SHORT FolderVi.0040D36D ;<< ใช่ กระโดด
    0040D357 |. 8B15 F0704300 MOV EDX,DWORD PTR DS:[4370F0] ;<< registry edx = 0x32 (00000032)
    0040D35D |. 8D49 00 LEA ECX,DWORD PTR DS:[ECX]
    0040D360 |> 0FBE1C38 /MOVSX EBX,BYTE PTR DS:[EAX+EDI] ;<< ebx = name
    0040D364 |. 03DA |ADD EBX,EDX ;<< ebx = ebx + edx (ADD บวก)
    0040D366 |. 03CB |ADD ECX,EBX ;<< ecx = ecx + ebx
    0040D368 |. 40 |INC EAX ;<< next char
    0040D369 |. 3BC6 |CMP EAX,ESI ;<< all char done?
    0040D36B |.^ 72 F3 \JB SHORT FolderVi.0040D360 ;<< หยุด


    PART2
    0040D384 |. 33C9 XOR ECX,ECX ;<< xor ความหมายคือ เหมือนกันเป็น 0 ต่างกันเป็น 1 ดังนั้น register ecx = 0
    0040D386 |. 33C0 XOR EAX,EAX ; << xor ความหมายคือ เหมือนกันเป็น 0 ต่างกันเป็น 1 ดังนั้น register eax = 0
    0040D388 |. 85F6 TEST ESI,ESI ;<< ตรวจสอบชื่อ <=0 หรือไม่
    0040D38A |. 76 14 JBE SHORT FolderVi.0040D3A0 ;<< ใช่ กระโดด
    0040D38C |. 8B15 F4704300 MOV EDX,DWORD PTR DS:[4370F4] ;<< registry edx = 0x28 (00000028)
    0040D392 |> 0FBE2C38 /MOVSX EBP,BYTE PTR DS:[EAX+EDI] :<< ebp = name
    0040D396 |. 0FAFEA |IMUL EBP,EDX ;<< ebp = ebp * edx (IMUL : Integer multiply คูณ)
    0040D399 |. 03CD |ADD ECX,EBP ;<< ecx = ecx + ebp
    0040D39B |. 40 |INC EAX ;<< next char เพิ่มค่า eax ไปเรื่อยๆ
    0040D39C |. 3BC6 |CMP EAX,ESI ;<< all char done?
    0040D39E |.^ 72 F2 \JB SHORT FolderVi.0040D392 ;<< หยุด

    PART3
    0040D3C0 |. 33C9 XOR ECX,ECX ;<< xor ความหมายคือ เหมือนกันเป็น 0 ต่างกันเป็น 1 ดังนั้น register ecx = 0
    0040D3C2 |. 33C0 XOR EAX,EAX ; << xor ความหมายคือ เหมือนกันเป็น 0 ต่างกันเป็น 1 ดังนั้น register eax = 0
    0040D3C4 |. 85F6 TEST ESI,ESI ;<< ตรวจสอบชื่อ <=0 หรือไม่
    0040D3C6 |. 76 15 JBE SHORT FolderVi.0040D3DD ;<< ใช่ กระโดด
    0040D3C8 |. 8B15 F8704300 MOV EDX,DWORD PTR DS:[4370F8] ;<< registry edx = 0x1e (0000001E)
    0040D3CE |. 8BFF MOV EDI,EDI
    0040D3D0 |> 0FBE2C38 /MOVSX EBP,BYTE PTR DS:[EAX+EDI :<< ebp = name
    0040D3D4 |. 03EA |ADD EBP,EDX ;<< ebp = ebp + edx
    0040D3D6 |. 03CD |ADD ECX,EBP ;<< ecx = ecx + ebp
    0040D3D8 |. 40 |INC EAX ;<< next char เพิ่มค่า eax ไปเรื่อยๆ
    0040D3D9 |. 3BC6 |CMP EAX,ESI ;<< all char done?
    0040D3DB |.^ 72 F3 \JB SHORT FolderVi.0040D3D0 ;<< หยุด



    PART4
    0040D3FD |. 33C9 XOR ECX,ECX ;<< xor ความหมายคือ เหมือนกันเป็น 0 ต่างกันเป็น 1 ดังนั้น register ecx = 0
    0040D3FF |. 33C0 XOR EAX,EAX ; << xor ความหมายคือ เหมือนกันเป็น 0 ต่างกันเป็น 1 ดังนั้น register eax = 0
    0040D401 |. 85F6 TEST ESI,ESI ;<< ตรวจสอบชื่อ <=0 หรือไม่
    0040D403 |. 76 19 JBE SHORT FolderVi.0040D41E ;<< ใช่ กระโดด
    0040D405 |. 8B15 FC704300 MOV EDX,DWORD PTR DS:[4370FC] ;<< registry edx = 0x0b (0000000
    0040D40B |. EB 03 JMP SHORT FolderVi.0040D410
    0040D40D | 8D49 00 LEA ECX,DWORD PTR DS:[ECX]
    0040D410 |> 0FBE2C38 /MOVSX EBP,BYTE PTR DS:[EAX+EDI] :<< ebp = name
    0040D414 |. 0FAFEA |IMUL EBP,EDX ;<< ebp = ebp * edx (IMUL : Integer multiply)
    0040D417 |. 03CD |ADD ECX,EBP ;<< ecx = ecx + ebp
    0040D419 |. 40 |INC EAX ;<< next char เพิ่มค่า eax ไปเรื่อยๆ
    0040D41A |. 3BC6 |CMP EAX,ESI ;<< all char done?
    0040D41C |.^ 72 F2 \JB SHORT FolderVi.0040D410 ;<< หยุด


    ============
    หา const

    part1
    0040D357 |. 8B15 F0704300 MOV EDX,DWORD PTR DS:[4370F0]
    DS:[004370F0]=00000032

    part2
    0040D38C |. 8B15 F4704300 MOV EDX,DWORD PTR DS:[4370F4]
    DS:[004370F4]=00000028

    part3
    0040D3C8 |. 8B15 F8704300 MOV EDX,DWORD PTR DS:[4370F8]
    DS:[004370F8]=0000001E


    part4
    0040D405 |. 8B15 FC704300 MOV EDX,DWORD PTR DS:[4370FC]
    DS:[004370FC]=0000000B



    ====================================================================


    โค้ดทำ keygen (MASM)

    Generate proc hWnd:HWND
    invoke GetDlgItemText,hWnd,IDC_NAME,addr NameBuffer,40
    mov edi,offset NameBuffer
    invoke lstrlen,edi
    mov esi,eax
    xor ecx,ecx
    xor eax,eax
    test esi,esi
    jle NOINPUT
    mov edx,Hash1
    @@:
    movsx ebx,byte ptr [eax+edi]
    add ebx,edx
    add ecx,ebx
    inc eax
    cmp eax,esi
    jl @b
    invoke wsprintf,addr SerialBuffer,addr FormatControl,ecx
    xor ecx,ecx
    mov eax,ecx
    mov edx,Hash2
    @@:
    movsx ebx,byte ptr [eax+edi]
    imul ebx,edx
    add ecx,ebx
    inc eax
    cmp eax,esi
    jl @b
    invoke wsprintf,addr SerialSection,addr FormatControl,ecx
    invoke lstrcat,addr SerialBuffer,addr SerialSection
    xor ecx,ecx
    mov eax,ecx
    mov edx,Hash3
    @@:
    movsx ebx,byte ptr [eax+edi]
    add ebx,edx
    add ecx,ebx
    inc eax
    cmp eax,esi
    jl @b
    invoke wsprintf,addr SerialSection,addr FormatControl,ecx
    invoke lstrcat,addr SerialBuffer,addr SerialSection
    xor ecx,ecx
    mov eax,ecx
    mov edx,Hash4
    @@:
    movsx ebx,byte ptr [eax+edi]
    imul ebx,edx
    add ecx,ebx
    inc eax
    cmp eax,esi
    jl @b
    invoke wsprintf,addr SerialSection,addr EndFormatControl,ecx
    invoke lstrcat,addr SerialBuffer,addr SerialSection
    invoke SetDlgItemText,hWnd,IDC_SERIAL,addr SerialBuffer
    xor eax,eax
    ret
    NOINPUT:
    ;invoke RtlZeroMemory,addr SerialBuffer,40
    invoke SetDlgItemText,hWnd,IDC_SERIAL,addr MoreInputTxt
    xor eax,eax
    ret
    Generate endp


    ========================================

    โค้ดทำ keygen

  2. #2
    Junior Member
    Join Date
    Oct 2007
    Posts
    0


    แท๊งกิ้ว มีผมคนเดียวที่ใจดี ขอบคุณ เพราะผมกด ปุ่มthank ไม่ได้

  3. #3
    Junior Member
    Join Date
    Mar 2008
    Posts
    0


    ขอบคุณมากๆ ครับ ได้รู้ได้เห็นเพิ่มมากขึ้น

Similar Threads

  1. การทำ ให้ Button นับ ถอยหลัง
    By opormunza in forum แนะนำ Software ต่างๆ
    Replies: 1
    Last Post: 13-07-2009, 08:41 PM
  2. การทำ thumbnails ให้ใหญ่ขึ้น
    By jupingchun in forum ทิปหรือเคล็ดลับการคอมพิวเตอร์ต่างๆ
    Replies: 0
    Last Post: 06-11-2007, 04:22 AM
  3. การทำ OpenVPN
    By conanjung in forum Operating System, Server and Networking
    Replies: 1
    Last Post: 20-09-2007, 12:03 AM
  4. การทำ Win XP ให้เป็นของแท้
    By wirat in forum Computer Tip & Trick / Tutorial
    Replies: 0
    Last Post: 06-08-2007, 02:50 PM
  5. การทำ virtual memory
    By konchokray in forum Computer Tip & Trick / Tutorial
    Replies: 0
    Last Post: 03-03-2007, 10:24 PM

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
  •