首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >仅将SQLite format 3保护到我的应用程序

仅将SQLite format 3保护到我的应用程序
EN

Stack Overflow用户
提问于 2019-06-05 08:17:07
回答 1查看 126关注 0票数 0

读取数据库的数据库文件和应用程序。应用程序添加了一个注册组件。如果用户不想注册,他们可以简单地下载开源应用程序,将数据库复制到新文件夹中,运行批处理文件,数据库就会在应用程序中打开,完全消除注册和添加的任何额外功能。

我希望将数据库文件保留在内部,即使这意味着将db文件添加到主应用程序的资源中。该文件确实需要将数据写入该文件。

我已经将批处理文件转换为exe文件并加载数据库文件,甚至将数据库文件重命名为晦涩难懂的名称,如abc.exe (尽管它是db文件,但可以重命名为任何名称)。

数据库文件被重命名为可执行文件的时候,我更喜欢以某种方式将其加密或放置到我的主应用程序的资源中,并以这种方式访问,我只是试图限制该软件可能被盗版的方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 08:42:25

  1. Encryption :您可以使用SQLite Encryption Extension等扩展对SQLite数据库进行加密。这种加密的有用性取决于您尝试执行的操作。如果您的应用程序可以读取密钥来解密它,那么可以运行您的应用程序的黑客也可以。你可以使用Windows data Protection API来管理密钥,这样如果有人将数据库从一台windows计算机复制到另一台windows计算机,数据库将不可读;但同样,如果黑客可以访问源计算机,他们就可以像您的应用程序一样获得密钥(但它可以防止“哑巴”用户复制文件)。
  2. 将其放在您的“主要应用程序资源”中:如果您的意思是将数据库嵌入到可执行文件中,那么如果您需要写入数据,那么您就不走运了。一般而言,EXE不能自我修改(尽管取决于操作系统/版本/用户权限/反恶意软件代理等,理论上您可能会实现自修改EXE;但是,如果您希望您的应用程序在大多数时间内都能正常工作,则此策略不会成功)。即使您确实成功地执行了一个EXE,该EXE读取自身,将嵌入的blob作为数据库加载,在内存中修改该数据库,然后使用导出为新blob的数据库重写整个EXE(与原始blob的大小不同,对程序集造成严重破坏),这也无济于事。攻击者可以做你的应用程序做的事情,并访问数据。帮你自己一个忙,并遵循操作系统的指导方针来写入用户数据。对于Windows,这通常是读取和写入文件到您的本地应用程序数据folder.
  3. Renaming的SQLite数据库,以具有EXE扩展。你想要达到什么目的?默默无闻?将其重命名为EXE可能会欺骗一些用户(当然不是我上面描述的动机用户),但也可能会意外地欺骗在合法用户的操作系统上运行的反恶意软件/反病毒软件,使其认为您的应用程序正在编写格式错误的可执行文件(这将是可疑的),并关闭您的应用程序,或者至少阻止它正常工作。这将导致您的用户不使用您的应用程序或堆积如山的支持。它有什么好处?它会阻止“哑巴”用户尝试在SQLite查询工具

中打开它

总而言之,如果你想限制你的用户读取存储在他们自己的存储设备上的数据的能力,你真的无法阻止一个坚定的用户。您可以阻止不太精明的用户。大多数用户无法在C#程序集上运行反射器并弄清楚它在做什么,但许多用户可以。如果您想阻止不太精明的用户,数据加密将阻止他们中的大多数,这将是您讨论过的最不可能阻止您的应用程序“在野外”工作的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56452825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档