Сейчас на форуме: vsv1, _MBK_ (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Кейген MozgC
Посл.ответ Сообщение

Ранг: 9.8 (гость)
Активность: 0.020
Статус: Участник

Создано: 18 сентября 2007 20:27
· Личное сообщение · #1

Доброго времени суток!
У меня к вам один вопрос...

Это кейген MozgC, описанный в его статье "Взлом BlueFace. Пишем кейген":

procedure TForm1.Button1Click(Sender: TObject);
var
ComputerName, chislo : string; ; инициализация
переменных
i,j : integer;
regnumber : longint;
begin
i:=length(Edit1.Text);
while Edit1.Text[i]<>'-' do i:=i-1; ; Цикл c конца
строки, пока не наткнемся на тире
j:=i; ; Cохраняем номер символа-тире в строке в переменной j
для последующих действий
ComputerName:=copy(Edit1.Text,1,j-1); ; Копируем в
переменную ComputerName часть
строки, содержащейся в Edit1.Text, начиная с первого символа и до тире
(j - позиция тире в строке)
chislo:=copy(Edit1.Text,j+1,length(Edit1.Text)-j); ;
Аналогично, копируем в переменную
chislo часть строки, содержащейся в Edit1.Text, начиная со следующего после тире
символа (его номер - j+1). Кол-во копируемых символов задается выражением
length(Edit1.Text)-j - так мы получим длину второй части серийного номера
regnumber:=(StrToInt(chislo)+ ; Вычисляем регистрационный
код по известному алгоритму
length(ComputerName)+1)*
(length(ComputerName)+1);
Label1.Caption:=IntToStr(regnumber); ; Регистрационный код
выводится на экран с помощью
компонента Label
end; ; Конец процедуры


пожалуйста, помогите мне перевести его в Ассемблер...
мне кажется, надо пользоваться функцией API StrToIntEx, но я не уверен, вообще не пользовался еще этой функцией...

я, конечно, пробовал написать свои процедуры перевода шест. числа в строку/и строку с шест.числом в число, но у них много ошибок, кажется и т.п....
вот мои процедуры:

nfStrToHex proc astr:DWORD
jmp _nfsthnext
nfsthmesserror db "ERROR! Can not convert a string to hex",0
nfsthcapterror db "ERROR!",0
_nfsthnext:
mov ebx,astr
invoke lstrlen,ebx
mov ecx,eax
.IF ecx==0
ret
.ENDIF
_nfsthloop:
.IF (byte ptr [ebx]>="0" && byte ptr [ebx]<="9")
sub byte ptr [ebx],30h
.ELSEIF (byte ptr [ebx]>="A" && byte ptr [ebx]<="F")
sub byte ptr [ebx],37h
.ELSEIF (byte ptr [ebx]>="a" && byte ptr [ebx]<="f")
sub byte ptr [ebx],57h
.ELSE
invoke MessageBox,NULL,ADDR nfsthmesserror,ADDR nfsthcapterror,MB_ICONERROR
ret
.ENDIF
inc ebx
loop _nfsthloop
ret
nfStrToHex endp






nfHexToStr proc ahex:DWORD, astr:DWORD, nob:DWORD
mov edi,astr
mov ebx,ahex
mov ecx,nob
.IF ecx==0
ret
.ENDIF
_nfhtsloop:
mov al,byte ptr [ebx]
and al,0F0h
shr al,4
.IF (al>=0 && al<=9)
add al,30h
mov byte ptr [edi],al
.ELSE
add al,37h
mov byte ptr [edi],al
.ENDIF
mov al,byte ptr [ebx]
and al,00Fh
.IF (al>=0 && al<=9)
add al,30h
mov byte ptr [edi],al
.ELSE
add al,37h
mov byte ptr [edi],al
.ENDIF
inc ebx
inc edi
loop _nfhtsloop
ret
nfHexToStr endp



как видите, напутал, напутал, а толку нету....
я часов 4 писал эти процедуры, наверно, лучше было потратить это время на чтение крэкерский статтей...



Ранг: 9.8 (гость)
Активность: 0.020
Статус: Участник

Создано: 18 сентября 2007 20:28
· Личное сообщение · #2

На Дульфи у меня кейген получился, но мне очень хочетя написать кейген на Ассемблере



Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 18 сентября 2007 22:22 · Поправил: Gerpes
· Личное сообщение · #3

Дак в статье он ведь кусок листига приводил, где серийник генерируется- не помогло?
В Делфи асм вставку сделай, имхо, должно получиться.
Че-то и впавду напутал.



Ранг: 49.6 (посетитель), 9thx
Активность: 0.030
Статус: Участник

Создано: 23 сентября 2007 00:40
· Личное сообщение · #4

Вот примеры стандартных масм32-функций:

dwtoa - convert DWORD to ascii string
Ex.: invoke dwtoa, eax, ADDR Buffer1

dw2hex - convert DWORD to hex string
Ex.: invoke dw2hex, eax, ADDR Buffer2

atodw - convert ascii number to DWORD (возвращает DWORD в eax)
Ex.: invoke atodw, ADDR Buffer3

htodw - сonvert hex string to DWORD (возвращает DWORD в eax)
Ex.: invoke htodw, ADDR Buffer4



Ранг: 9.8 (гость)
Активность: 0.020
Статус: Участник

Создано: 03 октября 2007 00:17
· Личное сообщение · #5

Спасибо=)

dwtoa - convert DWORD to ascii string
Ex.: invoke dwtoa, eax, ADDR Buffer1

dw2hex - convert DWORD to hex string
Ex.: invoke dw2hex, eax, ADDR Buffer2

atodw - convert ascii number to DWORD (возвращает DWORD в eax)
Ex.: invoke atodw, ADDR Buffer3

htodw - сonvert hex string to DWORD (возвращает DWORD в eax)
Ex.: invoke htodw, ADDR Buffer4


буду знать)


 eXeL@B —› Вопросы новичков —› Кейген MozgC
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати