我写的一个程序,程序内要对数据库操作,因此有一些SQL语句,编译后以二进制方式打开exe文件,可以看到一些SQL语句,这样就会对数据库结构泄密。我想解决这个问题的一个方法是:先用其他加密程序对SQL字符串进行加密,将加密后的字符串放在程序中,程序运行的时候再动态解密,再执行SQL语句。不知各位用什么方法来解决这个问题?
解决方案 »
- 更改GDI映射模式
- 调用外部变量
- 已经加了相应的库但是依然报告“error LNK2001: unresolved external symbol”的链接错误
- 请教网络编程手把手式入门书籍
- 字符到整数
- 在对话框程序中有没有类似WM_ERASEBKGND的消息
- 为什么我调<深入浅出MFC>中第三章的“消息映射”总是调不出呀
- 请高手指点时间等待问题?
- 请问:我怎能把一个CMediaControl 的类加到我的工程中来,需要什么头文件,或这个类的文件哪儿能找到?100分必送
- 我想用VC++6.0开发一个批量打印autocad图纸文件的应用
- 谁有<深入浅出MFC>的源代码?
- 再问怎样在VC++的程序中运行一个java程序,3x
这样一般有很多的好处
1.当数据库服务器变了不需要修改客户端用程序,所有的用户也不需要从新下载或更新程序
2.如果数据库中的表结构变化,只要不处及到你的协议接口的变化,用户也不需要变化.
3.比较容易实现数据库的分布式等其实你就是应当提供一个系统来完成客户端程序的对外需求
2:程序种可以加密,加壳都可以,但是你的Sql语句会经过ODBC,可以被驱动程序Trace,看得更清楚。(呵呵,是完整的,比Exe文件中的要完整)
3:如果不通过ODBC,你的Sql也会在网路上通过,用包截取工具也容易看到通信内容。
4:存储过程可以加密,但是也有解密程序可以找到,可以还原。
5:如果用扩展存储过程,把SQL加密存储在DLL中,布置在服务器端,那么文件和网络上就没有具体Sql的明文了。但是要知道DLL的端口是可以欺骗的。终上所述,一个字“难”!
如果你的软件有价值的话,建议做好营销,卖得快,早一点把钱赚到满意,让人家看去好了,你又可以出新的了。
没用,sql语句最终总是会以明文的形式存在于内存中。你再怎么动态都没用最简单的办法就是用一个没有现成脱壳工具的加壳软件加壳,这样就可以挡住99%的菜鸟了想要100%的保护是不可能的,除非你自己做个CPU,写个操作系统和编译器
我知道想要完全防止解密是不可能的,只要有汇编大师肯下功夫,什么程序都是可以解密的。要这么做是为了用有限的时间、方法获得最大的效率,能给解密者创造最大的难度。
印尼亚齐省劫掠现象严重华人成为抢劫目标http://news.sina.com.cn/c/2005-01-03/18414704205s.shtml
港报呼吁印尼当局制止歹徒趁乱抢掠华人恶行
1、将程序中SQL整理出来,每一条语句用一个文件保存;
2、用已有的加密算法(未公开的算法)对每个文件加密成另一个文件;
3、将每个加密的文件作为资源添加到VC的资源中,作为SQL资源;
4、程序运行中先装载SQL资源,然后解密,并执行。