Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2017.04.23;
Скачать: [xml.tar.bz2];

Вниз

Есть у нас спецы по гуглевскому Blogger?   Найти похожие ветки 

 
Rouse_ ©   (2016-04-08 10:34) [0]

Ситуация конечно вообще дикая.
Короче вчера с Женькой сидели вычитывали статью по поводу виртуальной машины, над которой я бился почти 3 месяца. Правили некоторые моменты.
А там в этом вебинтерфейсе есть такая штука - автосохранение (раз в минуту чтоль).
Ну короче что-то мы там не то подправили и я нажал CTRL+Z пару раз.
В итоге похоже нажал лишний раз и статья полностью очистилась (до чистого листа) и буквально через секунду сработало это автосохранение.
А команды REDO у них нет.
И вот собственно говоря у меня есть только заголовок статьи без текста.

Вопрос:
Как и с кем связаться чтоб мне восстановили текст статьи? Я вчера облазил весь этот блогер и так и не смог найти адрес технической подержки, чтоб помогли мне в этом. Я ж точно знаю что они хранят всю историю изменений - но вот как бы это сделать?

Подскажите - люди добрые :)


 
DayGaykin ©   (2016-04-08 11:05) [1]

Поздно, конечно, наверное, но у меня кнопка Redo доступна и после автосохранения. Только что проверил.


 
pavelnk ©   (2016-04-08 11:48) [2]

Как вариант посмотреть в гугле старую версию статьи. В поиске.


 
Rouse_ ©   (2016-04-08 11:57) [3]

я не публиковал - в кеше нет - проверял


 
KSergey ©   (2016-04-08 13:04) [4]

Только локальный ворд.
Только 10 копий.

PS
Примириться и переписать заново, но уже лучше. Это шанс.


 
KilkennyCat ©   (2016-04-08 13:39) [5]

support@blogger.com - по крайней мере, с него приходят.


 
Rouse_ ©   (2016-04-08 14:29) [6]


> KilkennyCat ©   (08.04.16 13:39) [5]

спс, попробую


 
Rouse_ ©   (2016-04-19 16:05) [7]

Ладно, не восстановили мне тест статьи - буду писать с нуля.
А пока что вот подготовленные к публикации исходники: https://dl.dropboxusercontent.com/u/70911765/vm_core_demo.zip
Чтоб VM заработала в полную силу - собирать в релизе (тогда включатся инлайны).
Тестировал на Delphi 2010 - ниже не пробовал.

Если у кого будут вопросы - пишите прямо сюда, буду по ходу объяснять что там такое творится и как оно вообще такой код генерирует.


 
Pavia ©   (2016-04-19 16:24) [8]

Хочу "крякми.exe", а то у меня в командировки и с инклюдами туго.

Странная у вас ВМ. Не понимаю что она даёт? Мне казалось цель ВМ
1) запутать сравнение.
2) сделать большую задержку, что-бы нельзя было сделать генератор.
Не первого не второго в коде не вижу.


 
ttUser ©   (2016-04-19 17:06) [9]

Розыч, ты лучше скажи - VMProtect стоящая вещь или нельзя полагаться?
А то нужно написать защиту, но времени как ты заморачиваться нет и опыта нету.


 
Rouse_ ©   (2016-04-19 19:05) [10]


> Pavia ©   (19.04.16 16:24) [8]
> Хочу "крякми.exe", а то у меня в командировки и с инклюдами
> туго.
>
> Странная у вас ВМ. Не понимаю что она даёт? Мне казалось
> цель ВМ
> 1) запутать сравнение.
> 2) сделать большую задержку, что-бы нельзя было сделать
> генератор.
> Не первого не второго в коде не вижу.

И то и то в коде есть - смотри на кодонегерацию - на асм выхлоп.


> ttUser ©   (19.04.16 17:06) [9]
> Розыч, ты лучше скажи - VMProtect стоящая вещь или нельзя
> полагаться?

Начиная с третьей версии стоящая, но только если не включать режим просто мутации кода - мутация у нее по сравнении с двойкой слабая.
Используй виртуализацию или режим - ультра.


 
Rouse_ ©   (2016-04-19 19:06) [11]


> Pavia ©   (19.04.16 16:24) [8]
> Хочу "крякми.exe", а то у меня в командировки и с инклюдами
> туго.

А, по поводу крякми - лови: http://www.crackmes.de/users/rouse/keygenme_1/
Это на базе данного движка сделано.


 
Rouse_ ©   (2016-04-19 19:08) [12]

ЗЫ: не обращай внимания то что там С++ написано - ядро одинаковое (но да - в этом случае было собрано на си).


 
Rouse_ ©   (2016-04-19 19:12) [13]

ЗЗЫ: будешь анализировать - чтоб не искать - начало работы VM с адреса 00401270


 
Rouse_ ©   (2016-04-19 19:15) [14]

На вот тебе для помощи алгоритм этого кейгенми, чтоб показать как там все работало:

void checkSerial()
{
char login[9];
char serial[31];
INT8 login_len = 0;
Peirce::MACRO_MOV8((INT8)SendMessageA(hEdLogin, WM_GETTEXT, 9, (LPARAM)(&login)), &login_len);

SendMessageA(hEdSn, WM_GETTEXT, 31, (LPARAM)(&serial));

BOOL badCode;
Peirce::MACRO_MOVB(false, &badCode);

INT8 outRes[5];
Peirce::MACRO_MOV8(0, &outRes[4]);

INT16 crc, tmpCrc;
Sheffer::MACRO_MOV16(0, &crc);

// рассчитываем контрольную сумму серийника
for (int i = 0; i < 26; i = (int)Sheffer::MACRO_INC(i))
{
 Peirce::MACRO_MOV16((INT16)serial[i], &tmpCrc);
 Sheffer::MACRO_MOV16((INT16)Peirce::vmMul(tmpCrc, i + 1), &tmpCrc);
 Peirce::MACRO_MOV16((INT16)Sheffer::MACRO_ADD(crc, tmpCrc), &crc);
}

// берем контрольное значение с конца серийника
INT16 snCrc;
Sheffer::MACRO_MOV16((BYTE)char2int((BYTE*)&serial[26]), &snCrc);
Sheffer::MACRO_MOV16(Peirce::MACRO_SHL16(snCrc, 8), &snCrc);
Peirce::MACRO_MOV16((INT16)Sheffer::MACRO_ADD(snCrc, (BYTE)char2int((BYTE*)&serial[28])), &snCrc);

// и проверяем
Peirce::MACRO_MOVB(Sheffer::MACRO_JMPNE(Peirce::MACRO_CMP16(snCrc, crc)), &badCode);

// рассчитываем старшую часть серийника
INT8 start_value;
Sheffer::MACRO_MOV8((BYTE)char2int((BYTE*)&serial[8]), &start_value);
 
Peirce::MACRO_MOVB((BOOL)Peirce::MACRO_IFTHEN(true, badCode,
 Sheffer::MACRO_JMPZ(Peirce::MACRO_CMP8(start_value, 0))), &badCode);

INT32 sn, tmpLoginByte;
Peirce::MACRO_MOV32((INT32)start_value, &sn);
for (int i = 0; i < login_len; i = (int)Sheffer::MACRO_INC(i))
{
 Peirce::MACRO_MOV32((BYTE)login[i], &tmpLoginByte);
 Peirce::MACRO_MOV32((INT32)Sheffer::MACRO_SHL32(tmpLoginByte, 1), &tmpLoginByte);
 Sheffer::MACRO_MOV32((INT32)Peirce::vmMul(sn, tmpLoginByte), &sn);
 Peirce::MACRO_MOV32((INT32)Sheffer::MACRO_XOR(sn, start_value), &sn);
}

// теперь проверяем его с тем что записано в самом серийнике
INT8 byteCalculated, byteSn;
Peirce::MACRO_MOV8((BYTE)Sheffer::MACRO_SHR32(sn, 24), &byteCalculated);
Peirce::MACRO_MOV8((BYTE)char2int((BYTE*)&serial[0]), &byteSn);
Peirce::MACRO_MOVB((BOOL)Peirce::MACRO_IFTHEN(true, badCode,
  Sheffer::MACRO_JMPNE(Peirce::MACRO_CMP16(byteCalculated, byteSn))), &badCode);

Peirce::MACRO_MOV8((BYTE)Sheffer::MACRO_SHR32(sn, 16), &byteCalculated);
Peirce::MACRO_MOV8((BYTE)char2int((BYTE*)&serial[2]), &byteSn);
Peirce::MACRO_MOVB((BOOL)Peirce::MACRO_IFTHEN(true, badCode,
 Sheffer::MACRO_JMPNE(Peirce::MACRO_CMP16(byteCalculated, byteSn))), &badCode);

Peirce::MACRO_MOV8((BYTE)Sheffer::MACRO_SHR32(sn, 8), &byteCalculated);
Peirce::MACRO_MOV8((BYTE)char2int((BYTE*)&serial[4]), &byteSn);
Peirce::MACRO_MOVB((BOOL)Peirce::MACRO_IFTHEN(true, badCode,
 Sheffer::MACRO_JMPNE(Peirce::MACRO_CMP16(byteCalculated, byteSn))), &badCode);

Peirce::MACRO_MOV8((BYTE)Sheffer::MACRO_AND(sn, 0xFF), &byteCalculated);
Peirce::MACRO_MOV8((BYTE)char2int((BYTE*)&serial[6]), &byteSn);
Peirce::MACRO_MOVB((BOOL)Peirce::MACRO_IFTHEN(true, badCode,
 Sheffer::MACRO_JMPNE(Peirce::MACRO_CMP16(byteCalculated, byteSn))), &badCode);

// теперь можно выводить результат
INT8 outCursor, tmpCursor, tmpSnByte;
Peirce::MACRO_MOV8((INT8)Sheffer::MACRO_IFTHEN(18, 10, badCode), &outCursor);

for (int i = 0; i < 4; i = (int)Sheffer::MACRO_INC(i))
{
 Peirce::MACRO_MOV8((INT8)Sheffer::MACRO_ADD(Peirce::MACRO_SHL8(i, 1), outCursor), &tmpCursor);
 Peirce::MACRO_MOV8((INT8)char2int((BYTE*)&serial[tmpCursor]), &tmpSnByte);
 Peirce::MACRO_MOV8((INT8)Peirce::MACRO_XOR(tmpSnByte, serial[i]), &outRes[i]);
}

Peirce::MACRO_MOV8((INT8)Sheffer::MACRO_INC(start_value), &start_value);
Peirce::MACRO_MOV8((INT8)Peirce::MACRO_XOR(outRes[0], start_value), &outRes[0]);
Peirce::MACRO_MOV8((INT8)Sheffer::MACRO_INC(start_value), &start_value);
Peirce::MACRO_MOV8((INT8)Peirce::MACRO_XOR(outRes[1], start_value), &outRes[1]);
Peirce::MACRO_MOV8((INT8)Sheffer::MACRO_INC(start_value), &start_value);
Peirce::MACRO_MOV8((INT8)Peirce::MACRO_XOR(outRes[2], start_value), &outRes[2]);
Peirce::MACRO_MOV8((INT8)Sheffer::MACRO_INC(start_value), &start_value);
Peirce::MACRO_MOV8((INT8)Peirce::MACRO_XOR(outRes[3], start_value), &outRes[3]);

INT32 outXorValue;
Sheffer::MACRO_MOV32(*(DWORD*)(&outRes[0]), &outXorValue);

// проверка что у нас в выходном буфере
BOOL validBad, validGood;
Sheffer::MACRO_MOVB((BOOL)Peirce::MACRO_JMPE(Peirce::MACRO_CMP32(outXorValue, 0x7B78718F)), &validBad);
Sheffer::MACRO_MOVB((BOOL)Peirce::MACRO_JMPE(Peirce::MACRO_CMP32(outXorValue, 0x72317B98)), &validGood);

Sheffer::MACRO_MOV32((INT32)Peirce::MACRO_IFTHEN(0x7B78718F, outXorValue,
 (!validBad && badCode) || (!badCode && !validGood)), &outXorValue);

Sheffer::MACRO_MOV32((INT32)Peirce::MACRO_XOR(outXorValue, 0x53421EC1), &outXorValue);

*(DWORD*)(&outRes[0]) = outXorValue;

char msg[120];
sprintf_s(msg, "Checked -> %s ", &outRes[0]);
MessageBoxA(hMain, msg, "Check serial", MB_ICONINFORMATION);
}



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2017.04.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.002 c
2-1440419749
guest
2015-08-24 15:35
2017.04.23
получить путь к Users...


15-1460105207
ttUser
2016-04-08 11:46
2017.04.23
Кто-нибудь программировал под телевизоры? (SmartTV)


2-1441390617
guest
2015-09-04 21:16
2017.04.23
unicode to ansistring...


8-1240654783
ForumReader
2009-04-25 14:19
2017.04.23
Быстрый поиск паттерна в BMP изображении...


15-1460583005
Юрий
2016-04-14 00:30
2017.04.23
С днем рождения ! 14 апреля 2016 четверг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский