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

bluedream.ltd
bluedream.ltd
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
3,063
Реакции
1,288
Привет. Сегодня научу вас прятать импорты в вашей программе. Что такое импорты? Думаю проще будет показать на практике.
Код:
1629966582419.png

Тоже самое в псевдокоде:
1629966609085.png

Строки программы:

Импорты:

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

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

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

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

Вложения

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А чем тебе не понравился Lazy Imports или aye imports?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нет. Просто ты выбрал именно эту, почему? Тут же через иду видно вызываемую функцию.
Честно сказать? Мне все равно.
В рантайме все равно все будет видно
 
Честно сказать? Мне все равно.
В рантайме все равно все будет видно
реверсеру в рантайме тоже будет все равно )) сама проблема в либе которую ты выбрал, как и написали выше функцию которую ты вызываешь палится строкой в статик анализе, поэтому толку от этой статьи почти что нет
 
реверсеру в рантайме тоже будет все равно )) сама проблема в либе которую ты выбрал, как и написали выше функцию которую ты вызываешь палится строкой в статик анализе, поэтому толку от этой статьи почти что нет
Да? Прочел гит lazy импортера и ни одного нормального примера использования библиотеки там нет.
В то время как тут можно вызвать одну функцию да бы спрятать импорт.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Да? Прочел гит lazy импортера и ни одного нормального примера использования библиотеки там нет.
В то время как тут можно вызвать одну функцию да бы спрятать импорт.
В LI все гораздо проще.
LI_FN(func).lazy_function<F>
LI_FN(ShellExecuteA).forwarded_safe_cached() или LI_FN(ShellExecuteA).get()
И не нужно писать либу откуда берется функция.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет. Сегодня научу вас прятать импорты в вашей программе. Что такое импорты? Думаю проще будет показать на практике.
Код:
Посмотреть вложение 168420
Тоже самое в псевдокоде:
Посмотреть вложение 168422
Строки программы:

Импорты:

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

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

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

На этом все. Сразу скажу, что если вы будете задавать глупые вопросы то помогать я вам не буду.
Если у вас ошибка с __readgsqword то напомню тем кто в танке, она работает только в x64. Так что если хотите что бы все работало придется подумать самим.
ебать обьяснение чел, тут видно вот так, а тут крч нет типа импортов, ебать вот строки, а это я хуй знает чё, тебе с такими познаниями надо в российскую школу на уроке информатике работать идти
 
В LI все гораздо проще.
LI_FN(func).lazy_function<F>
LI_FN(ShellExecuteA).forwarded_safe_cached() или LI_FN(ShellExecuteA).get()
И не нужно писать либу откуда берется функция.
точно?
просто все что я пытался сделать работало только так
1629975795308.png
 
Что такое импорты? Думаю проще будет показать на практике.
Надеюсь вы поняли, что это и зачем оно нужно.
Думаете сами поймете практический плюс данной библиотеки.
образование в россии би лайк
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет. Сегодня научу вас прятать импорты в вашей программе. Что такое импорты? Думаю проще будет показать на практике.
Код:
Посмотреть вложение 168420
Тоже самое в псевдокоде:
Посмотреть вложение 168422
Строки программы:

Импорты:

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

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

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

На этом все. Сразу скажу, что если вы будете задавать глупые вопросы то помогать я вам не буду.
Если у вас ошибка с __readgsqword то напомню тем кто в танке, она работает только в x64. Так что если хотите что бы все работало придется подумать самим.
зачем в этот хедер столько хуйни, зачем там нужны vmt хуки, зачем CallVFunc, nahuia RVA, FindPattern, тут же лишь должен быть код с скрытием импортов и подгрузкой либ
точно?
просто все что я пытался сделать работало только так
Посмотреть вложение 168453
Ну и в чём проблема использовать чистый lazyimporter, чем эту хуйню с говнищем в конце хедера
 
ебать обьяснение чел, тут видно вот так, а тут крч нет типа импортов, ебать вот строки, а это я хуй знает чё, тебе с такими познаниями надо в российскую школу на уроке информатике работать идти
Нахуя защищаться от реверса если ты не знаешь что такое реверс? Зачем читать гайд по защите от реверса не зная зачем от него вообще защищаться... чел тебе с такой логикой надо в российскую школу на уроке информатике работать идти
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нахуя защищаться от реверса если ты не знаешь что такое реверс? Зачем читать гайд по защите от реверса не зная зачем от него вообще защищаться... чел тебе с такой логикой надо в российскую школу на уроке информатике работать идти
АХЪАХЪАХЪАХЪАХЪ я не знаю что такое реверс, лаан, гайд по защите реверса, а по факту вы получите: кусок хуйни блять а не хедер в котором блять будут переопределятся уже существующие в проекте функции, нахуя там хуки и findpattern, а точняк кстати я же не про реверс, lazyimporter же не также блять работает умник
 
АХЪАХЪАХЪАХЪАХЪ я не знаю что такое реверс, лаан, гайд по защите реверса, а по факту вы получите: кусок хуйни блять а не хедер в котором блять будут переопределятся уже существующие в проекте функции, нахуя там хуки и findpattern, а точняк кстати я же не про реверс, lazyimporter же не также блять работает умник
Перечитай сообщение. Может поймешь что я пытался донести. Прекрати махать ручками как обиженный ребенок.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Перечитай сообщение. Может поймешь что я пытался донести. Прекрати махать ручками как обиженный ребенок.
Махать ручками на человека который запостил такую хуйню не лень
Я тебя лишь спрошу, чем лучше эта хуйня LazyImporter'a
 
D33SzAQ.png

Помянем оптимизацию кода. GetTickCount в помощь.
 
Практическое использование почти ничем не отличается.
1629976213149.png

Если тебя чем-то не устраивает хедер, то возьми и почисти его сам. В этом нет никакой сложности, но рядовому пастеру будет абсолютно поебать что есть в этом хедере, а что нет. Его будет интересовать только практическое использование библиотеки.
Прочитав название темы мы видим "прячем импорты". Импорты по итогу в конце гайда мы спрятали, а что еще нужно? Зачем пастеру прятать импорты в своей программе если он не увидит в этом практической пользы. Человек которому это будет не нужно даже не прочтет тему и пройдет мимо. А тот кому это надо по итогу получит то что хотел.
Я тебя лишь спрошу, чем лучше эта хуйня LazyImporter'a
Скинь мое сообщение где я написал что лези хуже чем то что я показал в этом гайде
D33SzAQ.png

Помянем оптимизацию кода. GetTickCount в помощь.
1629976416159.png

Если у тебя мозгов не хватает прочесть код, то объясню. Любой пастер поймет что функция main означает что я использую консольное приложение и логично что в моем случае для того, чтобы сделать программу с 4 строчками кода для практического примера я сделал бесконечный цикл с проверкой на нажатие через face importer. Теперь задай себе вопрос, буду ли я пихать это в интернал чит например? Или я где-то сказал что библиотека face importer не работает без бесконечного цикла?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Практическое использование почти ничем не отличается.
Посмотреть вложение 168455
Если тебя чем-то не устраивает хедер, то возьми и почисти его сам. В этом нет никакой сложности, но рядовому пастеру будет абсолютно поебать что есть в этом хедере, а что нет. Его будет интересовать только практическое использование библиотеки.
Прочитав название темы мы видим "прячем импорты". Импорты по итогу в конце гайда мы спрятали, а что еще нужно? Зачем пастеру прятать импорты в своей программе если он не увидит в этом практической пользы. Человек которому это будет не нужно даже не прочтет тему и пройдет мимо. А тот кому это надо по итогу получит то что хотел.

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

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