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

 eXeL@B —› Вопросы новичков —› Неизвестный код текстовых строк.
Посл.ответ Сообщение

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

Создано: 27 декабря 2012 18:25 · Поправил: KARRAT
· Личное сообщение · #1

В программе одни текстовые строки видны на английском, другие - в каком то коде. " Что это за код? Почему одни строки читаются, а другие нет? Есть ли способ (софт) их все таки прочесть для дальнейшего исследования?



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

Создано: 27 декабря 2012 18:51 · Поправил: Konstantin
· Личное сообщение · #2

KARRAT пишет:
Что это за код?

Криптованный текст наверно.
KARRAT пишет:
Почему одни строки читаются, а другие нет?

Важные (для регистрации) криптованы, остальные нет.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 27 декабря 2012 18:52
· Личное сообщение · #3

Софт бы выложил. Да и строки пошифрованы могут быть, бери да разбирайся, как софт с ними работает.



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

Создано: 27 декабря 2012 19:53
· Личное сообщение · #4

KARRAT
Шутник, посмотрел строки в софте и типа справился, молодец.
Для примера, есть строка:
Code:
  1. jowbmje!tfsjbm!ovncfs

Сможешь угадать что там?
А алгоритм, прост, как пять копеек, причем из реальной программы:
Code:
  1. def self_string( text ):
  2.     result_text = ""
  3.     for x in text:
  4.         result_text += chr( ( ord( x ) - 1 ) ^ 0 )
  5.     return result_text

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



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

Создано: 27 декабря 2012 20:07 · Поправил: sivorog
· Личное сообщение · #5

а может, это вообще не текстовая строка, а массив (пошифрованных) данных, используемых для проверки на правильность файла лицензии?

т.е., текстовые строки, которые есть в теле EXE/DLL, не всегда появляются обязательно именно на экране, в окошках и диалогах.

опять же, я гадаю, как боря. Без файла проги невозможно решить проблему.



Ранг: 0.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 декабря 2012 22:12
· Личное сообщение · #6

скорей всего не полностью распакована прога. как то был такой случай. после распаковки PEiD показывал что Fast Check упакован. но перевод все равно получился. я больше переводчик чем крекер, могу и ошибаться.



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

Создано: 10 января 2013 23:47 · Поправил: KARRAT
· Личное сообщение · #7

Правильно заметил Konstantin, зашифрованы те строки, которые касаются регистрации. Нет никаких окон о неправильно введенных регистрационных данных. Так вот как этот код опознать? И можно ли как то принудительно с помощью каких то программ вывести остальные строки в читаемый вид?



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

Создано: 11 января 2013 01:00 · Поправил: tomac
· Личное сообщение · #8

KARRAT
Во-первых, где софт? Во-вторых, заставить прогу расшифровать все строки можно, но объяснить, как это сделать - сложно, иногда - невозможно. Тем не менее, я попытаюсь. Надо ставить бряки на чтение зашифрованных строк, смотреть, какой код с ними работает, и как расшифровывает. Повторять код со всеми зашифрованными строками.

Да, кстати, зачем вам эти строки? Если цель - взлом, совсем не обязательно читать строки. Можно посмотреть, например, какое действие происходит при нажатии Activate, или где происходит вызов CreateFile/OpenFile с именем gat.lic (раз уж вы знаете теперь, что такой файл бывает).




Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 11 января 2013 03:53
· Личное сообщение · #9

KARRAT пишет:
за что то зацепиться

Вы ждете диагноз по фотографии? Выложите файл или закройте тему - экстрасенсы в отпуске.



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

Создано: 12 января 2013 12:30 · Поправил: KARRAT
· Личное сообщение · #10

Программа на Дельфи-7 ничем не запакована. Проявления незарегистрированности:
1)надписи ‘’Demo” в рабочих окнах
2)не выводятся числа в таблице.




Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 12 января 2013 13:55 · Поправил: gazlan
· Личное сообщение · #11

KARRAT пишет:
www.mediafire.com

Не нашел, как скачать без регистрации - спасибо.


Прочтение зашифрованных строк в разделах активации/регистрации подсказало бы

В эташе все ваши строки. Процедура дешифрования находится по адресу .4A78F0 - вызывается 41 раз.
Встаньте в этом месте отладчиком и смотрите, что получается. Можно подменять адрес строки, чтобы просмотреть их все,. но, обычно, удобнее написать декриптор (на вашем любимом языке - рипнув код из программы), заменить в программе все строки на дешифрованные, а вызов декриптора похерить - будет быстрее работать

целый комплекс создаваемых классов
Судя по названию, за лицензирование отвечает всего один.

Не хватайтесь за все сразу - дешифруйте строки, все станет намного яснее.

1de7_12.01.2013_EXELAB.rU.tgz - crypto.rar




Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 12 января 2013 13:59
· Личное сообщение · #12

KARRAT пишет:
Пробовал найти в программе место выведения таблицы


Забыл сразу прицепить - вот еще карты памяти в помощь.


3ecb_12.01.2013_EXELAB.rU.tgz - MAPs.rar




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 12 января 2013 15:38 · Поправил: DimitarSerg
· Личное сообщение · #13

KARRAT
Я вот вообще не понял, зачем зацикливаться на строках

Code:
  1. 004C89CB   .  BA 308D4C00   MOV EDX, 004C8D30                        ; ASCII "gat.lic"
  2. 004C89D0   .  E8 2BCEF3FF   CALL <System.@LStrCat>
  3. 004C89D5   .  8B8D 74FFFFFF MOV ECX, DWORD PTR [EBP-8C]
  4. 004C89DB   .  B2 01         MOV DL, 1
  5. 004C89DD   .  A1 60694C00   MOV EAX, DWORD PTR [4C6960]
  6. 004C89E2   .  E8 51E5FFFF   CALL <_Unit45.TLicenceClass.Create>
  7. 004C89E7   .  8945 84       MOV DWORD PTR [EBP-7C], EAX
  8. 004C89EA   .  8B4D 94       MOV ECX, DWORD PTR [EBP-6C]
  9. 004C89ED   .  8B55 98       MOV EDX, DWORD PTR [EBP-68]
  10. 004C89F0   .  8B45 84       MOV EAX, DWORD PTR [EBP-7C]
  11. 004C89F3   .  E8 1CE0FFFF   CALL <_Unit45.sub_004C6A14>
  12. 004C89F8   .  68 338C0000   PUSH 8C33
  13. 004C89FD   .  8D45 90       LEA EAX, DWORD PTR [EBP-70]
  14. 004C8A00   .  50            PUSH EAX
  15. 004C8A01   .  B9 82310000   MOV ECX, 3182
  16. 004C8A06   .  BA D5030000   MOV EDX, 3D5
  17. 004C8A0B   .  B8 408D4C00   MOV EAX, 004C8D40
  18. 004C8A10   .  E8 DBEEFDFF   CALL <_Unit35.sub_004A78F0>


Создаешь файл gat.lic стартуешь прогу - появляется окно с окошком активации, вводишь что-нибудь, исследуешь колл
CALL 004C6A14
А там есть что исследовать. Делать это за тебя никто не будет.

Как правильно заметил gazlan, класс всего один для лицухи: TLicenceClass

-----
ds


| Сообщение посчитали полезным: nick8606


Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 12 января 2013 16:46
· Личное сообщение · #14

DimitarSerg пишет:
не понял, зачем зацикливаться на строках


Очень просто: зашифровав их, автор уже проделал большую часть работы по взлому, отметив флажками участки кода, относящиеся к защите. Остальное уже можно не проверять, положившись на его добросовестность

Что касается файлов лицензий, серийных номеров и проч, то, IMHO, это last resort.

Большинство защит подобно брезентовой палатке со стальной дверью. Зачем биться о лобовую броню и ломать защиту в самом укрепленном месте, если, осмотревшись, можно зайти сбоку и проткнуть пальцем брезент?

Для примера, распаковщик Ebook Edit Pro (https://ssl.exelab.ru/f/action=vthread&forum=13&topic=16988&page=0) сделан именно так: я вообще не интересовался (и до сих пор не знаю), как там устроена защита паролем, привязка к диску и проч. Ничего из этого не потребовалось - просто обошел кругом "стальную дверь" регистрации и пинком вынес остатки защиты.




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 12 января 2013 16:57 · Поправил: DimitarSerg
· Личное сообщение · #15

Процедура дешифрования находится по адресу .4A78F0
Как-то так:

Code:
  1. function decipher(Crypted:string;Key:DWORD;a,b:WORD):string;
  2. var i:byte;
  3. tmp:DWORD;
  4.  
  5. begin;
  6. Result:='';
  7. tmp:=Key;
  8.  
  9. for i:=1 to length (Crypted) do
  10.          begin
  11.                         Result:=Result+chr(ord(Crypted[i]) xor ((tmp shr 8 and $FF)));
  12.                         tmp:=(ord(Crypted[i])+tmp) * a + b
  13.          end;
  14. end;


В основном вызывается
decipher(Text,$3D5,$3182,$8C33);

А при реге, как я понял, для декрипта содержимого gat.lic уже вот так
(Text, 7цифр из поля SERIAL CODE ,$3182,$8C33);

Проверил - работает вроде


-----
ds




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

Создано: 12 января 2013 17:51 · Поправил: KARRAT
· Личное сообщение · #16

Благодарю! Согласен, прочтение строк многое прояснит.




Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 13 января 2013 03:18 · Поправил: gazlan
· Личное сообщение · #17

На первой картинке обведены 4 параметра, передаваемые при дешифровке первого слова (Activate).

У меня под рукой оказалась IDA, но вы можете использовать любой другой отладчик.

8C33, 3182 и 3D5 - это параметры для дешифровки, 4C9020 - адрес зашифрованной строки.

Вы можете заменить этот адрес на адрес любой другой зашифрованной строки, но, возможно, при этом потребуется изменить и три первых параметра (смотрим значения в том месте, откуда должна была быть вызвана эта строка).

Дешифрованная строка помещается по адресу [ebp+Dst_8] (я переименовал переменные для большей наглядности).

На второй картинке видно, что вы можете следить за участком памяти по адресу [ebp+Decrypted_0] (сразу после вызова @LStrCat) и наглядно видеть процесс расшифроки в окне данных внизу.

Но, поскольку этих строк много (40+), то лучше написать автономный дешифровщик, взяв за основу код процедуры Decrypt_4A78F0 и выкинув из нее все лишнее.

Update:

Добавил комментированный листинг IDA и референсный код на С (MSVC/MFC).

К сожалению, GUI-аппликация оказалась почти бесполезной, потому что при копировании зашифрованных строк автоматически выполняется конверсия кодировки и результат ничему не соответствует..

Используйте этот код просто как заготовку для декриптора, работающего с HEX-строками.

Лучшим вариантом может быть IDA-скрипт или плагин, но есть еще строки, загружаемые из ресурсов или по косвенным адресам, так что без отладчика вам, наверное, все равно не обойтись.

http://www.multiupload.nl/2DW9BG2005
Psw: www.exelab.ru



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