Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 859

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, эксперты!
Подскажите, пожалуйста, как изменить из программы содержимое таблицы строк, содержащейся в файле ресурсов. Или возможен другой способ хранения и изменения стрковых данных принадлежащих экзешнику (т.е. не являющихся отдельным файлом)? Задача стоит при запуске программы считать данные, в ходе выполнения их обработать, а при завершении записать обратно. Реестр не подходит, тк предполагается перенос экзешника на др компьютер, текстовый же файл мб поправлен пользователем.

Приложение:
  1.  
  2. STRINGTABLE LOADONCALL MOVEABLE DISCARDABLE
  3. {
  4. 1, "1111"
  5. ...........
  6. 34, "34Nej"
  7. }
  8.  
  9. Loadstring(hinstance, 1, buffer, 255);


red_88 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

red_88 (статус: Посетитель), 28 августа 2008, 16:18 [#2]:

речь идет о таблице рекордов к миниигрухе, сомневаюсь, что школьник младших клссов будет корёжить ресурсы сторонним приложением. а вот поправить в блокноте текстовик очень даже догадается. не шифровать же теперь данные
Вадим К

Вадим К (статус: Академик), 28 августа 2008, 18:19 [#3]:

Итак, надо поломают. Вы почето решили, что там не найдут. Ещё как найдут. Сейчас такие школьники:) лично видел пятилетнего (то есть даже не школьника, который диски умеет записывать).
Что же делать. да всё просто. Надо просто банально обмануть. В храгим результаты в текстовом виде, пусть дети читают, почему бы и нет, но! заводим ещё одно поле/строку, как нравиться, где храним например сумму всех балов или crc/md5. а обзываем как нибуть неприметно, что бы потерялось среди других параметров. Ведь никто не запрещает сделать ини файл, где хранить кроме рейтинга и другие параметры.
Понятное дело, что в таком случае эта контрольная сумма должна расчитываться только по критическим параметрам.

Если всё сделать правильно, то получиться так. Пользователь поправил в ини файле некритический параметр (например соответсвие кнопок действиям) - молчим, нормально грузим. поменял рейтинг - при старте выдаём "система такая то (вставить умное слово) обнаружила вторжение в базу рейтингов. Рейтинг будет обнулён!"
И всех делов то.
Галочка "подтверждения прочтения" - вселенское зло.
red_88

red_88 (статус: Посетитель), 28 августа 2008, 18:41 [#4]:

ок. спасибо. у меня была мысль почти такая же-напихать всего побольше, а если что не так, обнулять и всё, но вот про сообщение о вторжении не додумался, классная идея :)
можно ещё и пошифровать сверху, но хотелосьбы всё же не таскать лишние файлы за прогой
Вадим К

Вадим К (статус: Академик), 28 августа 2008, 23:19 [#5]:

Ну шифровать сверху не не нужно, а вот добавить пару лишних "параметров с ключвыми именами", типа "crc1 = 234234" И так далее. для них можно сделать маленькую проверку. можно менять зависимо от даты или другого неявного параметра (фазы Луны).
Надо помнить, что самые лучшие зашифрованные данные - это явно открытые данные. А если увидят зашифрованный файл - начнут иследовать, искать. Но зачем заставлять людей ломать голову?:)
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 17 ноября 2024, 04:37
Выполнено за 0.03 сек.