Наибольший вклад обычно вносят библиотеки, подключенные статически.
Рассмотреть возможность динамической линковки, если библиотеки есть в системе, либо более легких библиотек, если они необходимы. Ну, и выкинуть то, что не используется.
В самом клиническом случае - брать код из самих библиотек, если они открыты.
Школьная же задача. Одна сторона прямоугольного треугольника - 100%, вторая - дельта (разность) между значением цвета картинки и цвета наложения. Отмеряем нужный процент, проводим перпендикуляр к процентной стороне до пересечения с гипотенузой, определяем его высоту, меняем значение цвета на эту величину.
Дельта / 100% = Величина изменения / Нужный процент.
Величина изменения = Дельта * Нужный процент / 100%.
на сервер приходит строка как если открыть в hex редакторе и посмотреть на dump
Вот ее-то вы и записываете. Параметр b, естественно, работает, но никто не будет за вас превращать hex-представление обратно в байты.
Читайте свою строку по два символа, превращайте их в байт, его и записывайте в файл.
Насколько я помню, у NSIS весь гуй - просто оболочка к обработчику файлов описания дистрибутива.
Надо думать, из консоли он точно так же успешно их обрабатывает.
Можно попробовать представить, что именно может делать чит с данными, и встроить проверку, не были ли данные изменены нелогичным способом.
Своего рода тест, встроенный в само приложение. Кстати, если действительно периодически вызывать некую функцию с тестовыми данными и сравнивать результаты с известными, можно поймать момент, когда функция была подменена и стала делать не то или не так. Без всяких проверок хэшей и пр.