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

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

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

Создано: 08 августа 2012 17:00 · Поправил: DropDown
· Личное сообщение · #1

Помогите пожалуйста разобраться с нахождением передаваемой строки в процедуру.
Исследуемый отладчиком OllyDBG код программы показал на вызов определенной процедуры криптования.
В которую передается строка пароля (скрин прилагается).

Передаваемый в стеке адрес 2252358 начинается с 00 вроде и не пустая строка но как так может быть.

Code:
  1. 02252358  00 6F 36 33 67 43 4E 49 79 56 6C 55 31 00 25 02  .o63gCNIyVlU1.%


Дальше вроде идут символы до окончания строки 00.
Но вот это начало с 00 сбивает с толку, да и пароль не подходит o63gCNIyVlU1, может я неправильно расшифровываю строку.



7655_08.08.2012_EXELAB.rU.tgz - ris5.jpg




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 08 августа 2012 17:07 · Поправил: Maximus
· Личное сообщение · #2

DropDown это base64 кодировка.
Только результирующий текст внутри наверняка еще как-то обрабатывается.

-----
StarForce и Themida ацтой!




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

Создано: 08 августа 2012 18:22 · Поправил: DropDown
· Личное сообщение · #3

Думаю нет, делфийская функция, я ее по сигнатуре байт вычислил и нашел в нее передается строка.
Может я ошибаюсь но может ли начинатся строка с 0х00 это символ завершения строки, может А может это быть ссылка на пустую строку.

Code:
  1. function ABSInternalDecryptBuffer(
  2.                           CryptoAlg:              TABSCryptoAlgorithm;
  3.                           inBuf:                  pChar;
  4.                           Size:                   Integer;
  5.                           Password:               string
  6.                           ): Boolean;
  7. var crypto: TCipher;
  8. begin
  9.  try
  10.   case CryptoAlg of
  11.    craRijndael_128:
  12.     begin
  13.      crypto := TCipher_Rijndael.Create(Password,nil);
  14.      crypto.HashClass := THash_RipeMD128;
  15.      crypto.InitKey(Password,crypto.Vector);
  16.      crypto.DecodeBuffer(inBuf^,inBuf^,Size);
  17.      crypto.Free;
  18.     end;




Ранг: 20.2 (новичок), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 08 августа 2012 18:41
· Личное сообщение · #4

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

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

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

Создано: 08 августа 2012 20:15
· Личное сообщение · #5

Тогда понятно, значение со смещением -4 = 0D = 13 байт
и строка принимает вид 1UlVyINCg36o и соответственно заканчивается 0.



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

Создано: 17 августа 2012 20:04
· Личное сообщение · #6

DropDown
1) Строка никогда не "перевертывается"! Вы перепутали с бинарным словом.
Там действительно байты задом наперед
2) Если применить base64, то получается 9 байт, из которых 4 последних букавы!
3) craRijndael_128: THash_RipeMD128; - тут 128 бит. Никак 72=9х8 не получается.
4) Единственно длина строки 13 у вас, а это странно - зачем длина и еще нуль-терминайтед. Если только передают в Си-шную процедуру.
5) Отладчик лучшее средство быстро разобраться. А угадайка - ну сами знаете где.


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


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