|
Вопрос # 1 859/ вопрос открыт / |
|
Здравствуйте, эксперты!
Подскажите, пожалуйста, как изменить из программы содержимое таблицы строк, содержащейся в файле ресурсов. Или возможен другой способ хранения и изменения стрковых данных принадлежащих экзешнику (т.е. не являющихся отдельным файлом)? Задача стоит при запуске программы считать данные, в ходе выполнения их обработать, а при завершении записать обратно. Реестр не подходит, тк предполагается перенос экзешника на др компьютер, текстовый же файл мб поправлен пользователем.
Приложение: Переключить в обычный режим-
- STRINGTABLE LOADONCALL MOVEABLE DISCARDABLE
- {
- 1, "1111"
- ...........
- 34, "34Nej"
- }
-
- Loadstring(hinstance, 1, buffer, 255);
|
Вопрос задал: red_88 (статус: Посетитель)
Вопрос отправлен: 28 августа 2008, 14:57
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Feniks
Здравствуйте, red_88!
Ну так если для школьников, используйте простейший алгоритм шифрования и обычный файл функциями blockread, blockwrite или стандартными read, write.
Например так:
type
THiscore = Record
Name : string[100];
Hiscore : Integer;
end;
var
f : file of THiscore;
Rec : THiscore;
begin
//assign file
assignFile(f, 'MyFileName');
//open file
if FileExists('MyFileName') then
reset(f)
else
rewrite(f);
//чтение 5й записи
seek(f,10);
read(f,Rec);
...............
//запись 10й записи
seek(f, 10);
write(f,Rec);
closefile(f);
end;
Для шифрации/дефишрации можно взять алгоритм ROT12. Он просто заменяет нужный символ на следующий 12-й по сщету от текущего. Можно брать и не 12-й, а какой вам угодно. Смотрите в Атаче.
Сначало им шифруете каждое поле записи рекодров Rec, а потом эту запись пишите в файл. И т.д.
P.S. Желаю удачи. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
|
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 28 августа 2008, 17:23
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 28 августа 2008, 23:19; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 28 августа 2008, 16:13 [#1]:
править ресурсы самого себя оффициально нельзя. сам ехе файл на время запуска стает readonly.
С другой стороны поправить ресурсы файла сторонним приложением тоже не сложно.
Очередной человек, который помешан на безопастности? Надо - поломают!
Галочка "подтверждения прочтения" - вселенское зло.
|
|
red_88 (статус: Посетитель), 28 августа 2008, 16:18 [#2]:
речь идет о таблице рекордов к миниигрухе, сомневаюсь, что школьник младших клссов будет корёжить ресурсы сторонним приложением. а вот поправить в блокноте текстовик очень даже догадается. не шифровать же теперь данные
|
|
Вадим К (статус: Академик), 28 августа 2008, 18:19 [#3]:
Итак, надо поломают. Вы почето решили, что там не найдут. Ещё как найдут. Сейчас такие школьники лично видел пятилетнего (то есть даже не школьника, который диски умеет записывать).
Что же делать. да всё просто. Надо просто банально обмануть. В храгим результаты в текстовом виде, пусть дети читают, почему бы и нет, но! заводим ещё одно поле/строку, как нравиться, где храним например сумму всех балов или crc/md5. а обзываем как нибуть неприметно, что бы потерялось среди других параметров. Ведь никто не запрещает сделать ини файл, где хранить кроме рейтинга и другие параметры.
Понятное дело, что в таком случае эта контрольная сумма должна расчитываться только по критическим параметрам.
Если всё сделать правильно, то получиться так. Пользователь поправил в ини файле некритический параметр (например соответсвие кнопок действиям) - молчим, нормально грузим. поменял рейтинг - при старте выдаём "система такая то (вставить умное слово) обнаружила вторжение в базу рейтингов. Рейтинг будет обнулён!"
И всех делов то.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
red_88 (статус: Посетитель), 28 августа 2008, 18:41 [#4]:
ок. спасибо. у меня была мысль почти такая же-напихать всего побольше, а если что не так, обнулять и всё, но вот про сообщение о вторжении не додумался, классная идея
можно ещё и пошифровать сверху, но хотелосьбы всё же не таскать лишние файлы за прогой
|
|
Вадим К (статус: Академик), 28 августа 2008, 23:19 [#5]:
Ну шифровать сверху не не нужно, а вот добавить пару лишних "параметров с ключвыми именами", типа "crc1 = 234234" И так далее. для них можно сделать маленькую проверку. можно менять зависимо от даты или другого неявного параметра (фазы Луны).
Надо помнить, что самые лучшие зашифрованные данные - это явно открытые данные. А если увидят зашифрованный файл - начнут иследовать, искать. Но зачем заставлять людей ломать голову?
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|