Перейти к содержанию

Unlock Me By Taiwan


Taiwan

Рекомендуемые сообщения

Это мой самый, первый в жизни проект на "VS C++" да и вообще на ".Net". Что-то впечатлений 0 - походу зря, я заразился от "partoftheworlD" и "Garik66 с его С++ом"

 

Скрытый текст

HGwj.png

 

Условия задачи:

  ¤ Нельзя патчить байты.

  ¤ Нельзя дампить проект.

  ¤ Нельзя пользоваться MSM-ом.

 

Необходимо:

Ввести правильный пароль и узнать цвет лампочки на панели "Статус" при успешном входе. После выполнение задачи, отписать в теме: Правильный пароль + цвет лампочки и по возможности - описать действия выполненной задачи.

 

Проект пакован! так как , после компиляции проекта, решил пропустить его через IDA. От увиденного у меня волосы чуть не выпали, хоть бери и копируй все, создавай новый проект в "VS", 90% можно сказать исходника, может я рукож.... не настроил компилятор проекта, не знаю. Одно слово: "Первый проект"

 

Unlock_Me_By_Taiwan

VirusTotal

MetaDefender

 

HIy2.png

Условия задачи: те же, что и в первой версии. - (srg91 74887822.jpg)

Необходимо: Ввести правильный пароль.

Примечание:  На этот раз, проект не пакован, не чем! - (правильно введенный пароль не закрывает программу.)

 

Unlock Me [v2] By Taiwan

VirusTotal

MetaDefender

Изменено пользователем Taiwan
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Молодец, запаковал так, что не от чего оттолкнутся. Единственная возможно реальная строка про виртуальную машину с тонной мусора.А сам после паковки смог открыть или даже пытаться не стоит:D? Все функции которые используются берутся с помощью RtlInitString, типа как GetProcAddress, только опасней.

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, ШАРИК сказал:

хе. MFC не вывозит ...

Это ты о чем, точнее к чему?

 

2 часа назад, partoftheworlD сказал:

А сам после паковки смог открыть или даже пытаться не стоит:D?

Смог, если бы я не запаковал - ты бы выложил не только пароль ну и почти весь исходник)

41 минуты назад, srg91 сказал:

Упс, сначала читай - потом делай. Сдампил, посмотрел код, после этого внимательно прочитал задание )

Эх ))

Бывает)) пароль и цвет лампочки после успешной авторизации - можешь в теме выложить.

Ссылка на комментарий
Поделиться на другие сайты

Just now, Taiwan said:

Бывает)) пароль и цвет лампочки после успешной авторизации - можешь в теме выложить.

 

Ну, раз задание с не дампить - подождем решения ) Могу скинуть в личку. 

Ссылка на комментарий
Поделиться на другие сайты

12 часа назад, Taiwan сказал:

Оставь, подождем еще)))

Всю ночь проковырял unlockme, так и не нашел от чего можно оттолкнуться, распаковал посмотрел как все утроено, опять пробовал в запакованном виде и не смог ничего сделать. Чувствую себя тупым:D.

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

13 часа назад, srg91 сказал:

 

Ну, раз задание с не дампить - подождем решения ) Могу скинуть в личку. 

 

49 минуты назад, partoftheworlD сказал:

Всю ночь проковырял unlockme, так и не нашел от чего можно оттолкнуться, распаковал посмотрел как все утроено, опять пробовал в запакованном виде и не смог ничего сделать. Чувствую себя тупым:D.

 

Можете выкладывать - что нарыли)

Ссылка на комментарий
Поделиться на другие сайты

14 часа назад, Taiwan сказал:

Это ты о чем, точнее к чему?

К тому , что ты используешь в своём проекте библиотеку MFC , и она не вывозит ...

Ссылка на комментарий
Поделиться на другие сайты

12 минуты назад, ШАРИК сказал:

К тому , что ты используешь в своём проекте библиотеку MFC , и она не вывозит ...

На сколько я помню, я создавал проект на основе CLI а не, на  MFC. Ты наверно, что-то путаешь)))

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, Taiwan сказал:

Можете выкладывать - что нарыли)

Все же допер, в общем я и правда тупой:D,  после подключение отладчика и долгих танцев с бубном получилось изменить процессор на Microsoft Visual Studio .Net c MetaPC, а после тон мусора будут строки "Taiwan(*.?)GameHackLab" и "Lang-/-s+1'_M1_Ты_Молодца)))*"  в юникоде который надо включить ПМК -> setup - -> setup sting window. Проверка типа, если настоящий пароль == введенному, то  установить 1 флагу лампочки и если состояние лампочки не равно 1, то рисовать картинку номер 1, а если равно 1, то картинку номер 2. Вот только не понимаю как передается пароль и откуда, у меня отладчик начал выпендриваться после смены процессора. По статичному коду, ясно что там используется что-то типа поиска и использования объекта ссылка которого находится на стеке вычислений с передачей this->TextBox2  после ввода.

 

Было сложно, но мне понравилось, спасибо за интересный Unlockme, плюс понял что в реверсе приложений с использованием .net форм я дно.

 

AnaAHYQtfKU.jpg

 

Небольшой псевдокод написал ну как работает эта функция по моему восприятию.

Скрытый текст

void PressButton(this)
{
auto lamp_flag = 0
setText(this->input_login, Taiwan(*.?)GameHackLab);
GetText(this->input_password);
if(!strcmp(this->input_passoword, "Lang-/-s+1'_M1_Ты_Молодца)))*'"))
 {
 lamp_flag = 1;
 if(lamp_flag == 1)
   {
    DrawPic(lamp_1.png);
   }
 else
   {
     DrawPic(lamp_2.png); 
   }
  }
}

 

 

UPD Не стал проверять найденные строки как пароль, просто думал, что строка про молодца, это будет сообщение об успешном выполнении.:D

Изменено пользователем partoftheworlD
  • Плюс 3
Ссылка на комментарий
Поделиться на другие сайты

57 минут назад, partoftheworlD сказал:

Было сложно, но мне понравилось, спасибо за интересный Unlockme, плюс понял что в реверсе приложений с использованием .net форм я дно.

По сути, тут сложного не чего нет - так как ".Net" формы, ломаются на много проще! чем та же форма на KTV. По сему "Net" приложения спасают только пакеры, и то.......

Если бы, я вчера не разочаровался в чистом билде Net приложения, я его не паковал не чем.... Что это, за VS 2017 да и другие версии - после которых 90% исходника можно вытащить с помощью всяких дебагеров, По этому, после вчерашней попытки начать изучение C++ завершилось после того как скомпилировал первый свой софт.

Скрытый текст

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

		if (a->Text == "Taiwan(*.?)GameHackLab" , b->Text == "Lang-/-s+1'_M1_Ты_Молодца)))*'") // Сравниваем веденные данные в TexBox-ах
		{
			c->Enabled = true; // Если все норм, включаем 3-тию Picture которая находится за формой - (специально сделал один Jump для DISM - то есть для запутывание)
		}
		if (c->Enabled == true) // Если Picture включена, делаем следущее.
		{
			pictureBox2->Enabled = true; // Опять же для Jump в DISM 
			pictureBox2->Visible = true; // тут включаем видимость лампочки которая загорается после успешного входа.
		}
		else // Исключение
		{
			pictureBox2->Enabled = false;
			pictureBox2->Visible = false; 
		}
	}

 

 

Не пакованный проект в IDA: 

Скрытый текст

HHy7.png

 

Пакованный: Вот исходя из этого ты должен был отталкиваться.

Скрытый текст

HHzB.png

 

Изменено пользователем Taiwan
Ссылка на комментарий
Поделиться на другие сайты

5 hours ago, Taiwan said:

Можете выкладывать - что нарыли)

 

ну тут и так уже всё рассказали, я просто дампнул процесс через PETools и открыл через ILSpy => cкопировал строку с результатом и проверил.

После этого прочитал, что дампить нельзя ))

Собственно, если код не обфусцирован - то после ILSpy всё как на ладони. Да и после обфусцирования тоже -  Knock-knock более менее ломается даже так:

Spoiler

 

 

 

Изменено пользователем srg91
Ссылка на комментарий
Поделиться на другие сайты

26 минуты назад, Taiwan сказал:

Что это, за VS 2017 да и другие версии - после которых 90% исходника можно вытащить с помощью всяких дебагеров

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

 

Вот ида подгружает pdb

b_FkymZh-X0.jpg

 

А вот без него

 

Rka8y9rBPIs.jpg

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, partoftheworlD сказал:

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

Не, "pdb" не подгружает, только что проверил. Скорее всего в настройках проекта что-то,вообщем как сидел я на Delphi - 7 лет, так и дальше буду сидеть. Манал я этот VS:D

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, Taiwan сказал:

Не, "pdb" не подгружает, только что проверил. Скорее всего в настройках проекта что-то,вообщем как сидел я на Delphi - 7 лет, так и дальше буду сидеть. Манал я этот VS:D

Я просто удаляю *,pdb из папки в которую компилировалась релиз версия программы.

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, partoftheworlD сказал:

Я просто удаляю *,pdb из папки в которую компилировалась релиз версия программы.

Только что, удалил. Ничего не изменилось((( Да по весу в 114 кб. понять можно что - он VS ничего не шифрует. Если бы VS хоть как-то шифровал, вес программы был бы больше.

Ссылка на комментарий
Поделиться на другие сайты

41 минуты назад, Taiwan сказал:

вообщем как сидел я на Delphi - 7 лет, так и дальше буду сидеть. Манал я этот VS:D

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

_pztrain.exe

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, LIRW сказал:

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

_pztrain.exe

Чистый Win API ))) Последний раз, я писал - даже не помню когда:D

Ссылка на комментарий
Поделиться на другие сайты

46 минуты назад, ШАРИК сказал:

Есть c++ builder ))) там тоже vcl

Причем тут "C++ Builder" и "VCL библиотеки" ?, для начала научись, читать тело "Темы" и сообщение всех участников - оставивших в данной теме. Только потом отвечай или советуй. (Не прими, как за наезд или что-то подобное).

Ссылка на комментарий
Поделиться на другие сайты

Второе задание - готово. Не открывал не IDA, ничем. Использовал небольшой, как со вторым TrainMe и датой )

 

Под спойлером напишу как взламывал.

Spoiler

Ну, так как мы знаем, что Taiwan пишет на нашем любимом Delphi и ничего не запаковано - значит мы вооружены :)

Первым путем попробовал сделал так - нашел операцию сравнения - в Delphi это отдельный call. Чтобы выяснить как он выглядит просто компилим минимальный проект с if A  = B then и смотрим что внутри этого call. Найдя эту функцию в Unlock Me ставим бряк и аккуратно отфильтровываем все использования этой функции. Я умудрился профукать её вызов в проверке, поэтому пошел по другому.

 

Я нашел компоненты на форме через поиск TLabel в памяти, увидел что используется IdEncoderXXE. Это стандартный Indy компонент, а значит можно предположить что использован IdEncodeXXE.Encode :) Собственно, ищем его так же как и функцию сравнения и ставим бряк. Таким образом и попадаем на OnClick кнопки. А дальше видим, что вызывается та же функция сравнения, где в случае не выполнения условия Edit.Text == IdEncodeXXE.Encode(0xA0) приложение завершает работу. Ну и в аргументах функции сравнения видим наш пароль :)

 

Пароль (шифранул в base64, чтобы не спойлерить): LWMrKys=

 

Изменено пользователем srg91
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.