Привет! Такая проблема у меня. Попался мануал по TMG Ripper Studio 0.03 В комплекте был исходник TMGRS-EX.ASM Я его закомментировал чтоб лучше понять структуру, но пару моментов осталось не ясно вот родной исходник (с коментами): Код (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib IDC_NAME equ 100 IDC_KEY equ 101 WinMain PROTO :HINSTANCE,:HINSTANCE,:LPSTR,:DWORD ;extern wsprintfA :proc .data szClassName db 'UglyWindowClass',0 szAppName db 'TMG Ripper Studio example',0 ;### Заголовок окна szEdit db 'EDIT',0 .data? szName db 30 dup(?) ;### Инициализируемые данные. Имя макс 30 символлов szKey db 9 dup(?) ;### Инициализируемые данные. SERIAL 9 символов ;========================= START ================================ .code start: ;### Метка invoke GetModuleHandle,0 invoke WinMain,eax,NULL,NULL,SW_SHOW invoke ExitProcess,eax MessageHandler proc hWnd:HWND,Msg:DWORD,wParam:WPARAM,lParam:LPARAM cmp Msg,WM_CLOSE jne NotClose ;### Выполнить Метку invoke PostQuitMessage,0 xor eax,eax ret ;========================= NOT CLOSE ============================== NotClose: cmp Msg,WM_COMMAND jne Default ;### Выполнить Метку mov eax,wParam and eax,0ffffh cmp eax,IDC_NAME jne Default ;### Выполнить Метку mov esi,hWnd call GenerateKey ;### Выполнить Метку xor eax,eax ret ;========================= DEFAULT ============================== Default: ;### Метка invoke DefWindowProc,hWnd,Msg,wParam,lParam ret MessageHandler endp WinMain proc hInst:HINSTANCE,hPrev:HINSTANCE,szCmdLine:LPSTR,CmdShow:DWORD local wc:WNDCLASSEX local msg:MSG; push hInst push edi xor eax,eax lea edi,wc mov ecx,sizeof WNDCLASSEX push ecx rep stosb pop wc.cbSize mov wc.style,CS_HREDRAW or CS_VREDRAW or CS_OWNDC pop edi mov wc.lpfnWndProc,offset MessageHandler pop wc.hInstance mov wc.lpszClassName,offset szClassName mov wc.hbrBackground,COLOR_BACKGROUND invoke RegisterClassEx,addr wc invoke CreateWindowEx,WS_EX_STATICEDGE,offset szClassName,offset szAppName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,300,100,NULL,NULL,hInst,NULL push CmdShow push eax invoke CreateWindowEx,WS_EX_STATICEDGE,offset szEdit,NULL,WS_CHILD or WS_VISIBLE,10,10,280,20,eax,IDC_NAME,hInst,NULL 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 call ShowWindow ;========================= MESSAGE LOOP ============================== MessageLoop: ;### Метка invoke GetMessage,addr msg,NULL,0,0 test eax,eax je Finish ;### Прыжок на метку Finish invoke TranslateMessage,addr msg invoke DispatchMessage,addr msg jmp MessageLoop ;=========================FINISH============================== Finish: ;### метка mov eax,msg.wParam ret WinMain endp ;=========================GENERATE KEY========================= GenerateKey: ;### метка invoke GetDlgItemText,esi,IDC_NAME,offset szName,30 test eax,eax je NoName ;### Выполнить Метку push offset szKey ;### Кладём Ключик в стек push offset szName ;### Кладём ИМя в стек call Keygen ;### Переход на выполнение нашей метки с выдранным кодом add esp,8 invoke SetDlgItemText,esi,IDC_KEY,offset szKey ;=========================NO NAME ============================== NoName: ;### Метка ret ;++++++++++++++++++++++++++++++++++++++++++++ ;+ + ;+ Далее идёт код из TMG Ripper Studio + ;+ + ;++++++++++++++++++++++++++++++++++++++++++++ .DATA LOC_0048C844 dd 000000000h ; ???????? LOC_0047E38C db '%04X%04X',0 ; ???????? ;========================= KEY GEN ============================ .CODE Keygen: ;### Метка PUSH EBP MOV EBP,ESP MOV ECX,DWORD PTR [EBP+008h] PUSH EBX PUSH ESI PUSH EDI MOV DL,BYTE PTR [ECX] XOR EBX,EBX XOR EAX,EAX MOV ESI,ECX XOR EDI,EDI LOC_00407B5A: ;Ref: 00407B6C TEST DL,DL JZ LOC_00407B6E MOVZX DX,DL IMUL EDX,EDI ADD EBX,EDX MOV DL,BYTE PTR [ESI+001h] INC EDI INC ESI JMP LOC_00407B5A LOC_00407B6E: ;Ref: 00407B5C MOV DWORD PTR [LOC_0048C844],000000001h MOV ESI,ECX MOV CL,BYTE PTR [ECX] LOC_00407B7C: ;Ref: 00407B97 TEST CL,CL JZ LOC_00407B99 MOVZX CX,CL PUSH 000001021h PUSH ECX PUSH EAX CALL LOC_00407BB9 MOV CL,BYTE PTR [ESI+001h] ADD ESP,00Ch INC ESI JMP LOC_00407B7C LOC_00407B99: ;Ref: 00407B7E ADD EAX,063h MOVZX ECX,BX MOVZX EAX,AX PUSH ECX PUSH EAX PUSH OFFSET LOC_0047E38C PUSH DWORD PTR [EBP+00Ch] CALL wsprintfA ; <<<<<<<<<<<<<<Здесь заменили LOC_00467AB4 на wsrintfA ADD ESP,010h POP EDI POP ESI POP EBX POP EBP RETN LOC_00407BB9: ;Ref: 00407B8B PUSH EBP MOV EBP,ESP MOV EAX,DWORD PTR [EBP+008h] PUSH ESI XOR ECX,ECX PUSH 008h MOV CH,BYTE PTR [EBP+00Ch] POP EDX LOC_00407BC8: ;Ref: 00407BDF MOV ESI,EAX XOR ESI,ECX TEST SI,08000h JZ LOC_00407BDA ADD EAX,EAX XOR EAX,DWORD PTR [EBP+010h] JMP LOC_00407BDC LOC_00407BDA: ;Ref: 00407BD1 SHL EAX,1 LOC_00407BDC: ;Ref: 00407BD8 SHL ECX,1 DEC EDX JNZ LOC_00407BC8 POP ESI POP EBP RETN end start Рипнутый код у меня другой. Вот фотка с найденым паролем Вопрос: как переправить пароль в поле кейгена ??? И второй вопос: Я Всё правильно закоментил ???? Заранее спасибо !!!
Я всегда считал, что закомментировал означает "поставил знак комментария на части команд". То что ты сделал "по-русски" называется "добавил комментарии". ------------------------------------------ Все остальное тоже "как в тумане". Картинку не фига не видно - не надо класть скриншот туда, где в JPG переделывают... И какое отношение она к асм-у имеет тоже не понятно. Судя по адресам ты рипнул что-то левое - в асм видно что рипали тут а у тебя 41EB8B ?
Цель была просто показать , что пароль хранится и в регистре, и в стеке, и в строке! Что тут непонятного! Что пьём? Или курим? Читайте внимательнее! Мне нужно взять строку с правильным ключём и вставить в Кейген. Вопрос заключается в этом: Как это правильно сделать???
1) Пароль не поместится в регистре. Там только адрес. И твои обведенные пять мест превращаются в два. 2) Я же русским языком объснил : при переводе в JPG текст не читается и адреса я разбираю с трудом. А пить имею право - нет у меня денег на "Высокие Татры"... 3) Теперь перевожу твой "бред" на русский. Если конечно мои телепатические способности работают. Если нет, то уж сам напиши нормально. ================================= Топик назван неправильно. У тебя приведен "исходник" рипнутый из примера, прилагаемого к рипперу. Ты рипаешь другой экзешник и картинку дебаггера привел для него. Хочешь с этим экзешником что-то сделать, но объяснить ни фига не можешь и только "туман напускаешь" . Ответить ничего не могу, т.к. одни вопросы : 1) Какое отношение исходник и твои коментарии имеют к картинке с дебаггером, если это разные коды. 2) Что ты "ломаешь" и как. Не надо задавать вопрос "из середины" процесса ломания. Мы ведь не сидим рядом с тобой и не видим, что ты делал перед тем, как задать вопрос.
тут никто никого не понимает >_< В приведенном коде функции wsprintfA через стек передается указатель на буфер, а SetDlgItemText выводит этот буфер в контрол. Если уже есть ключ зачем кейген ? Исходя из 1 поста текст нужно вставить в созданный EDIT контрол. в исходнике ж написано: invoke SetDlgItemText,hWnd,IDC_EDIT,offset buffer еще есть Туториалы Iczelion'а о Win32 API про диалоги и MSDN Короче бред вроде уже 6 а по ощущениям 1.
После разъяснений FLASH300 могу ответить. Просто я по наивности считал, что ТС понимает, что делает и для чего вообще нужен риппер. Ответ на второй вопрос : внимательно перечитал коментарии - УЛЫБНУЛО... Ответ на первый вопрос : вы не умеете ASCII выводить в контролы? Блин, а зачем вам риппер? Ну а для любителей манной кашки : Если после работы "вашего" кейгена "пароль" остается лежать по адресу 1005280, то просто замените offset szKey на 1005280h - пароль и выведется. Только увы при вашем уровне и этот совет бесполезен, т.к. вы еще не вырипали кейген похоже. Увы господи, как новички низко пали! Пора делать еще один раздел - для "сосунков".
Ага не плохо бы С этим согласен! Но ничего поделать не могу, так как подправить самому нельзя. Ни название темы ни свои посты! FLASH300 спасибо за посказку... Вроде стало доходить!!! P.S. Мужики!!! Не пинайте слишком сильно... Плиз!!! Тему можно прикрывать!