Сейчас на форуме: Rio, johnniewalker, vsv1, Magister Yoda, Kybyx (+4 невидимых)

 eXeL@B —› Крэки, обсуждения —› Реверсинг MediaHeal
Посл.ответ Сообщение

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

Создано: 13 января 2012 16:02
· Личное сообщение · #1

Всем привет.
Начну с самого начала. Была у меня виртуальная машина где я хранил много важной для себе информации.
В оснном это сорс программ и мои наработки.
Но вот случилась беда. При переносе на другой ПК vhd диск повредился.
Долго искал чем достать информацию. Помогла только MediaHeal for Virtual Drives
Но для востановления просит купить лицензию за 199 у.е.

Начал копать:
Программа написана на .NET
Взял в руки .NET Reflector
Вот что выяснил:
- программа общается с сайтом
http://www.officerecovery.com/cgi-bin/disp/dispatcher.php?v=1&a=0;1;2
Первый параметр 0 или 1
Второй собствено сам key
Третий это hid

Пытался заменить CommitActivation, CheckKey, CheckActivation что бы всегда возвращали ErrorCodes.ERR_OK. Но через reflexil.1.3 не могу поправить код.
Выдает вот такое:

http://dl.dropbox.com/u/4055375/Source/error.PNG

Помогите докопатся до истины.

Вот исходник:
http://dl.dropbox.com/u/4055375/Source/ug.rar

Буду очень признателен.

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

Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 13 января 2012 16:35
· Личное сообщение · #2

не хватает кое чего

например
using AsyncClient;

можно инстал?



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

Создано: 13 января 2012 16:40
· Личное сообщение · #3

Вот офф сайт программы:
http://www.officerecovery.com/mediaheal-for-virtual-drives/download_demo.htm
Прямой линк: http://www.officerecovery.com/download/mhvdemo.exe
Можно скачать оттуда.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 13 января 2012 17:03
· Личное сообщение · #4

Пропатченый файл чтоб видеть окно регистрации:
http://zalil.ru/32488641

Теперь подменяешь RSA-n на свою, разбираешь алгоритм генерации и пишешь кейген. Хотя не уверен что демка будет полнофункционально работать

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

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

Создано: 13 января 2012 17:17
· Личное сообщение · #5

А почему такие подозрения? Я тоже об этом думал может там просто нету функции востановления но пока не нашел.



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

Создано: 13 января 2012 17:45
· Личное сообщение · #6

А можете подробнее разказать что нужно изменить на свой?
Я думал может просто сделать что бы ЕХЕ считала что она активирована?
Ключи тут изменять?
Code:
  1. protected const string address = "www.officerecovery.com";
  2.     protected const string internal_error_text = "Could not connect to the activation server. Check your internet connection and try again or switch to a different activation method.";
  3.     private _LogCallback log;
  4.     private Socket m_socket;
  5.     private TcpClient m_tcp_client;
  6.     protected const string mask = "GET /cgi-bin/disp/dispatcher.php?v=1&a={0};{1};{2} HTTP/1.1\r\nHost: www.officerecovery.com\r\n\n";
  7.     private const string module = "683710061796561017376621154464674554311060067547855695881376302837884918923005980007762166721939811597479204126018165714006955910094773990879451152598700401830066412451733631464005846498486978002499487559179045514585923745070183318232807634199182201879508418103282412167265190968957134324412430232186338769";
  8.     protected const int port = 80;
  9.     private const string pub_key = "1789526947";
  10.     protected const string rsa_error_text = "Activation failed due to internal problems: returned activation string is incorrect.";
  11.     protected const int WAIT_TIMEOUT = 0x4e20;


Я наеш public ErrorCodes CheckActivation(string key, byte[] enc_data, int enc_data_size)
Там етсь : return ErrorCodes.ERR_OK;
или это не то? Вроде возвращает ОК если активирована.



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

Создано: 13 января 2012 18:11
· Личное сообщение · #7

Так же нашел вот:

Code:
  1. public int CheckActivation(string sKey, string sResponse)
  2. {
  3.     this.inst.Log(Installation.LogType.info, "Check activation begin. Key: " + sKey + " , Code: " + sResponse);
  4.     Activation activation = new Activation(new Activation._LogCallback(this.OnActivationLog));
  5.     byte[] bytes = Encoding.ASCII.GetBytes(sResponse);
  6.     ErrorCodes codes = activation.CheckActivation(sKey, bytes, bytes.Length);
  7.     this.inst.Log(Installation.LogType.info, "Check activation end, ErrCode :" + codes.ToString());
  8.     if (codes == ErrorCodes.ERR_OK)
  9.     {
  10.         return 1;
  11.     }
  12.     return 1;
  13. }


Как сделать просто return 1;
Пробую через reflexil и снова куча ошибок



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 13 января 2012 18:16
· Личное сообщение · #8

менять нужно n в CheckActivation и\или CommitActivation
сгенерировать новый можно например в RSATool2v17 длинна 1016
Вычисляешь string str5 = new BigInteger(MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(s))).ToHexString();
и шифруешь с новыми n,d
пример использования BigInteger: http://www.codeproject.com/KB/cs/biginteger.aspx
там где-то в середине Asymmetrical encryption and decryption.



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

Создано: 13 января 2012 19:29
· Личное сообщение · #9

Вот сижу час уже пытаюсь понять.
http://dl.dropbox.com/u/4055375/Source/RSA.PNG - с ключами я так монимаю вот так?

Вот моя наработка: http://dl.dropbox.com/u/4055375/Source/hackvhd.zip - я на правильном пути?

Спасибо.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 13 января 2012 19:46
· Личное сообщение · #10

ZanMax пишет:
с ключами я так монимаю вот так?

В rsatool Public Exponent (E)= 6AAA03A3(1789526947)



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

Создано: 13 января 2012 19:56
· Личное сообщение · #11

Если пишу на место Public Exponent (E) = 6AAA03A3
Выдает что :
Public exponent is not relatively prime to (p-1)(q-1)!
Try again with other primes or choose a different value for E.
Ставлю 1789526947 все нормально. Хотя там вроде в HEX нужно?



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

Создано: 13 января 2012 20:05 · Поправил: R10T
· Личное сообщение · #12

Для восстановления VHD подойдет практически любой софт для восстановления данных способный работать с файлами-образами – UFS Explorer, r-Studio, winhex, MediaHeal for Virtual Drives!



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 13 января 2012 20:38 · Поправил: Vovan666
· Личное сообщение · #13

ZanMax пишет:
Ставлю 1789526947 все нормально. Хотя там вроде в HEX нужно?

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

Посмотри еще длл-ки в папке, там в некоторых тоже используется RSA



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

Создано: 14 января 2012 02:23
· Личное сообщение · #14

Установил 1789526947 все сгенерировал.
Пытаюсь теперь через BigInteger шифровать как в статье написано:

Code:
  1. public static void Main(string[] args)
  2. {
  3.     // private and public key
  4.  
  5.     BigInteger bi_e = new BigInteger(
  6.         "a932b948feed4fb2b692609bd22164fc9edb" +
  7.         "59fae7880cc1eaff7b3c9626b7e5b241c27a" +
  8.         "974833b2622ebe09beb451917663d4723248" +
  9.         "8f23a117fc97720f1e7", 16);
  10.  
  11.     BigInteger bi_d = new BigInteger(
  12.         "4adf2f7a89da93248509347d2ae506d683dd" +
  13.         "3a16357e859a980c4f77a4e2f7a01fae289f" +
  14.         "13a851df6e9db5adaa60bfd2b162bbbe31f7" +
  15.         "c8f828261a6839311929d2cef4f864dde65e" +
  16.         "556ce43c89bbbf9f1ac5511315847ce9cc8d" +
  17.         "c92470a747b8792d6a83b0092d2e5ebaf852" +
  18.         "c85cacf34278efa99160f2f8aa7ee7214de07b7", 16);
  19.  
  20.     BigInteger bi_n = new BigInteger(
  21.         "e8e77781f36a7b3188d711c2190b560f205a" +
  22.         "52391b3479cdb99fa010745cbeba5f2adc08" +
  23.         "e1de6bf38398a0487c4a73610d94ec36f17f" +
  24.         "3f46ad75e17bc1adfec99839589f45f95ccc" +
  25.         "94cb2a5c500b477eb3323d8cfab0c8458c96" +
  26.         "f0147a45d27e45a4d11d54d77684f65d48f1" +
  27.         "5fafcc1ba208e71e921b9bd9017c16a5231af7f", 16);
  28.  
  29.     Console.WriteLine("e =\n" + bi_e.ToString(10));
  30.     Console.WriteLine("\nd =\n" + bi_d.ToString(10));
  31.     Console.WriteLine("\nn =\n" + bi_n.ToString(10) + "\n");
  32.  
  33.     // data
  34.  
  35.     BigInteger bi_data = new BigInteger(
  36.         "12345678901234567890", 10);
  37.  
  38.     // encrypt and decrypt data
  39.  
  40.     BigInteger bi_encrypted = bi_data.modPow(bi_e, bi_n);
  41.     BigInteger bi_decrypted = bi_encrypted.modPow(
  42.         bi_d, bi_n);
  43.  
  44.     Console.WriteLine("bi_data = " + bi_data);
  45.     Console.WriteLine("\nbi_encrypted =\n" + bi_encrypted);
  46.     Console.WriteLine("\nbi_decrypted = " + bi_decrypted);
  47. }


Но постоянно вываливает :
Code:
  1. Invalid string in constructor.

В класе : BigInteger
Мой сорс: http://dl.dropbox.com/u/4055375/Source/hackvhd.zip

Что делаю не так?

Тыпался востанавливтаь как рекомендовали :
UFS Explorer - не помог.
r-Studio - файлы показал но востановил тольк *.тхт и то не все.
winhex - не помог
MediaHeal for Virtual Drives - вот мы ее и розбираем.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 14 января 2012 02:52
· Личное сообщение · #15

ZanMax пишет:
Но постоянно вываливает :
Code:

Invalid string in constructor.


В исходнике
BigInteger bi_data = new BigInteger(textBox2.Text, 10); в твоем случае должно быть 16 или 256



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

Создано: 14 января 2012 04:07 · Поправил: ZanMax
· Личное сообщение · #16

Заменил все:
Code:
  1. public ErrorCodes CheckActivation(string key, byte[] enc_data, int enc_data_size)
  2.     {
  3.         try
  4.         {
  5.             string str = "";
  6.             this.CheckKey(key, ref str);
  7.             key = str;
  8.             string hid = "";
  9.             this.GenerateHID(ref hid);
  10.             this.Log(string.Format("HID = {0}", hid));
  11.             string str3 = Encoding.ASCII.GetString(enc_data).TrimEnd(new char[1]).Trim();
  12.             this.CheckKey(str3, ref str);
  13.             str3 = str;
  14.             string s = "";
  15.             s = string.Format("{0}{1}", key, hid);
  16.             string str5 = new BigInteger(MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(s))).ToHexString();
  17.             BigInteger n = new BigInteger("367142187071184706361774726291991270545000444637786873551977878255931555506549651630186726720902592074830018485800639474365960990977540128971078784810967152836109152139678961763014344178224072611838583986160148129387071523180479426077102740677178713905299691800784730113617059198121034688306118023576587953", 10);
  18.             BigInteger exp = new BigInteger("1789526947", 10);
  19.             char[] sOut = new char[0];
  20.             xNumber number = new xNumber();
  21.             number.ConvertTo(str3.ToCharArray(), 0x3e, 10, ref sOut, 0);
  22.             BigInteger integer4 = new BigInteger(number.CharToString(sOut), 10);
  23.             string str7 = integer4.modPow(exp, n).ToHexString().TrimStart(new char[] { '0' });
  24.             str5 = str5.TrimStart(new char[] { '0' });
  25.             if (str7 != str5)
  26.             {
  27.                 this.Log("[ERROR]: Crypted string is not compatible");
  28.                 return ErrorCodes.ERR_RSA;
  29.             }
  30.             return ErrorCodes.ERR_OK;
  31.         }
  32.         catch (ActException exception)
  33.         {
  34.             this.Log("[ERROR]: CheckActivation: ActException was caught");
  35.             return exception.GetErrorCode();
  36.         }
  37.         catch (Exception)
  38.         {
  39.             this.Log("[ERROR]: CheckActivation: System.Exception was caught");
  40.             return ErrorCodes.ERR_UNKNOWN_ERROR;
  41.         }
  42.     }


на свой ключ:

Code:
  1. 367142187071184706361774726291991270545000444637786873551977878255931555506549651630186726720902592074830018485800639474365960990977540128971078784810967152836109152139678961763014344178224072611838583986160148129387071523180479426077102740677178713905299691800784730113617059198121034688306118023576587953


Сгенереировал как с 16 так и с 256 теперь заработало.
Как теперь сгенерировать ключ?
Или что еще нужно изменить?

Что еще заметил. Он берет еще один ключ из mhv.xml
Там в конце файла есть:

Code:
  1. <User desc="User (read/write) resources.">
  2.       <Activation desc="Activation-related data.">
  3.         <Key desc="Activation key.">
  4.         </Key>
  5.         <Name desc="Licensee's name.">
  6.         </Name>
  7.         <Company desc="Licensee's company.">
  8.         </Company>
  9.         <Activation desc="Activation server response.">
  10.         </Activation>
  11.       </Activation>
  12.       <Options desc="Product option profiles.">
  13.         <Default desc="Default profile.">
  14.         </Default>
  15.       </Options>
  16.     </User>
  17.   </Signed>
  18.   <Signature desc="Digital signature of the Signed part.">2FDF8436EF32DC5BCDD32848447A45BD3D27817155950F4F789760342025A3D06A247B83725A3C6E191412F991FF72B62EB09F4A21AD1CD35028B593353AA07</Signature>
  19. </mhv>


Так же если изменяю этот ключ то ругаеться что проблемы с XML и наоборот:
Code:
  1.  protected const string address = "www.officerecovery.com";
  2.     protected const string internal_error_text = "Could not connect to the activation server. Check your internet connection and try again or switch to a different activation method.";
  3.     private _LogCallback log;
  4.     private Socket m_socket;
  5.     private TcpClient m_tcp_client;
  6.     protected const string mask = "GET /cgi-bin/disp/dispatcher.php?v=1&a={0};{1};{2} HTTP/1.1\r\nHost: www.officerecovery.com\r\n\n";
  7.     private const string module = "683710061796561017376621154464674554311060067547855695881376302837884918923005980007762166721939811597479204126018165714006955910094773990879451152598700401830066412451733631464005846498486978002499487559179045514585923745070183318232807634199182201879508418103282412167265190968957134324412430232186338769";
  8.     protected const int port = 80;
  9.     private const string pub_key = "1789526947";
  10.     protected const string rsa_error_text = "Activation failed due to internal problems: returned activation string is incorrect.";
  11.     protected const int WAIT_TIMEOUT = 0x4e20;


Спасибо большое. Уж очень охота разобраться до конца.



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

Создано: 16 января 2012 13:08
· Личное сообщение · #17

Vovan666 Очень прошу помочь.
нужны файлы и ничем не могу восстановить.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 16 января 2012 13:52
· Личное сообщение · #18

А чем я могу помочь, у меня даже vhd нету для теста, всё что писалось выше чистая теория основанная на исходниках. Хотя судя по наличию mhdemo.dll прога может быть просто кастрирована и ковырять ее смысла нету.


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


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