Сейчас на форуме: hgdagon, asfa (+4 невидимых)

 eXeL@B —› Программирование —› Delphi Вопрос новичка.
Посл.ответ Сообщение

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

Создано: 05 марта 2007 15:14
· Личное сообщение · #1

Взломал пару програмок и решил написать кейген. Но знания мне не хватило. Подскажите как мне в Delphi узнать шеснадцеричное значение буквы? И как в нем же ксорить?



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

Создано: 05 марта 2007 15:54 · Поправил: Flosy
· Личное сообщение · #2

edit2.Text := Format('%0x',[ord(edit1.text[1])]);
//берётся код первого символа из edit1 и записывается в edit2

смотря с чем хочешь ксорить
например:
xored := ord(edit1.text[1]) xor schemxorit;




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 06 марта 2007 00:11
· Личное сообщение · #3

edit2.text:=IntToHex(ORD(edit1.text[1]),2);

-----
Yann Tiersen best and do not fuck





Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 06 марта 2007 00:16
· Личное сообщение · #4

PE_Kill, Flosy пишет:
edit1.text[1]

За такие примеры нужно открывать не только руки, но и голову )
Не трудно догадаться что будет если edit1.text=''




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 06 марта 2007 01:24
· Личное сообщение · #5

dermatolog пишет:
Не трудно догадаться что будет если edit1.text=''


ну дык чел наверное догадается об этом))) раз кейген пишет...

-----
[nice coder and reverser]




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 06 марта 2007 02:11
· Личное сообщение · #6

имхо проще (я так делаю): bValue := Byte(szTemp[1]);)

-----
Shalom ebanats!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 06 марта 2007 02:41
· Личное сообщение · #7

dermatolog пишет:
За такие примеры нужно открывать не только руки, но и голову

гг, какие вопросы, такие ответы, я же не буду еще и код проверки строки писать

-----
Yann Tiersen best and do not fuck




Ранг: 161.0 (ветеран)
Активность: 0.120
Статус: Участник

Создано: 06 марта 2007 05:10
· Личное сообщение · #8

name:=Edit1.Text;
t:=Ord(name[i]);
hex:=Inttohex(t, 2); // перевод имени в HEX
Edit2.Text:=Edit2.Text+(hex); // вывод всего текста в Edit2, а не посимвольно




Ранг: 353.0 (мудрец)
Активность: 0.370
Статус: Участник
resreveR

Создано: 06 марта 2007 05:23
· Личное сообщение · #9

ты ему уж весь цикл приведи.. с проверкой длинны и т.д.

-----
Тут не могла быть ваша реклама




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

Создано: 06 марта 2007 16:58
· Личное сообщение · #10

Flosy пишет:
xored := ord(edit1.text[1]) xor schemxorit;

Какого типа переменная xored, schemxorit?



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

Создано: 06 марта 2007 18:51
· Личное сообщение · #11

Решил я мозг не мучить и просто выдрать код генерации из проги и всавить в ключегон но при нажатии на F9 обламался.
компиляция прерывается на строке "div 1A":
[Error] Unit1.pas(40): Error in numeric constant - что эта за ошибка?

(Имя из одной буквы прога это допускает)
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
Code: string;
Hex: string;
begin
Hex := Format('%0x',[ord(edit1.text[1])]);
asm
mov eax, hex
mov eax, 1
xor eax, 1
div 1A
shr ax, 8
add eax, 41
mov Code, eax
end;
Edit2.Text := Code;
end;

А вот это в проге:

00000715 8A06 MOV AL,BYTE PTR DS:[ESI] ;В al помещается буква
00000717 02C1 ADD AL,CL
00000719 32C1 XOR AL,CL
0000071B F6F3 DIV 1A
0000071D 66:C1E8 08 SHR AX,8
00000721 04 41 ADD AL,41
00000723 8807 MOV BYTE PTR DS:[EDI],AL ;буква кода
00000725 47 INC EDI ;Что такое INC?
00000726 46 INC ESI ;Что такое INC?
00000727 41 INC ECX ;Что такое INC?


Вы сюда заглядывайте иногда так как я носом чую у меня вопросы возникнут=)




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 06 марта 2007 20:00
· Личное сообщение · #12

Ужос. Если дергаешь код из проги - пиши на асме, какое нах делфи..



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

Создано: 06 марта 2007 20:32
· Личное сообщение · #13

satana не "div 1A", а "div 1Ah" или "div $1A" уж тогда. И в отношении остальных чисел тоже.
"inc переменная" - это и в Delphi "inc(переменная)". Увеличение на 1.
Короче, иди учи asm и Delphi, а то тебя тут скоро забанят за такие вопросы




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 06 марта 2007 20:36
· Личное сообщение · #14

Бу го го
satana пишет:
div 1A

в делфи хекс цыферги указываются спец знаком

div $1A

satana пишет:
00000725 47 INC EDI ;Что такое INC?

Кури доки по асму, никто тебе тут онлайн уроки устраивать не будет...

-----
Yann Tiersen best and do not fuck




Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 07 марта 2007 02:41
· Личное сообщение · #15

satana
Может я и путаю но этот код мне видится так:
procedure TForm1.Button1Click(Sender: TObject);
var
InS, OutS: string;
i: integer;
b: byte;
begin
InS := Edit1.Text;
OutS := Edit1.Text;
for i := 1 to length(InS) do
begin
b := byte(InS[i]);
b := b mod $1A + $41;
OutS[i] := char(b);
end;
Edit2.Text := OutS;
end;
вопрос- что было в CL до начала цикла?
опкод F6F3 и Ида, и Оля воспринимают как DIV BL, откуда div 1А?



Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 07 марта 2007 07:55
· Личное сообщение · #16

чёта странна:

mov eax, hex
mov eax, 1

)

-----
Shalom ebanats!




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

Создано: 07 марта 2007 14:50
· Личное сообщение · #17

sorry


 eXeL@B —› Программирование —› Delphi Вопрос новичка.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати