Столкнулся с проблемой: Когда я компилирую исходник, в бинарнике все названия строк легко просматриваются hex-редактором, также видны задействованные функции. Как можно защитить код, сделать <кашу> ?
Как ?? У меня строки в <db> хранятся. Т.е. нужно их XOR'ить, поместись в db, а при выполнении хоr'ить обратно?)
да.. можно типа db 'H' xor 1, 'e' xor 1,.... кстате в фасме можно макрос для автоматизации этого дела сделать, а в масме хз.
>> решение - динамический импорт с шифрованием имен функций изврат, проще уж юзать не имена ф-ций, а хеши от них (експорты нужных либ есессно руками парсить) по поводу строк - намного проще будет не шифровать каждую отдельно, а вынести их все в отдельную секцию, и криптанцть её каким нибуть tea, rc4 или каким-нибуть другим бростым блочным шифром
Great, Cr4sh, тут не про импорты, а про обычные строки. но как вариант можно жостко вшить адрес loadlib/getprocaddr под все известные системы и СП
а это про что тогда? в чистом виде в бинарники виден только импорт. ну я и грю - анксоришь строку, потом LoadLibraryA, потом GetProcAddress. Вот и весь динамический импорт с шифрованием. В экзешнике строчку хранишь проксоренную
Красным подчеркнуто,то что нужно скрыть... С циклом у меня не вышло. Код (Text): .data db sz1 "h",0 db sz2 "e",0 db sz3 "l",0 db sz4 "l",0 db sz5 "o",0 .code start: xor sz1,1 xor sz2,1 xor sz3,1 xor sz4,1 xor sz5,1 xor sz6,1 Как это все обьединить с одну строку??
REALiSTiC ППЦ Код (Text): .data db sz1 "hello",0 .code lea eax,sz1 ;загрузили адрес строки mov ebx,eax;сохранили в евх invoke lstrlen,eax;получили длинну строки @@: xor byte ptr [ebx],KEYXOR ;проксорили первый байт строки с ключем inc ebx ;переместили указатель на следующий байт dec eаx ; отняли от длинны строки 1 jnz @b;цыкл Вобщем простейший кодец типа такого. Как сказал Great рульнее будет зделать через lodsb,stosb но так имхо нагляднее
PaCHER Ппц! Код (Text): .data szTxt db "His Infernal Majesty", .code start: mov ecx, offset szTxt .WHILE BYTE PTR [ecx] != 0 xor BYTE PTR [ecx], 152 inc ecx .ENDW <...>