Исходник кейгена TMG Ripper Studio 0.03

Тема в разделе "WASM.BEGINNERS", создана пользователем tekton, 4 янв 2010.

  1. tekton

    tekton New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2007
    Сообщения:
    48
    Привет!
    Такая проблема у меня.
    Попался мануал по TMG Ripper Studio 0.03
    В комплекте был исходник TMGRS-EX.ASM

    Я его закомментировал чтоб лучше понять структуру, но пару моментов осталось не ясно

    вот родной исходник (с коментами):

    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. include \masm32\include\windows.inc
    6. include \masm32\include\kernel32.inc
    7. include \masm32\include\user32.inc
    8. includelib \masm32\lib\kernel32.lib
    9. includelib \masm32\lib\user32.lib
    10.  
    11. IDC_NAME    equ     100
    12. IDC_KEY     equ     101
    13.  
    14. WinMain     PROTO   :HINSTANCE,:HINSTANCE,:LPSTR,:DWORD
    15. ;extern      wsprintfA   :proc
    16.  
    17. .data
    18. szClassName         db      'UglyWindowClass',0
    19. szAppName           db      'TMG Ripper Studio example',0    ;### Заголовок окна
    20. szEdit              db      'EDIT',0
    21.  
    22. .data?
    23. szName              db      30 dup(?)    ;### Инициализируемые данные. Имя макс 30 символлов
    24. szKey               db      9  dup(?)    ;### Инициализируемые данные. SERIAL 9 символов
    25.  
    26.  
    27. ;========================= START ================================
    28. .code
    29.  
    30. start:     ;### Метка
    31.  
    32.     invoke  GetModuleHandle,0
    33.     invoke  WinMain,eax,NULL,NULL,SW_SHOW
    34.     invoke  ExitProcess,eax
    35. MessageHandler proc hWnd:HWND,Msg:DWORD,wParam:WPARAM,lParam:LPARAM
    36.     cmp     Msg,WM_CLOSE
    37.     jne     NotClose           ;### Выполнить  Метку
    38.     invoke  PostQuitMessage,0
    39.     xor     eax,eax
    40.     ret
    41.  
    42. ;========================= NOT CLOSE ==============================
    43. NotClose:
    44.     cmp     Msg,WM_COMMAND
    45.     jne     Default             ;### Выполнить  Метку
    46.     mov     eax,wParam
    47.     and     eax,0ffffh
    48.     cmp     eax,IDC_NAME
    49.     jne     Default             ;### Выполнить  Метку
    50.     mov     esi,hWnd
    51.     call    GenerateKey         ;### Выполнить  Метку
    52.     xor     eax,eax
    53.     ret
    54.  
    55. ;========================= DEFAULT ==============================
    56.  
    57. Default:           ;### Метка
    58.  
    59.     invoke  DefWindowProc,hWnd,Msg,wParam,lParam
    60.     ret
    61. MessageHandler endp
    62. WinMain proc    hInst:HINSTANCE,hPrev:HINSTANCE,szCmdLine:LPSTR,CmdShow:DWORD
    63.     local   wc:WNDCLASSEX
    64.     local   msg:MSG;
    65.     push    hInst
    66.     push    edi
    67.     xor     eax,eax
    68.     lea     edi,wc
    69.     mov     ecx,sizeof WNDCLASSEX
    70.     push    ecx
    71.     rep     stosb    
    72.     pop     wc.cbSize
    73.     mov     wc.style,CS_HREDRAW or CS_VREDRAW or CS_OWNDC
    74.     pop     edi
    75.     mov     wc.lpfnWndProc,offset MessageHandler
    76.     pop     wc.hInstance
    77.     mov     wc.lpszClassName,offset szClassName
    78.     mov     wc.hbrBackground,COLOR_BACKGROUND
    79.     invoke  RegisterClassEx,addr wc
    80.     invoke  CreateWindowEx,WS_EX_STATICEDGE,offset szClassName,offset szAppName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,300,100,NULL,NULL,hInst,NULL
    81.     push    CmdShow
    82.     push    eax
    83.     invoke  CreateWindowEx,WS_EX_STATICEDGE,offset szEdit,NULL,WS_CHILD or WS_VISIBLE,10,10,280,20,eax,IDC_NAME,hInst,NULL
    84.     invoke  CreateWindowEx,WS_EX_STATICEDGE,offset szEdit,NULL,WS_CHILD or WS_VISIBLE or ES_READONLY,10,40,280,20,[esp+12],IDC_KEY,hInst,NULL
    85.     call    ShowWindow
    86.  
    87. ;========================= MESSAGE LOOP ==============================
    88.  
    89. MessageLoop:     ;### Метка
    90.  
    91.     invoke  GetMessage,addr msg,NULL,0,0
    92.     test    eax,eax
    93.     je      Finish          ;### Прыжок на метку Finish
    94.  
    95.     invoke  TranslateMessage,addr msg
    96.     invoke  DispatchMessage,addr msg
    97.     jmp     MessageLoop
    98.  
    99. ;=========================FINISH==============================
    100.  
    101. Finish:             ;### метка
    102.  
    103.     mov     eax,msg.wParam
    104.     ret    
    105. WinMain endp
    106.  
    107. ;=========================GENERATE KEY=========================
    108.  
    109. GenerateKey:  ;### метка
    110.  
    111.     invoke  GetDlgItemText,esi,IDC_NAME,offset szName,30
    112.     test    eax,eax
    113.     je      NoName           ;### Выполнить  Метку
    114.     push    offset szKey     ;### Кладём Ключик в стек
    115.     push    offset szName    ;### Кладём ИМя  в стек
    116.     call    Keygen           ;### Переход на выполнение нашей метки с выдранным кодом
    117.     add     esp,8
    118.     invoke  SetDlgItemText,esi,IDC_KEY,offset szKey
    119.  
    120. ;=========================NO NAME ==============================
    121.  
    122. NoName:   ;### Метка
    123.  
    124.     ret
    125.  
    126. ;++++++++++++++++++++++++++++++++++++++++++++
    127. ;+                                          +                                                    
    128. ;+   Далее идёт код из TMG Ripper Studio    +
    129. ;+                                          +
    130. ;++++++++++++++++++++++++++++++++++++++++++++
    131.  
    132. .DATA
    133.  
    134. LOC_0048C844    dd        000000000h       ; ????????
    135. LOC_0047E38C    db        '%04X%04X',0    ; ????????
    136.  
    137.  
    138.  ;========================= KEY GEN ============================
    139.  
    140. .CODE
    141. Keygen:                                ;### Метка
    142.  
    143.     PUSH               EBP
    144.     MOV                EBP,ESP
    145.     MOV                ECX,DWORD PTR [EBP+008h]
    146.     PUSH               EBX
    147.     PUSH               ESI
    148.     PUSH               EDI
    149.     MOV                DL,BYTE PTR [ECX]
    150.     XOR                EBX,EBX
    151.     XOR                EAX,EAX
    152.     MOV                ESI,ECX
    153.     XOR                EDI,EDI
    154. LOC_00407B5A: ;Ref: 00407B6C
    155.     TEST               DL,DL
    156.     JZ                 LOC_00407B6E
    157.     MOVZX              DX,DL
    158.     IMUL               EDX,EDI
    159.     ADD                EBX,EDX
    160.     MOV                DL,BYTE PTR [ESI+001h]
    161.     INC                EDI
    162.     INC                ESI
    163.     JMP                LOC_00407B5A
    164. LOC_00407B6E: ;Ref: 00407B5C
    165.     MOV                DWORD PTR [LOC_0048C844],000000001h
    166.     MOV                ESI,ECX
    167.     MOV                CL,BYTE PTR [ECX]
    168. LOC_00407B7C: ;Ref: 00407B97
    169.     TEST               CL,CL
    170.     JZ                 LOC_00407B99
    171.     MOVZX              CX,CL
    172.     PUSH               000001021h
    173.     PUSH               ECX
    174.     PUSH               EAX
    175.     CALL               LOC_00407BB9
    176.     MOV                CL,BYTE PTR [ESI+001h]
    177.     ADD                ESP,00Ch
    178.     INC                ESI
    179.     JMP                LOC_00407B7C
    180. LOC_00407B99: ;Ref: 00407B7E
    181.     ADD                EAX,063h
    182.     MOVZX              ECX,BX
    183.     MOVZX              EAX,AX
    184.     PUSH               ECX
    185.     PUSH               EAX
    186.     PUSH               OFFSET LOC_0047E38C
    187.     PUSH               DWORD PTR [EBP+00Ch]
    188.     CALL               wsprintfA ; <<<<<<<<<<<<<<Здесь заменили LOC_00467AB4 на  wsrintfA
    189.     ADD                ESP,010h
    190.     POP                EDI
    191.     POP                ESI
    192.     POP                EBX
    193.     POP                EBP
    194.     RETN              
    195. LOC_00407BB9: ;Ref: 00407B8B
    196.     PUSH               EBP
    197.     MOV                EBP,ESP
    198.     MOV                EAX,DWORD PTR [EBP+008h]
    199.     PUSH               ESI
    200.     XOR                ECX,ECX
    201.     PUSH               008h
    202.     MOV                CH,BYTE PTR [EBP+00Ch]
    203.     POP                EDX
    204. LOC_00407BC8: ;Ref: 00407BDF
    205.     MOV                ESI,EAX
    206.     XOR                ESI,ECX
    207.     TEST               SI,08000h
    208.     JZ                 LOC_00407BDA
    209.     ADD                EAX,EAX
    210.     XOR                EAX,DWORD PTR [EBP+010h]
    211.     JMP                LOC_00407BDC
    212. LOC_00407BDA: ;Ref: 00407BD1
    213.     SHL                EAX,1
    214. LOC_00407BDC: ;Ref: 00407BD8
    215.     SHL                ECX,1
    216.     DEC                EDX
    217.     JNZ                LOC_00407BC8
    218.     POP                ESI
    219.     POP                EBP
    220.     RETN              
    221. end start
    Рипнутый код у меня другой.
    Вот фотка с найденым паролем [​IMG]

    Вопрос: как переправить пароль в поле кейгена ???
    И второй вопос: Я Всё правильно закоментил ????
    Заранее спасибо !!!
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Я всегда считал, что закомментировал означает "поставил знак комментария на части команд".
    То что ты сделал "по-русски" называется "добавил комментарии".
    ------------------------------------------
    Все остальное тоже "как в тумане". Картинку не фига не видно - не надо класть скриншот туда, где в JPG переделывают... И какое отношение она к асм-у имеет тоже не понятно. Судя по адресам ты рипнул что-то левое - в асм видно что рипали тут
    а у тебя 41EB8B ?
     
  3. tekton

    tekton New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2007
    Сообщения:
    48
    Цель была просто показать , что пароль хранится и в регистре, и в стеке, и в строке!
    Что тут непонятного!

    Что пьём? Или курим? ;) :)

    Читайте внимательнее!
    Мне нужно взять строку с правильным ключём и вставить в Кейген.
    Вопрос заключается в этом: Как это правильно сделать???
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    1) Пароль не поместится в регистре. Там только адрес. И твои обведенные пять мест превращаются в два.
    2) Я же русским языком объснил : при переводе в JPG текст не читается и адреса я разбираю с трудом.
    А пить имею право - нет у меня денег на "Высокие Татры"... :)
    3) Теперь перевожу твой "бред" на русский. Если конечно мои телепатические способности работают.
    Если нет, то уж сам напиши нормально.
    =================================
    Топик назван неправильно. У тебя приведен "исходник" рипнутый из примера, прилагаемого к рипперу.
    Ты рипаешь другой экзешник и картинку дебаггера привел для него. Хочешь с этим экзешником что-то сделать, но объяснить ни фига не можешь и только "туман напускаешь" . Ответить ничего не могу, т.к. одни вопросы :
    1) Какое отношение исходник и твои коментарии имеют к картинке с дебаггером, если это разные коды.
    2) Что ты "ломаешь" и как.

    Не надо задавать вопрос "из середины" процесса ломания. Мы ведь не сидим рядом с тобой и не видим, что ты делал перед тем, как задать вопрос.
     
  5. FLASH300

    FLASH300 New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2008
    Сообщения:
    72
    тут никто никого не понимает >_<
    В приведенном коде функции wsprintfA через стек передается указатель на буфер, а SetDlgItemText выводит этот буфер в контрол.

    Если уже есть ключ зачем кейген ? Исходя из 1 поста текст нужно вставить в созданный EDIT контрол.
    в исходнике ж написано:
    invoke SetDlgItemText,hWnd,IDC_EDIT,offset buffer
    еще есть Туториалы Iczelion'а о Win32 API про диалоги и MSDN

    Короче бред :) вроде уже 6 а по ощущениям 1.
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    После разъяснений FLASH300 могу ответить. Просто я по наивности считал, что ТС понимает, что делает и для чего вообще нужен риппер.
    Ответ на второй вопрос : внимательно перечитал коментарии - УЛЫБНУЛО...
    Ответ на первый вопрос : вы не умеете ASCII выводить в контролы? Блин, а зачем вам риппер?
    Ну а для любителей манной кашки :
    Если после работы "вашего" кейгена "пароль" остается лежать по адресу 1005280, то просто
    замените offset szKey на 1005280h - пароль и выведется. Только увы при вашем уровне и этот совет бесполезен,
    т.к. вы еще не вырипали кейген похоже.

    Увы господи, как новички низко пали! Пора делать еще один раздел - для "сосунков".
     
  7. tekton

    tekton New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2007
    Сообщения:
    48
    Ага не плохо бы :lol:
    С этим согласен! Но ничего поделать не могу, так как подправить самому нельзя. :dntknw: Ни название темы ни свои посты! :dntknw:
    FLASH300 спасибо за посказку... :) Вроде стало доходить!!! :)

    P.S. Мужики!!! Не пинайте слишком сильно... Плиз!!! :)
    Тему можно прикрывать!