Посл.ответ |
Сообщение |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 12:38 · Поправил: crc1 · Личное сообщение · #1
Привет парни
Есть прога "Нормы времени" производитель [url=http://www.autodealer.ru
]http://www.autodealer.ru
[/url]
В ней присутствует Б.Д.
В базе шифрованные данные (поле WORKS). Вот эти данные я и пытаюсь вытащить.
Что я сделал:
1. Отмал прогу от starforce
2. Разобрал алгоритм шифрования
3. Написал на ассемблере процедуру расшифровки
Все замечательно. НО, мне хочется перетащить эти шифр. данные в свою таблицу. НО, там более 20000 записей и в ручную их перепихивать геморно, поэтому прошу помощи: нужно внедрить asm вставку в delphi с обработкой всех строк и записью расшифрованного поля WORKS в другое поле
ЗЫ Пытался сделать это сам, но башка уже не варит:s14
ЗЗЫ: Всевопросы по снятию starforce в ПМ Здесь не флудить
| Сообщение посчитали полезным: |
|
Ранг: 20.8 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 27 апреля 2007 13:04 · Личное сообщение · #2
asm
// Ассемблерный код
end;
Если я правильно понял, вроде так, внутри можно обращаться к переменным (mov, EAX, var1).
| Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 13:09 · Личное сообщение · #3
Player
Ежили было так все просто я б не спрашивал
| Сообщение посчитали полезным: |
 Ранг: 353.0 (мудрец) Активность: 0.37↘0 Статус: Участник resreveR
|
Создано: 27 апреля 2007 13:16 · Личное сообщение · #4
crc1 пишет:
Все замечательно. НО, мне хочется перетащить эти шифр. данные в свою таблицу. НО, там более 20000 записей и в ручную их перепихивать геморно, поэтому прошу помощи: нужно внедрить asm вставку в delphi с обработкой всех строк и записью расшифрованного поля WORKS в другое поле
Вырежи расшифровщик и напиши свою прогу, которая достанет записи, расшифрует и запишет в твою таблицу
----- Тут не могла быть ваша реклама | Сообщение посчитали полезным: |
Ранг: 65.3 (постоянный), 10thx Активность: 0.02↘0 Статус: Участник
|
Создано: 27 апреля 2007 13:21 · Личное сообщение · #5
Ну так спрашивай что конкретно не получается, а то не понятно что надо. ИМХО Player ответил на вопрос.
Максимум могу добавить что возможно имеет смысл написать на асме DLL с расшифровкой
| Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 13:45 · Личное сообщение · #6
lord_Phoenix пишет:
Вырежи расшифровщик и напиши свою прогу, которая достанет записи, расшифрует и запишет в твою таблицу
Мля, дык расшифвщик то еть (asm и он работает), нуна его внедрить в длфя, организоавать цикл ну и т.д.
Вот это я и прошу
| Сообщение посчитали полезным: |
 Ранг: 420.3 (мудрец) Активность: 0.24↘0 Статус: Участник
|
Создано: 27 апреля 2007 13:54 · Личное сообщение · #7
crc1
Может реально собрать библиотеку, экспортировать эту функцию в ней, подключить библиотеку. И не мучаться.
ЗЫ Что у тебя на входе процедуры, что на выходе?
----- Сколько ни наталкивали на мысль – все равно сумел увернуться | Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 13:55 · Личное сообщение · #8
tomac
Непонятно следующее
я объявляю строковую переменную, далее пишу asm код
var txtcr: AnsiString;
asm
MOV ESI, txtPnt
ля-ля-ля
MOV BYTE PTR DS:[ESI], AL ; вот в этом месте получаю аксес виолант
Почему то адрес переменной оказывается в секции code и я в ауте
| Сообщение посчитали полезным: |
 Ранг: 85.4 (постоянный) Активность: 0.08↘0 Статус: Участник
|
Создано: 27 апреля 2007 13:56 · Поправил: Icelot · Личное сообщение · #9
crc1 поправь если не так:
1. взять шифрованное значение из таблицы
2. расшифровать
3. записать в свою таблицу
ADD:
помоему надо так mov ESI,[some var]
или lea ESI
----- radio uno in ibisa ... | Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 14:00 · Личное сообщение · #10
ValdiS
На входе строка типа:
F9EDB0F53BD450B753F906D72597E1258EAC674281A7C9339E3125723BD556447BA074 C61C32E430C019EE4B644FC1A34782286E5A781B9CDC0267B546AF
на выходе должна быть такая строка:
Боковой повторитель указателя поворота на переднем крыле - с/у
Все это работает, но 20000 сток, руками
| Сообщение посчитали полезным: |
 Ранг: 420.3 (мудрец) Активность: 0.24↘0 Статус: Участник
|
Создано: 27 апреля 2007 14:09 · Личное сообщение · #11
crc1 пишет:
var txtcr: AnsiString;
asm
MOV ESI, txtPnt
ля-ля-ля
MOV BYTE PTR DS:[ESI], AL ; вот в этом месте получаю аксес виолант
Проверяй стек, может не выравниваешь после работы процедуры. В начале/конце поставь pushad/popad, чтобы с регистрами косяков не было.
После компиляции проекта загружай полученный файл в ольку и смотри, что куда... Насколько изменится твой код после компиляции.
----- Сколько ни наталкивали на мысль – все равно сумел увернуться | Сообщение посчитали полезным: |
Ранг: 20.8 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 27 апреля 2007 14:18 · Личное сообщение · #12
crc1 пишет:
var txtcr: AnsiString;
asm
MOV ESI, txtPnt
ля-ля-ля
MOV BYTE PTR DS:[ESI], AL ;
Ну другое же дело, так гораздо ясней. AnsiString, как и String содержит адрес указателя на данные, поэтому надо
mov eax, txtPnt
mov esi, [eax]
и понеслась
P.S. Длина строки будет в [eax - 4]
| Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 14:19 · Личное сообщение · #13
Мужики
Мне нужна конкретная помощь
У меня есть (не воровал, сам распатронил) готовый алгоритм написанный на asme. на ЯВУ перекинуть не получается, нету времени Нужно срочно сваять файло, который линкуется к Б.Д. (dbf; mdb я ее конвертнул)считывает из поля зашифрованныый стринг передает в мою asm вставку и в соседнее поле пишет расшифровку
| Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 14:39 · Личное сообщение · #14
Player пишет:
mov eax, txtPnt
mov esi, [eax]
и понеслась
Не понял. куда понеслось???
У меня в ESI дожен быть указатель на строку, а ты предлагаешь передать в ESI первые байты строки
| Сообщение посчитали полезным: |
Ранг: 60.4 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 27 апреля 2007 14:44 · Личное сообщение · #15
crc1, тебе ValdiS реальную штуку предложил. Оформи свой алгоритм в виде функции, сгороди DLL-библиотеку и юзай её из любого языка. Если надо поищу доку, как DLL'ки на асме городить.
| Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 14:56 · Личное сообщение · #16
Vedrus
Да сгородил я dll на асме и она работает с моим exe'шником. Но я не умею на асме линковаться к Б.Д.
З.Ы. Исходники могу выложить
Ребята, прошу только конкретной помощи
Хотя бы ответте на вопрос
crc1 пишет:
Почему то адрес переменной оказывается в секции code
ПОЧЕМУ???????????????
| Сообщение посчитали полезным: |
 Ранг: 85.4 (постоянный) Активность: 0.08↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:00 · Личное сообщение · #17
crc1 пишет:
ПОЧЕМУ
Загрузи в Ольку да посмотри почему. Бряк на память или потрейсь. А в esi надо указатель на первый байт загружать.
----- radio uno in ibisa ... | Сообщение посчитали полезным: |
Ранг: 309.8 (мудрец), 21thx Активность: 0.17↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:00 · Личное сообщение · #18
> P.S. Длина строки будет в [eax - 4]
или в [eax-1] если строка задана String[X]
----- Shalom ebanats! | Сообщение посчитали полезным: |
Ранг: 75.0 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:11 · Личное сообщение · #19
crc1 пишет:
tomac
Непонятно следующее
я объявляю строковую переменную, далее пишу asm код
var txtcr: AnsiString;
asm
MOV ESI, txtPnt
ля-ля-ля
MOV BYTE PTR DS:[ESI], AL ; вот в этом месте получаю аксес виолант
Почему то адрес переменной оказывается в секции code и я в ауте
Мля, AnsiString - это КЛАСС, вот именно поэтому адрес получается в секции кода.
ИМХО, надо txtPnt.c_str() - это на с++ (не помню какой у дельфы синтаксис)
| Сообщение посчитали полезным: |
Ранг: 309.8 (мудрец), 21thx Активность: 0.17↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:15 · Личное сообщение · #20
> AnsiString - это КЛАСС
гг... докажи.. покажи код создания экземпляра и деструкции.. так же методы, свойства... на дельфи...
----- Shalom ebanats! | Сообщение посчитали полезным: |
Ранг: 60.4 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:17 · Поправил: Vedrus · Личное сообщение · #21
crc1 пишет:
Но я не умею на асме линковаться к Б.Д.
Я тоже (но по этой фигне у меня тоже доки есть, но это  ). Так можно же подцепиться к базе из Delphi, а обработать всё через асмовскую функцию которая в DLL, или я не прав? Разбираться в коде если честно не охото.
| Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:27 · Личное сообщение · #22
Rush пишет:
Мля, AnsiString - это КЛАСС
Да я разные типы прсваивал переменной , эфект - читай выше
Ребята, я конечно решу эту проблему, но нужно срочно. Может пойти на другой форум?
Дело в том, что бы добыть эту Б.Д. я раковырял StarForce, отломал exe'шник, нашел алго, реализовал его на асме и попал в ступор остался один шаг....
| Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:29 · Поправил: crc1 · Личное сообщение · #23
Vedrus пишет:
Разбираться в коде если честно не охото.
А кто просит разбираться в коде? Все разобрано. Нужно: читай выше
| Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:39 · Личное сообщение · #24
ValdiS пишет:
Проверяй стек, может не выравниваешь после работы процедуры. В начале/конце поставь pushad/popad, чтобы с регистрами косяков не было.
После компиляции проекта загружай полученный файл в ольку и смотри, что куда... Насколько изменится твой код после компиляции.
Валис, почитай внимательно мои сообщения, стек тут не причем. Под OllyDbg я смотрел, все работает до MOV BYTE PTR DS:[ESI], AL В ESI указатель на мою строку, НО дело в том, что он находится в секции кода
Я начинаю стучатся абпол
| Сообщение посчитали полезным: |
 Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 27 апреля 2007 15:40 · Поправил: Hellspawn · Личное сообщение · #25
я бы лучше посоветовал делать так
var
sTmp:string[255];
begin
zeromemory(@sTmp,255);
asm
lea eax,sTmp
бла бла
end;
end;
ну и конечно взять код в рамки - pushad/popad
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:44 · Личное сообщение · #26
Hellspawn пишет:
var
sTmp:string[255];
Делал и так. Все равно строка лежит в секции кода И я получаю акццес виолант
Может у меня Delphi 7 глючит при компиляции
| Сообщение посчитали полезным: |
Ранг: 20.8 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 27 апреля 2007 15:44 · Личное сообщение · #27
crc1 пишет:
Не понял. куда понеслось???
Извини сам себя перехитрил.
Только, что проверил следующее
var
Str: AnsiString;
begin
Str := 'bla-bla';
asm
mov eax, Str;
mov byte ptr DS:[eax], 'c';
end;
end;
Всё работает как надо. Ключевой момент - это то, что пока строке ничего не присвоено, её несуществует и надо обязательно выделять память под неё перед использованием.
| Сообщение посчитали полезным: |
Ранг: 138.7 (ветеран), 135thx Активность: 0.11↘0 Статус: Участник
|
Создано: 27 апреля 2007 16:17 · Личное сообщение · #28
Player пишет:
надо обязательно выделять память под неё перед использованием.
Как её выделить?
| Сообщение посчитали полезным: |
Ранг: 456.3 (мудрец), 340thx Активность: 0.28↘0.02 Статус: Участник Android Reverser
|
Создано: 27 апреля 2007 16:26 · Личное сообщение · #29
crc1
но пример вот так:
Player пишет:
Str := 'bla-bla';
----- SaNX | Сообщение посчитали полезным: |
 Ранг: 85.4 (постоянный) Активность: 0.08↘0 Статус: Участник
|
Создано: 27 апреля 2007 16:36 · Личное сообщение · #30
Она и будет в секции кода. Это же локальная переменная. Надо размер задать для ней и всё. Hellspawn вроде правильно показал, как под локаль выделить 255 байт. Тоже скомпилировал - всё работает..
----- radio uno in ibisa ... | Сообщение посчитали полезным: |