Сейчас на форуме: bartolomeo, -Sanchez-, morgot, sashalogout (+4 невидимых)

 eXeL@B —› Софт, инструменты —› Hex-Rays IDA Pro 7.5
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 14 . 15 . >>
Посл.ответ Сообщение


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

Создано: 28 сентября 2017 05:38 · Поправил: Модератор
· Личное сообщение · #1

Текущая версия: IDA 7.5 sp1

IDA 7.2

Установщик:
x64_idapronw_hexx64w_181105_de455c480e11ef1ec91473028f4dd175.exe

Пароль для установки:
7JpT48a7Y2fv

Plugins
Полный набор патченных плагинов от IDA 7.0 для IDA 7.2
https://mega.nz/#!kXxnUagZ!eCDn7iNaXTK88R5mdJERAhYF2z8QwIy8g7A4OGAZLdk

IDA Pro 7.0

IDA Pro 7.0.170914 WIN\MAC x64 + Hex-Rays Decompilers (x86, x64, ARM, ARM64)

Год Выпуска: 2017
Версия: 7.0.170914
Разрядность: 64bit

Имена архивов

macOS
- x64_idapronm_hexarm64m_hexarmm_hexx64m_hexx86m_170914_e723c5648dc3f2f588ab8339ccf62ec0.zip

Windows
- x64_idapronw_hexarm64w_hexarmw_hexx64w_hexx86w_170914_e723c5648dc3f2f588ab8339ccf62ec0.exe


Code:
  1. magnet:?xt=urn:btih:169DFE1E10161FFA82B786BF89F05AEA6BCD4510


| Сообщение посчитали полезным: zNob, -=AkaBOSS=-, VodoleY, yashechka, CyberGod, sefkrd, hoyux, TryAga1n, plutos, ClockMan, bbuc, mak, DenCoder, Gideon Vi, Veliant, Medsft, BlackCode, TRPD, Vintersorg, LinXP, mushr00m, kurorolucifer, MacTep, raiser, negoday, Tony_Stark, Apocalypse, ELF_7719116, DICI BF, mkdev, g4bi, AliS S0fT, NoRG, oooirbis, SReg, darsy, tRuNKator, topmo3, Jks111, HandMill, ALSSL, d745150, mohamedhk2, Isaev


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 22 июня 2019 07:34 · Поправил: plutos
· Личное сообщение · #2

Ильфак радуется: сломали инсталлятор!



-----
Give me a HANDLE and I will move the Earth.




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

Создано: 22 июня 2019 15:18 · Поправил: Dart Raiden
· Личное сообщение · #3

Они просто сгенерировали все возможные комбинации (длина и набор символов известны по утечкам) и брутили?
Дистрибутив 7.2 есть в паблике, дерзайте.




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 22 июня 2019 15:20
· Личное сообщение · #4

Dart Raiden пишет:
Они просто сгенерировали все возможные комбинации (длина и набор символов известны по утечкам) и брутили?

Сгенерили словарик и сбрутили, брут занял 10 мин

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 22 июня 2019 15:31 · Поправил: f13nd
· Личное сообщение · #5

Ну да, интересное решение, определить какой гпсч используется по известным паролям и перебрать 2^32 значений random seed, вместо того, чтобы перебирать 54^12 комбинаций пароля вообще.

-----
2 оттенка серого




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

Создано: 22 июня 2019 16:04 · Поправил: fedik
· Личное сообщение · #6

2^32 * 12 / 1000000
50 gig dict
ну чё разшаримся? я один гиг уже нагенерил
хто пишет инжект в инсталлер Иды?
edit
4gig nau!




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 22 июня 2019 16:08 · Поправил: ClockMan
· Личное сообщение · #7

fedik пишет:
ну чё разшаримся? я один гиг уже нагенерил

Ты с начало сгенерь пароль от старых версий))) а то насобираешь 50 гигов мусора

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




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

Создано: 22 июня 2019 16:16
· Личное сообщение · #8

хе ))) ну я попробовал ))
их пример выходит с их сидом



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

Создано: 22 июня 2019 16:16 · Поправил: Dart Raiden
· Личное сообщение · #9

Инсталляторы версий 6.7 и 7.2, пароль от которых неизвестен
https://yadi.sk/d/IdCDtcD08k5vkA (пароль подобран)
https://yadi.sk/d/Co3mRKJDc0wqow

можно потренироваться и сделать полезное дело одновременно

7.0 с известным паролем
https://yadi.sk/d/plY3clalvsfl0Q



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

Создано: 22 июня 2019 16:25
· Личное сообщение · #10

когда ждать пароль а то только подразнили))



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

Создано: 22 июня 2019 16:40
· Личное сообщение · #11

004D9C7B | E8 7C7EFAFF | call x64_idapronw_hexx64w_181105_de455c480e11ef1ec91473028f4dd175.481AFC | pw in unicode after the call in EBX
004D9C80 | BA E49C4D00 | mov edx,x64_idapronw_hexx64w_181105_de455c480e11ef1ec91473028f4dd175.4D9CE4 | 4D9CE4:"PasswordCheckHash"

Добавлено спустя 1 час 8 минут
ClockMan пишет:
а то насобираешь 50 гигов мусора

и всё таки умудрился сделать ошибку в скрипте и нагенерил 20 гиг мусора

Добавлено спустя 1 час 19 минут
ой а ничё инжектить не надо, хэшкэт поддерживает инно




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

Создано: 22 июня 2019 18:09 · Поправил: UniSoft
· Личное сообщение · #12

fedik пишет:
их пример выходит с их сидом

только их пример и выходит, ни один другой пароль не генерится...
да и вообще, кто сказал что используется PRNG... а может MD5? а может это BASE64?
Вариантов еще больше, чем комбинаций самого пароля.

А пример из статьи, только на СИ...
перебор всех значений seed около 2 минут.
Code:
  1. #include "stdafx.h" 
  2.  
  3. const char charset[] = "abcdefghijkmpqrstuvwxyzABCDEFGHJKLMPQRSTUVWXYZ23456789";
  4.  
  5. // http://web.mit.edu/cgs/src/math/drand48/drand48.
  6. #define N    16 
  7. #define MASK    ((unsigned)(1 << (- 1)) + (1 << (- 1)) - 1) 
  8. #define LOW(x)    ((unsigned)(x) & MASK) 
  9. #define HIGH(x)    LOW((x) >> N) 
  10. #define MUL(x, y, z)    { long l = (long)(x) * (long)(y); (z)[0] = LOW(l); (z)[1] = HIGH(l); }
  11. #define CARRY(x, y)    ((long)(x) + (long)(y) > MASK) 
  12. #define ADDEQU(x, y, z)    (= CARRY(x, (y)), x = LOW(+ (y))) 
  13. #define X0    0x330E 
  14. #define X1    0xABCD 
  15. #define X2    0x1234 
  16. #define A0    0xE66D 
  17. #define A1    0xDEEC 
  18. #define A2    0x5 
  19. #define C    0xB 
  20. #define SET3(x, x0, x1, x2)    ((x)[0] = (x0), (x)[1] = (x1), (x)[2] = (x2)) 
  21. #define SETLOW(x, y, n) SET3(x, LOW((y)[n]), LOW((y)[(n)+1]), LOW((y)[(n)+2])) 
  22. #define SEED(x0, x1, x2) (SET3(x, x0, x1, x2), SET3(a, A0, A1, A2), c = C) 
  23. #define REST(v)    for (= 0; i < 3; i++) { xsubi[i] = x[i]; x[i] = temp[i]; } return (v);
  24. #define NEST(TYPE, f, F)    TYPE f(xsubi) register unsigned short *xsubi; { \
  25.     register int i; register TYPE v; unsigned temp[3]; \
  26.     for (= 0; i < 3; i++) { temp[i] = x[i]; x[i] = LOW(xsubi[i]); } \
  27.     v = F(); REST(v); }
  28. #define HI_BIT    (1L << (2 * N - 1)) 
  29.  
  30. static unsigned x[3] = { X0, X1, X2 }, a[3] = { A0, A1, A2 }, c = C;
  31.  
  32. static void next() 
  33.     unsigned p[2], q[2], r[2], carry0, carry1;
  34.  
  35.     MUL(a[0], x[0], p);
  36.     ADDEQU(p[0], c, carry0);
  37.     ADDEQU(p[1], carry0, carry1);
  38.     MUL(a[0], x[1], q);
  39.     ADDEQU(p[1], q[0], carry0);
  40.     MUL(a[1], x[0], r);
  41.     x[2] = LOW(carry0 + carry1 + CARRY(p[1], r[0]) + q[1] + r[1] + a[0] * x[2] + a[1] * x[1] + a[2] * x[0]);
  42.     x[1] = LOW(p[1] + r[0]);
  43.     x[0] = LOW(p[0]);
  44.  
  45. double drand48() 
  46. #if pdp11 
  47.     static double two16m; /* old pdp11 cc can't compile an expression */
  48.     two16m = 1.0 / (1L << N); /* in "double" initializer! */
  49. #else 
  50.     static double two16m = 1.0 / (1L << N);
  51. #endif 
  52.  
  53.     next();
  54.     return (two16m * (two16m * (two16m * x[0] + x[1]) + x[2]));
  55.  
  56. void srand48(long seedval) 
  57.     SEED(X0, LOW(seedval), HIGH(seedval));
  58.  
  59. int main(int argc, _TCHAR* argv[]) 
  60.     char pw[13];
  61.  
  62.     // Get the code as in article "FgVQyXZY2XFk" 
  63.     srand48(3326487116);
  64.     for (int i = 0; i < 12; i++)
  65.     { 
  66.         int key = (int)(drand48() * 54);
  67.         pw[i] = charset[key];
  68.     } 
  69.     pw[12] = 0;
  70.     printf("pw = %s\r\n", pw);
  71.  
  72.     // Now try to bruteforce for another password(s) and fail 
  73.     for (long seed = 0; seed != 0xFFFFFFFF; seed++)
  74.     { 
  75.         srand48(seed);
  76.  
  77.         // qY2jts9hEJGy 
  78.         if (charset[(int)(drand48() * 54)] != 'q') continue;
  79.         if (charset[(int)(drand48() * 54)] != 'Y') continue;
  80.         if (charset[(int)(drand48() * 54)] != '2') continue;
  81.         if (charset[(int)(drand48() * 54)] != 'j') continue;
  82.         if (charset[(int)(drand48() * 54)] != 't') continue;
  83.         if (charset[(int)(drand48() * 54)] != 's') continue;
  84.  
  85.         // 7ChFzSbF4aik 
  86. //         if (charset[(int)(drand48() * 54)] != '7') continue;
  87. //         if (charset[(int)(drand48() * 54)] != 'C') continue;
  88. //         if (charset[(int)(drand48() * 54)] != 'h') continue;
  89. //         if (charset[(int)(drand48() * 54)] != 'F') continue;
  90. //         if (charset[(int)(drand48() * 54)] != 'z') continue;
  91. //         if (charset[(int)(drand48() * 54)] != 'S') continue;
  92.  
  93.         for (int i = 0; i < 6; i++)
  94.             pw[i] = charset[(int)(drand48() * 54)];
  95.  
  96.         pw[6] = 0;
  97.         printf("pw = qY2jts%s [ seed: %d ]\r\n", pw, seed);
  98.     } 
  99.  
  100.     wprintf(L"Press any key...\r\n");
  101.     getwchar();
  102.     return 0;
  103. }


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


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

Создано: 22 июня 2019 18:12 · Поправил: difexacaw
· Личное сообщение · #13

Я тут глянул, в 6.7 хэш вычисляется в стековый буфер, копируется в есчо один буфер 0x430ED0, затем сравнивается:

Code:
  1. 0047904E mov edx,0049C2DC
  2. 00479053 lea eax,dword ptr ss:[esp+19C]
  3. 0047905A call 00431154


После чего буфер и хэш в нём уничтожаются, тоесть в результате получается только условие что хэш верен. Если по 46B463 вернуть TRUE, то пасс принимается, но затем при распаковке файлов есчо хэши вычисляются, но я не смотрел от чего. Вероятно что ничего брутить не нужно.

-----
vx





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

Создано: 22 июня 2019 18:22 · Поправил: UniSoft
· Личное сообщение · #14

difexacaw
Исходники InnoSetup открыты, там нет ничего сверхъестественного.
Единственный вариант это верный пароль, других вариантов не существует!!!
Файлы сжаты, потом зашифрованы, ключем на базе хэша пароля и 8-ми байтного salt (который уникален для каждого файла).
Есть процедура проверки пароля:
SHA1("PasswordCheckHash" + C41639792846E456 + UNICODE(password)) == F29F55F07C043AD34B3DE150501535F44424EDAD
это в утекшей 7.2 парооль в unicode, в более ранних версиях ansi

вот как файл шифруется
https://github.com/jrsoftware/issrc/blob/bc670b6b6be9e03ce645235a258761ac499348b3/Projects/Compile.pas#L1573

а вот дешифровка
https://github.com/jrsoftware/issrc/blob/e7d8563af77ba49700b6615649d4b3c6f8b62af7/Projects/Extract.pas#L191

а вот собственно проверка пароля
https://github.com/jrsoftware/issrc/blob/455529261dca8c7683d81b5fed06985150f31814/Projects/Main.pas#L361

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

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

Создано: 22 июня 2019 18:44
· Личное сообщение · #15

UniSoft пишет:
только их пример и выходит, ни один другой пароль не генерится...

а ты уже пробовал? и в 50 гигах не было даже коллизий?

Добавлено спустя 2 минуты
это конешн смущяет, тогда пусь другие брутят...




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

Создано: 22 июня 2019 20:17
· Личное сообщение · #16

fedik

> хто пишет инжект в инсталлер Иды?

Приаттачил отладчик, вставил простейшую процедуру перебора 60 символов:

Code:
  1. Local Buffer[256]:BYTE
  2.          xor eax,eax
  3.          lea edi,Buffer
  4.          mov ecx,256/4
  5.          rep stosd
  6.          
  7.          xor esi,esi
  8. L2:
  9.          inc esi
  10.          mov Buffer[esi][-1],20H
  11.          mov Buffer[esi],0
  12.          xor edi,edi
  13. L1:
  14.          lea eax,Buffer
  15.          ; call idapronw.00478FFC
  16.          db 5 dup (90H)
  17.          .if Eax
  18.                  int 3
  19.          .endif
  20.          inc Buffer[edi]
  21.          cmp Buffer[edi],80H
  22.          jb L1
  23. L3:
  24.          mov Buffer[edi],20H
  25.          inc edi
  26.          cmp edi,esi
  27.          je L2
  28.          inc Buffer[edi]
  29.          cmp Buffer[edi],80H
  30.          je L3
  31.          xor edi,edi
  32.          jmp L1


Под варей скорость - 12.4М символа/мин(60^4), что очень мало. Это получается что 6 символов будет крутить 2.5суток. По нормальному это нужно сделать из ядра - при проверке нет сервисных вызовов, а значит можно закрепить рабочий набор и отключить планирование(прерывания), что бы проц ничем другим не занимался.

-----
vx


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


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 22 июня 2019 20:17
· Личное сообщение · #17

UniSoft
Code:
  1. pw[i] = charset[(int)(drand48() * 54)];

А это точно правильно? В приведенном алгоритме был остаток от деления на 54 очередного значения гпсч и выборка из таблицы по этому остатку.

-----
2 оттенка серого




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

Создано: 22 июня 2019 20:23
· Личное сообщение · #18

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

классика жанра, Инди, жги больше




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

Создано: 22 июня 2019 20:27
· Личное сообщение · #19

fedik

А как иначе сделать, с чего вы решили вообще что механизм вычислений одинаков как в каких то сурках, это же бинарь. Нужно эту процедуру всю реверсить, автор мог любую операцию изменить и все переборы на основе сурков станут бесполезными.

-----
vx




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

Создано: 22 июня 2019 20:31 · Поправил: fedik
· Личное сообщение · #20

difexacaw
перебирать словарик надо, а не гигатон букав, грибник ты мой
было




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

Создано: 22 июня 2019 20:35 · Поправил: difexacaw
· Личное сообщение · #21

fedik

Что за словарь, объясните. Вот к примеру есть в бинаре некоторая процедура, которая вычисляет как то хэш и проверяет его. На входе могут быть любые печатные символы. Как мне прикрутить словарь ?

-----
vx




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

Создано: 22 июня 2019 20:48 · Поправил: fedik
· Личное сообщение · #22

difexacaw
чё серьёзна? в том весь и прикол, шо пароли генерились перл скриптом, а там прнг видать сидился 4? байтами только
потом 12 ранд вызовов, букавки генерить, но оно то на то и Прнг шо не тру ранд
вот и выходит, шо кол.во паролей == кол.во сидов

Добавлено спустя 11 минут
54 <- вот это ещё можно побалтать до 63




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

Создано: 22 июня 2019 21:02
· Личное сообщение · #23

f13nd пишет:
А это точно правильно? В приведенном алгоритме был остаток от деления на 54 очередного значения гпсч и выборка из таблицы по этому остатку.

там в статье приведен пример на perl...
Code:
  1. #!/usr/bin/env perl
  2. #
  3. @_e = split //,"abcdefghijkmpqrstuvwxyzABCDEFGHJKLMPQRSTUVWXYZ23456789";
  4.  
  5. $i=3326487116;
  6. srand($i);
  7. $pw="";
  8.  
  9. for($i=0;$i<12;++$i)
  10. {
  11.         $key = rand 54;
  12.         $pw = $pw . $_e[$key];
  13. }
  14. print "$i $pw\n";

не видно операнда...
но а так как в perl (не считая старые версии, где использовался стандартный (stdlib) сишный srand) используется drand48 алгоритм, который возвращает double от 0 до 1, то тут подойдет только умножение.
И да, указанный пароль получается, а вот другие нет...
Если бы, было не правильно, то и результат бы не совпал.

fedik пишет:
а ты уже пробовал? и в 50 гигах не было даже коллизий?

А из исходника разве не видно?
ну там конечно же не все возможные варианты перебираются,
ведь в drand48, seed по факту 48-бит, хотя аргумент в функцию srand48() передается 32-битный.
и по идее надо перебирать весь диаппазон.
Но 48 бит, это уже слишком...
если перебор 32-бит занимает около 2 мин, то перебор 48-бит уже займет 91 день.




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 22 июня 2019 21:08
· Личное сообщение · #24

UniSoft пишет:
не видно операнда...

В сишном видно
Code:
  1. int key= rand() % 54;

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

-----
2 оттенка серого





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

Создано: 22 июня 2019 21:44
· Личное сообщение · #25

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

не надо путать double и int
сишный rand() возвращает int (0..32767), а drand48() double (0..1.0)
так что (drand48() % 54) даст вам либо 0, либо (ну очень редко) 1 и все.
почитайте для начала: https://rosettacode.org/wiki/Category:Perl
я дал исходник, на си... играйтесь, пробуйте ставьте, что считаете нужным.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 22 июня 2019 22:04
· Личное сообщение · #26

difexacaw
По нормальному это нужно сделать из ядра - при проверке нет сервисных вызовов, а значит можно закрепить рабочий набор и отключить планирование(прерывания), что бы проц ничем другим не занимался

Не, ну я догадывался, что вы наркоман. Но не думал, что героиновый.

-----
Stuck to the plan, always think that we would stand up, never ran.


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


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 22 июня 2019 22:16 · Поправил: f13nd
· Личное сообщение · #27

UniSoft пишет:
почитайте для начала

Да я сам перл посмотрел, в принципе да, берет 32-битное значение, двигает влево на 16 бит помещает 0x330E в младшие разряды, в дальнейшем еще раз обрабатывает и использует как qword с плавающей точкой. На 54.0 умножает, округляет в меньшую сторону и использует как индекс.

-----
2 оттенка серого





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

Создано: 22 июня 2019 22:49 · Поправил: difexacaw
· Личное сообщение · #28

ARCHANGEL

Если символов немного то пасс быстро найдётся. Нет смысла спрашивать что делать если нет сурков. А для начала нужно доказать что там алгосы стандартные(размер TestPassword() 1к без каких либо импортов). Вот я сдампил эту процедуру, уточни что это именно то что в сурках.

0b13_22.06.2019_EXELAB.rU.tgz - Dmp.7z

-----
vx





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

Создано: 22 июня 2019 23:06
· Личное сообщение · #29

difexacaw пишет:
что это именно то что в сурках.

Я перефразирую ARCHANGEL
Плуг тяжёлый?




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

Создано: 22 июня 2019 23:24 · Поправил: difexacaw
· Личное сообщение · #30

sefkrd

Не знаю что это значит. Я бы если бы эти инсталлы юзал, изменил бы алго, зная что это стандартные криптоалго. Что бы по базам хэшей не нашли, сломать предыдущие наработки по взлому и тп. Глупо было бы опенсорс не пофиксить.

-----
vx




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

Создано: 23 июня 2019 01:00
· Личное сообщение · #31

никто не хоче посортировать 60 гиг стрингов по их хэмминг дистанции?


<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 14 . 15 . >>
 eXeL@B —› Софт, инструменты —› Hex-Rays IDA Pro 7.5
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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