Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Безопасность, Шифрование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2019, 12:02   #1
identam
Новичок
Джуниор
 
Регистрация: 10.12.2019
Сообщений: 1
Печаль Декомпиляция exe файла

Здравствуйте! Появилась задача проанализировать exe файл и на основе этого написать подобную программу(ссылка на exe https://yadi.sk/d/1FzVOfONB_XlHA). Дошел до псевдокода на C, который имеет вид:

Код:
__int64 __fastcall is_exe_enabled_for_execution(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >* app_dll)
{
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >* v1; // rbx
unsigned __int64 v2; // r8
unsigned __int8 v3; // bl
unsigned __int64 v4; // rdi
unsigned __int64 v5; // rsi
std::basic_string<char, std::char_traits<char>, std::allocator<char> >* v6; // rcx
size_t v7; // r8
__int64 v8; // rcx
unsigned __int64 v9; // rax
size_t v10; // rdi
std::basic_string<char, std::char_traits<char>, std::allocator<char> >* v11; // rcx
unsigned __int64 v12; // rdx
char* v13; // rcx
std::basic_string<char, std::char_traits<char>, std::allocator<char> > str; // [rsp+28h] [rbp-30h]

v1 = app_dll;
str._Mypair._Myval2._Mysize = 0i64;
str._Mypair._Myval2._Myres = 15i64;
str._Mypair._Myval2._Bx._Buf[0] = 0;
v2 = -1i64;
do
++v2;
while (embed_0[v2]);
std::basic_string<char, std::char_traits<char>, std::allocator < char»::assign(&str, embed_0, v2);
if (pal::utf8_palstring(&str, v1))
{
v4 = str._Mypair._Myval2._Mysize;
if (str._Mypair._Myval2._Mysize < 0x40)
goto LABEL_36;
v5 = 32i64;
if (str._Mypair._Myval2._Mysize < 0x20)
v5 = str._Mypair._Myval2._Mysize;
v6 = &str;
if (str._Mypair._Myval2._Myres >= 0x10)
v6 = (std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)str._Mypair._Myval2._Bx._Ptr;
v7 = v5;
if (v5 > 0x20)
v7 = 32i64;
if (memcmp(v6, "c3ab8ff13720e8ad9047dd39466b3c89", v7) || v5 != 32)
goto LABEL_36;
if (v4 < 0x20)
std::_String_val < std::_Simple_types < char»::_Xran(v8);
v9 = v4 - 32;
v10 = 32i64;
if (v9 < 0x20)
v10 = v9;
v11 = &str;
if (str._Mypair._Myval2._Myres >= 0x10)
v11 = (std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)str._Mypair._Myval2._Bx._Ptr;
if (!memcmp(&v11[1], "74e592c2fa383d4a3960714caef0c4f2", v10) && v10 == 32)
{
if (v1->_Mypair._Myval2._Myres >= 8)
v1 = (std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >*)v1->_Mypair._Myval2._Bx._Ptr;
trace::error(L"This executable is not bound to a managed DLL to execute. The binding value is: '%s'", v1);
v3 = 0;
}
else
{
LABEL_36:
if (v1->_Mypair._Myval2._Myres >= 8)
v1 = (std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >*)v1->_Mypair._Myval2._Bx._Ptr;
trace::info(L"The managed DLL bound to this executable is: '%s'", v1);
v3 = 1;
}
}
else
{
trace::error(L"The managed DLL bound to this executable could not be retrieved from the executable image.");
v3 = 0;
}
if (str._Mypair._Myval2._Myres >= 0x10)
{
v12 = str._Mypair._Myval2._Myres + 1;
v13 = str._Mypair._Myval2._Bx._Ptr;
if (str._Mypair._Myval2._Myres + 1 >= 0x1000)
{
v12 = str._Mypair._Myval2._Myres + 40;
v13 = (char*) * ((_QWORD*)str._Mypair._Myval2._Bx._Ptr - 1);
if ((unsigned __int64)(str._Mypair._Myval2._Bx._Ptr - v13 - 8) > 0x1F)
invalid_parameter_noinfo_noreturn_0();
}
operator delete(v13, v12);
}
return v3;
}
Вопрос: в правильном ли направлении я двигаюсь и куда дальше копать?
Заранее спасибо!
p.s. В данной сфере полное дно, извините, за какие-либо грубые ошибки.
identam вне форума Ответить с цитированием
Старый 10.12.2019, 13:27   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от identam Посмотреть сообщение
в правильном ли направлении я двигаюсь
Кто может сказать? Приведён Х3 какой микроскопический кусок, Х3 чем выдранный из экзешника, который Х3 что делает..
Black Fregat вне форума Ответить с цитированием
Старый 10.12.2019, 15:05   #3
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

Цитата:
Сообщение от identam Посмотреть сообщение
Появилась задача проанализировать exe файл
А что программа делает?
Пытался на Ubuntu запустить файл из архива linux64, не запускается.
kvitaliy вне форума Ответить с цитированием
Старый 10.12.2019, 17:08   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от kvitaliy Посмотреть сообщение
Пытался на Ubuntu запустить файл из архива linux64, не запускается
Так надо было под рутом попробовать ))
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
декомпиляция supersergio Фриланс 1 25.07.2014 20:43
Декомпиляция swf файла, разбор кода g250 Помощь студентам 0 06.06.2013 06:25
декомпиляция .apk uibiwe Общие вопросы по Java, Java SE, Kotlin 0 28.04.2013 16:19
Декомпиляция *.ехе файла Delphi XE Devostator Общие вопросы Delphi 3 03.11.2011 09:33
декомпиляция Wav файла DzetaHunter Общие вопросы Delphi 3 14.01.2011 13:17