Следующий вариант
ну вот еще одна итерация разработки.
Добавил возможность создания связей между компонентами и прочие плюшки в виде удобного переворота слоев компонента.
@SinijTraktorist, уже лучше?
С высоты своего опыта кажется что все достаточно комфортно и удобно. Левой рукой меняешь слои, мышой ставишь точки.. Не даром прошли науки человеко-машинного взаимодействия.
Но теперь самый главный вопрос. Как эти сети вывести. Опыты с DipTrace ни к чему не привели. Софтина кривая и толком так и не смогла принять компоненты которые за рамками существующих библиотек корпусов. Альтиум тоже окозался таким же дерьмом. Собственно он всегда таким и был со времен PCAd. (а пафоса то).
Давайте дальше идеи. Вывод в схему это типично творческая задача. готовых решений тут нет. По крайней мере таких которые могут дать визуально понятное для человека.
ГПТ предлагает Force-Directed Placement но это явно будет какое то машинное произведение.
В общем жду идет от заинтересованных лиц.
Программу и исходники найдете по ссылке https://disk.yandex.ru/d/sBYcaJ2TPVvw_w
ну и на последок:
Основы сборки проектов на C/C++
Прежде чем читать мою статью - реши для себя, зачем ты это делаешь. Даже если ты просто нормальный человек, лишним не будет.
Если вы настоящий профессионал программирования, то зачем вы тут сидите и читайте статью на пикабу? Если вы ради интереса зашли почитать, то претензий ноль, но если вы просто захотели задушить нового пользователя Пикабу минусами, то немедленно покиньте статью, вам однозначно интересно не будет.
Здравствуйте, мои маленькие любители программирования!
Давайте разберем основы сборки проектов на Си/Си++ простым языком:
Основные понятия:
Программа собирается из множества файлов
Есть два типа библиотек:
Статические (.a, .lib) - код встраивается в exe-файл
Динамические (.so, .dll) - подгружаются при запуске
Этапы сборки:
// hello.cpp
#include <iostream>
void say_hello() {
std::cout << "Hello, world!" << std::endl;
}
// main.cpp
void say_hello();
int main() {
say_hello();
return 0;
}
Компиляция:
# Компилируем каждый файл отдельно
g++ -c hello.cpp -o hello.o
g++ -c main.cpp -o main.o
# Связываем объектные файлы в исполняемый
g++ hello.o main.o -o program
Работа с библиотеками:
Создание статической библиотеки:
# Создаем объектный файл
g++ -c mylib.cpp -o mylib.o
# Архивируем в статическую библиотеку
ar rcs libmylib.a mylib.o
Использование:
g++ main.cpp -L. -lmylib -o program
Особенности C++
Искажение имен (name mangling):
// В исходном коде
void my_function(int a);
// После компиляции
_Z11my_functioni
Управление зависимостями
Пример Makefile:
program: main.o hello.o
g++ main.o hello.o -o program
main.o: main.cpp
g++ -c main.cpp
hello.o: hello.cpp
g++ -c hello.cpp
clean:
rm *.o program
Основные команды:
make - собрать проект
make clean - очистить скомпилированные файлы
Это базовые принципы, которые помогут начать работать с проектами на Си/Си++. В следующих частях рассмотрим более сложные случаи и современные инструменты сборки.
Как зашифровать флешку?
VeraCrypt – это программное обеспечение для шифрования дисков с открытым исходным кодом для Windows, Mac OSX и Linux. Вы можете зашифровать системный диск или же создать зашифрованный локальный диск.
Чтобы зашифровать флешку:
1. В главном окне программы нажмите кнопку «Создать том».
2. Выберите опцию «Зашифровать несистемный раздел/диск» и тапните «Далее».
3. Выберите опцию «Обычный том VeraCrypt».
4. Затем нажмите «Устройство…» для выбора сменного носителя.
5. Отметьте нужную флешку и подтвердите ваш выбор.
6. Активируйте опцию «Создать и отформатировать зашифрованный том» → «Далее».
7. Все данные на накопителе будут удалены и флешка будет полностью отформатирована.
Далее вы сможете выбрать желаемый алгоритм шифрования и алгоритм хеширования. Можно оставить все значения по умолчанию. Подтвердите размер зашифрованного тома нажав на кнопку «Далее». Затем задайте пароль тома и отформатируйте флешку.
Источник: https://t.me/TechLiveHack/849
Генерация HTML файлов с помощью Excel и бесплатного OpenOffice Calc
Я в феврале 2025 года работаю над проектом "Генерация HTML файлов с помощью табличного редактора". Напишите, пожалуйста, в комментариях ссылки на похожие проекты. Точнее, на файл табличного редактора для генерации HTML.
Свой Cheat Engine с нуля! Часть 1 - Получаем список процессов и модули в нем
Чтобы сформировать понимание, как происходит получение списка процессов, просто заглянем в исходники самого Cheat Engine.
Здесь у нас есть процедура GetProcessList, в которую мы подаем массив строк, в который она запишем нам имена и айди процессов.
Первое, на что обратим внимание - структура, куда записывается информация о процесе, в СЕ она выглядит так
Мы можем ее записать так.
Далее в процедуре идет блок с переменными
Как итог я оставил так
Для замены под C++ объекта ProcessList: TStrings, я использовал std::unordered_map<std::wstring, PProcessListInfo>& process_list. Потому что в коде, была логика схожая с мапой, когда у нас по имени процесса идет связка с объектом, содержащим информацию о нем (фактически один ProcessID..)
Что у нас эквивалентно
И в конце при необходимости это включается в лист
Заменил на
По этой процедуре особо добавить и нечего, она просто делает снимок и пробегается по процессам, выгружая данные..
Но тут мое любопытство увело меня в сторону от Cheat Engine, и я решил посмотреть, что там у Process Hacker, это утилита позволяет работать с процессами. Самой интересной частью является - список модулей. Потому, что там сразу можно увидеть кто-где и какой размер в памяти занимает каждый из них.
Через поиск по файла по фразе EnumModules я вышел на вот такую вот функцию
так же у нее есть 32битная реализация
Результатом работы оных будет вот такая вот структура
Самыми интересными для нас будут PVOID DllBase - начало модуля относительно процесса , ULONG SizeOfImage - размер модуля (сколько байт он занимает внутри процесса) и UNICODE_STRING FullDllName. Но с именем все не так просто. Структура выглядит так
Казалось бы, вот же она.. PWSTR Buffer строка.. выводись в студаут!! А вот и нет, здесь находится адрес в чужом пространстве, чтобы прочитать эту строку, придется сделать следующее.
И тут я на радостях побежал смотреть все модули, но не тут-то было.. Если получить список процессов вполне себе легитимная процедура, то читать память другого процесса уже не всегда дозволяется авторами софта. Но на этот случай у ProcessHacker есть свой собственный драйвер, на то он и хакер.
Все, до чего я докопался - это метод
Данные о драйвере выглядят так
Но, к сожалению, с наскока подключиться к драйверу не удалось и лучший ответ, который я получилъ
По итогу, я решил пока оставить драйвер и заняться гуевой частью, чтобы сразу под каждый инструмент прорабатывать внешний вид, как, что и куда будет выводиться.
Конец! А кто слушал - можете прокачать свои навыки на крутейшем курсе по реверсу ММОРПГ :)
Чуть темнеет монитор при запуске программ(я бы даже сказал игр):Stalkraft, BlueStacks
Чуть темнеет моник после запуска:Stalkraft, BlueStacks. Подскажите,что за проблема(Windows 11pro(активированна))
Пишут роботы, а не человек
Написал небольшое приложение, чтобы хоть немного облегчить жизнь учителям, которые, видимо, должны не только учить, но и поднимать статистику использования мессенджера sferum. Программа работает под Windows или Linux, запуская Google Chrome (главное, чтобы он был установлен) и, после авторизации, начитывает 60 сообщений выбранному пользователю и автоматически закрывается. По умолчанию это стихи А.С. Пушкина. Надеюсь, это решение освободит время для более полезных дел. Исходный код и инструкция на https://github.com/s1vv/py-messanger-spamer