C++ Гайд Защищаем программу от реверса #1. Прячем импорты.

Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
Привет. Сегодня научу вас прятать импорты в вашей программе. Что такое импорты? Думаю проще будет показать на практике.
Код:
1629966582419.png
Тоже самое в псевдокоде:
1629966609085.png
Строки программы:

Импорты:

Надеюсь вы поняли, что это и зачем оно нужно.
Если мы посмотрим импорты по user32.dll то увидим, что их просто нет:

Думаете сами поймете практический плюс данной библиотеки. Как с ней работать?
Для начала подключим ее. Скачать можно ниже в теме. Я там немного починил инклуды, так что да.
В том файле где хотим вызвать подключаем
C++:
#include "face_importer.h"
Теперь вызываем:
C++:
//это простой пример
if (FC(user32, GetAsyncKeyState, VK_MENU))
    std::cout << "We hide our import!";
В данном примере я показал вызов функции GetAsyncKeyState из user32 api.
Разберем немного аргументы.
Чтобы вызвать face importer пишем
C++:
FC(args);
Первый аргумент api из которого берется ваша функция, например мы хотим взять функцию ShellExecute:
Вбиваем в гугл имя функции и смотрим в доках MSDN апи из которого берется функция, в моем случае

Пишем в первый аргумент Shell32.
Второй аргумент наша функция, без скобочек!
И третья аргументы функции, что получилось в итоге:
C++:
    FC(Shell32, ShellExecuteA, NULL, "open", "https://www.google.com/", NULL, NULL, SW_SHOW);
Пожалуйста обратите внимание что первый аргумент у каждой функции разный и его нужно искать.
Проверяем. Видим что все работает. Если не работает значит указали неверную библиотеку откуда берется импорт или аргументы.

На этом все. Сразу скажу, что если вы будете задавать глупые вопросы то помогать я вам не буду.
Если у вас ошибка с __readgsqword то напомню тем кто в танке, она работает только в x64. Так что если хотите что бы все работало придется подумать самим.
 

Вложения

всем прив верите ли вы в призраков ???
Забаненный
Статус
Оффлайн
Регистрация
17 Авг 2018
Сообщения
861
Реакции[?]
338
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А чем тебе не понравился Lazy Imports или aye imports?
 
всем прив верите ли вы в призраков ???
Забаненный
Статус
Оффлайн
Регистрация
17 Авг 2018
Сообщения
861
Реакции[?]
338
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
Нет. Просто ты выбрал именно эту, почему? Тут же через иду видно вызываемую функцию.
Честно сказать? Мне все равно.
В рантайме все равно все будет видно
 
Разработчик
Статус
Оффлайн
Регистрация
18 Мар 2020
Сообщения
442
Реакции[?]
872
Поинты[?]
197K
Честно сказать? Мне все равно.
В рантайме все равно все будет видно
реверсеру в рантайме тоже будет все равно )) сама проблема в либе которую ты выбрал, как и написали выше функцию которую ты вызываешь палится строкой в статик анализе, поэтому толку от этой статьи почти что нет
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
реверсеру в рантайме тоже будет все равно )) сама проблема в либе которую ты выбрал, как и написали выше функцию которую ты вызываешь палится строкой в статик анализе, поэтому толку от этой статьи почти что нет
Да? Прочел гит lazy импортера и ни одного нормального примера использования библиотеки там нет.
В то время как тут можно вызвать одну функцию да бы спрятать импорт.
 
всем прив верите ли вы в призраков ???
Забаненный
Статус
Оффлайн
Регистрация
17 Авг 2018
Сообщения
861
Реакции[?]
338
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Да? Прочел гит lazy импортера и ни одного нормального примера использования библиотеки там нет.
В то время как тут можно вызвать одну функцию да бы спрятать импорт.
В LI все гораздо проще.
LI_FN(func).lazy_function<F>
LI_FN(ShellExecuteA).forwarded_safe_cached() или LI_FN(ShellExecuteA).get()
И не нужно писать либу откуда берется функция.
 
Забаненный
Статус
Оффлайн
Регистрация
6 Дек 2019
Сообщения
643
Реакции[?]
322
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет. Сегодня научу вас прятать импорты в вашей программе. Что такое импорты? Думаю проще будет показать на практике.
Код:
Посмотреть вложение 168420
Тоже самое в псевдокоде:
Посмотреть вложение 168422
Строки программы:

Импорты:

Надеюсь вы поняли, что это и зачем оно нужно.
Если мы посмотрим импорты по user32.dll то увидим, что их просто нет:

Думаете сами поймете практический плюс данной библиотеки. Как с ней работать?
Для начала подключим ее. Скачать можно ниже в теме. Я там немного починил инклуды, так что да.
В том файле где хотим вызвать подключаем
C++:
#include "face_importer.h"
Теперь вызываем:
C++:
//это простой пример
if (FC(user32, GetAsyncKeyState, VK_MENU))
    std::cout << "We hide our import!";
В данном примере я показал вызов функции GetAsyncKeyState из user32 api.
Разберем немного аргументы.
Чтобы вызвать face importer пишем
C++:
FC(args);
Первый аргумент api из которого берется ваша функция, например мы хотим взять функцию ShellExecute:
Вбиваем в гугл имя функции и смотрим в доках MSDN апи из которого берется функция, в моем случае

Пишем в первый аргумент Shell32.
Второй аргумент наша функция, без скобочек!
И третья аргументы функции, что получилось в итоге:
C++:
    FC(Shell32, ShellExecuteA, NULL, "open", "https://www.google.com/", NULL, NULL, SW_SHOW);
Пожалуйста обратите внимание что первый аргумент у каждой функции разный и его нужно искать.
Проверяем. Видим что все работает. Если не работает значит указали неверную библиотеку откуда берется импорт или аргументы.

На этом все. Сразу скажу, что если вы будете задавать глупые вопросы то помогать я вам не буду.
Если у вас ошибка с __readgsqword то напомню тем кто в танке, она работает только в x64. Так что если хотите что бы все работало придется подумать самим.
ебать обьяснение чел, тут видно вот так, а тут крч нет типа импортов, ебать вот строки, а это я хуй знает чё, тебе с такими познаниями надо в российскую школу на уроке информатике работать идти
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
В LI все гораздо проще.
LI_FN(func).lazy_function<F>
LI_FN(ShellExecuteA).forwarded_safe_cached() или LI_FN(ShellExecuteA).get()
И не нужно писать либу откуда берется функция.
точно?
просто все что я пытался сделать работало только так
1629975795308.png
 
if (!send_packet) animstate->m_flGoalFeetYaw += 58
Участник
Статус
Оффлайн
Регистрация
10 Мар 2019
Сообщения
653
Реакции[?]
186
Поинты[?]
0
Что такое импорты? Думаю проще будет показать на практике.
Надеюсь вы поняли, что это и зачем оно нужно.
Думаете сами поймете практический плюс данной библиотеки.
образование в россии би лайк
 
Забаненный
Статус
Оффлайн
Регистрация
6 Дек 2019
Сообщения
643
Реакции[?]
322
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет. Сегодня научу вас прятать импорты в вашей программе. Что такое импорты? Думаю проще будет показать на практике.
Код:
Посмотреть вложение 168420
Тоже самое в псевдокоде:
Посмотреть вложение 168422
Строки программы:

Импорты:

Надеюсь вы поняли, что это и зачем оно нужно.
Если мы посмотрим импорты по user32.dll то увидим, что их просто нет:

Думаете сами поймете практический плюс данной библиотеки. Как с ней работать?
Для начала подключим ее. Скачать можно ниже в теме. Я там немного починил инклуды, так что да.
В том файле где хотим вызвать подключаем
C++:
#include "face_importer.h"
Теперь вызываем:
C++:
//это простой пример
if (FC(user32, GetAsyncKeyState, VK_MENU))
    std::cout << "We hide our import!";
В данном примере я показал вызов функции GetAsyncKeyState из user32 api.
Разберем немного аргументы.
Чтобы вызвать face importer пишем
C++:
FC(args);
Первый аргумент api из которого берется ваша функция, например мы хотим взять функцию ShellExecute:
Вбиваем в гугл имя функции и смотрим в доках MSDN апи из которого берется функция, в моем случае

Пишем в первый аргумент Shell32.
Второй аргумент наша функция, без скобочек!
И третья аргументы функции, что получилось в итоге:
C++:
    FC(Shell32, ShellExecuteA, NULL, "open", "https://www.google.com/", NULL, NULL, SW_SHOW);
Пожалуйста обратите внимание что первый аргумент у каждой функции разный и его нужно искать.
Проверяем. Видим что все работает. Если не работает значит указали неверную библиотеку откуда берется импорт или аргументы.

На этом все. Сразу скажу, что если вы будете задавать глупые вопросы то помогать я вам не буду.
Если у вас ошибка с __readgsqword то напомню тем кто в танке, она работает только в x64. Так что если хотите что бы все работало придется подумать самим.
зачем в этот хедер столько хуйни, зачем там нужны vmt хуки, зачем CallVFunc, nahuia RVA, FindPattern, тут же лишь должен быть код с скрытием импортов и подгрузкой либ
точно?
просто все что я пытался сделать работало только так
Посмотреть вложение 168453
Ну и в чём проблема использовать чистый lazyimporter, чем эту хуйню с говнищем в конце хедера
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
ебать обьяснение чел, тут видно вот так, а тут крч нет типа импортов, ебать вот строки, а это я хуй знает чё, тебе с такими познаниями надо в российскую школу на уроке информатике работать идти
Нахуя защищаться от реверса если ты не знаешь что такое реверс? Зачем читать гайд по защите от реверса не зная зачем от него вообще защищаться... чел тебе с такой логикой надо в российскую школу на уроке информатике работать идти
 
Забаненный
Статус
Оффлайн
Регистрация
6 Дек 2019
Сообщения
643
Реакции[?]
322
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нахуя защищаться от реверса если ты не знаешь что такое реверс? Зачем читать гайд по защите от реверса не зная зачем от него вообще защищаться... чел тебе с такой логикой надо в российскую школу на уроке информатике работать идти
АХЪАХЪАХЪАХЪАХЪ я не знаю что такое реверс, лаан, гайд по защите реверса, а по факту вы получите: кусок хуйни блять а не хедер в котором блять будут переопределятся уже существующие в проекте функции, нахуя там хуки и findpattern, а точняк кстати я же не про реверс, lazyimporter же не также блять работает умник
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
АХЪАХЪАХЪАХЪАХЪ я не знаю что такое реверс, лаан, гайд по защите реверса, а по факту вы получите: кусок хуйни блять а не хедер в котором блять будут переопределятся уже существующие в проекте функции, нахуя там хуки и findpattern, а точняк кстати я же не про реверс, lazyimporter же не также блять работает умник
Перечитай сообщение. Может поймешь что я пытался донести. Прекрати махать ручками как обиженный ребенок.
 
Забаненный
Статус
Оффлайн
Регистрация
6 Дек 2019
Сообщения
643
Реакции[?]
322
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Перечитай сообщение. Может поймешь что я пытался донести. Прекрати махать ручками как обиженный ребенок.
Махать ручками на человека который запостил такую хуйню не лень
Я тебя лишь спрошу, чем лучше эта хуйня LazyImporter'a
 
Администратор
Администратор
Статус
Оффлайн
Регистрация
17 Сен 2016
Сообщения
2,143
Реакции[?]
1,746
Поинты[?]
172K

Помянем оптимизацию кода. GetTickCount в помощь.
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
Практическое использование почти ничем не отличается.
1629976213149.png
Если тебя чем-то не устраивает хедер, то возьми и почисти его сам. В этом нет никакой сложности, но рядовому пастеру будет абсолютно поебать что есть в этом хедере, а что нет. Его будет интересовать только практическое использование библиотеки.
Прочитав название темы мы видим "прячем импорты". Импорты по итогу в конце гайда мы спрятали, а что еще нужно? Зачем пастеру прятать импорты в своей программе если он не увидит в этом практической пользы. Человек которому это будет не нужно даже не прочтет тему и пройдет мимо. А тот кому это надо по итогу получит то что хотел.
Я тебя лишь спрошу, чем лучше эта хуйня LazyImporter'a
Скинь мое сообщение где я написал что лези хуже чем то что я показал в этом гайде

Помянем оптимизацию кода. GetTickCount в помощь.
1629976416159.png
Если у тебя мозгов не хватает прочесть код, то объясню. Любой пастер поймет что функция main означает что я использую консольное приложение и логично что в моем случае для того, чтобы сделать программу с 4 строчками кода для практического примера я сделал бесконечный цикл с проверкой на нажатие через face importer. Теперь задай себе вопрос, буду ли я пихать это в интернал чит например? Или я где-то сказал что библиотека face importer не работает без бесконечного цикла?
 
всем прив верите ли вы в призраков ???
Забаненный
Статус
Оффлайн
Регистрация
17 Авг 2018
Сообщения
861
Реакции[?]
338
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
6 Дек 2019
Сообщения
643
Реакции[?]
322
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Практическое использование почти ничем не отличается.
Посмотреть вложение 168455
Если тебя чем-то не устраивает хедер, то возьми и почисти его сам. В этом нет никакой сложности, но рядовому пастеру будет абсолютно поебать что есть в этом хедере, а что нет. Его будет интересовать только практическое использование библиотеки.
Прочитав название темы мы видим "прячем импорты". Импорты по итогу в конце гайда мы спрятали, а что еще нужно? Зачем пастеру прятать импорты в своей программе если он не увидит в этом практической пользы. Человек которому это будет не нужно даже не прочтет тему и пройдет мимо. А тот кому это надо по итогу получит то что хотел.

Скинь мое сообщение где я написал что лези хуже чем то что я показал в этом гайде

Посмотреть вложение 168458
Если у тебя мозгов не хватает прочесть код, то объясню. Любой пастер поймет что функция main означает что я использую консольное приложение и логично что в моем случае для того, чтобы сделать программу с 4 строчками кода для практического примера я сделал бесконечный цикл с проверкой на нажатие через face importer.
А зачем ты запостил то, что по факту является куском говна в отличии от паблика, так ты блять ебаный пастер еще и хуеты в конец хедера напихал
 
Сверху Снизу