加密解密程序中字符串问题 ( 积分: 100 )

  • 主题发起人 主题发起人 nicotine
  • 开始时间 开始时间
N

nicotine

Unregistered / Unconfirmed
GUEST, unregistred user!
我编写了个程序,用常量保存了如“作者名称”、“软件版本”、“email地址”等信息,我不希望破解者用一个16进制编辑器就把它们改了,因此我就把加密后的这些信息存放下来,然后使用时解密一下。
也就是比如 版本号'1.414',加密后为'qwert',那么我定义const verstr='qwert',在使用时再解密showmessage(strdec(verstr))

但使用这种方法就必须把原来使用verstr的代码统统加上解密函数strdec
可我希望的是解密过程是透明的,用起verstr来就像直接使用一样,
同时我希望定义的方法能够表明字符串内容,比如这样写const verstr=strenc('1.414')
,这样就不会像const verstr='qwert'一样不知所云。

或者说如果各位遇到这样的问题是如何解决的(加密某些信息)?
要求似乎太不实际了????
 
帮你顶一下
关注中……
 
目前流行的方法是VM+SHELL

如果是商业软件加密可以联系我。
 
VM+SHELL?这是何物?能告诉一些资料给我么?[?]
 
这个问题也就是定义的那些常量字符串是以加密的形式存储在程序中,但使用起来却不受影响??没谁知道?有知道的大侠都吱一声帮帮小弟啊!
 
VM=虚拟机
SHELL=壳

这些都不知道的话表明你还没有了解这些知识的能力。
 
靠,就这样打击我?稍微解释一下啦,说不定偶知道啊,大侠!
 
说说大致的构想啦,可否??
 
看这里吧

http://www.delphibbs.com/delphibbs/dispq.asp?lid=3798944
 
to 白河愁
兄台应该没看问题吧?我不要加壳啊!哎也许不可能吧
 
把 verstr 写成一个函数
function verstr: String
begin
Result := strdec('qwert');
end;
 
不加壳,被破解率为 100%
 
答案你已经写出来了:“比如这样写const verstr=strenc('1.414')”
DELPHI支持常量中用自定义的函数
 
总有解压和显示的那一天,顺滕摸瓜就是了。
 
条件断在SetCaption, 回朔若干次即得解密过程.

这方法有点古了, 几年前见过
 
“不加壳,被破解率为 100% ”
我也并不要求这么高,只是不希望太容易被修改。
liyinwei兄弟提供的方法比较靠谱~顺着这个方法试试

我爱PASCAL
答案你已经写出来了:“比如这样写const verstr=strenc('1.414')”
DELPHI支持常量中用自定义的函数
可以这样写么?搞笑吧?能给个这样写的程序证明一下么?
 
我觉得还是另外写写一份加密后的信息,然后“关于对话框”显示时解密,也就是只对关于对话框进行加密/解密,其它地方要修改就让他修改吧
 
我有用過。具體不記得了。。。。
 
现在就是希望解决定义的问题,比如我现在要编写'1.415'版,我就要先计算出'1.415'加密后的字符串'asdfg',然后再把定义从const ver='qwert'修改为const ver='asdfg',觉得每次都这样麻烦,有没有什么办法让编译器器自动去算出'asdfg',而我只要告诉它加密前的ver='1.1415'???
就比如我可以这样写
const
str1='getstr1';
str2=str1+'str2';
那么编译器自动会算出str2='getstr1str2'
delphi有没有什么预执行的编译指令或者预定义什么的功能??
 
楼主只需要自己写一个小工具,对自己的源代码中的关键部分进行版本计算并替换、生成
“加密”后的新源文件,再编译一次即可。
另外,不一定非要使用const的——完全可以声明一个 function ver:String
然后在该
函数中进行较为复杂的运算,而在别处使用时,用法和const变量没有什么不同。
 
后退
顶部