能力值:
( LV2,RANK:10 )
|
-
-
2 楼
这个不难 只是感觉隐藏的意义不大 先加密字符串 得到数组 然后像下面这样
char str_buff[100]={0};
str_buff[0] = 0x33;
str_buff[2] = 0x35;
str_buff[1] = 0x34;
MessageBox(0,str_buff,0,0);
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
我也想到一个笨方法,比如你有这些字符串:
char szStr1 = "hello world";
char szStr2 = "lz 最帅";
char szStr2 = "二楼很漂亮";
然后把这些字符串单独提取到一个文件中,假设是mystr.cpp,导出一个函数string getStrByID(int nStrID)
string getStrByID(int nStrID)
{
//读取一个二进制文件
//把二进制转成明文,然后通过字符串编号返回
}
|
能力值:
( LV3,RANK:30 )
|
-
-
4 楼
。。直接上vmp,用SDK保护下字符串就可以了。
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
楼主换个思路,字符串是啥?不就是一个以0结尾的一维char(unicode为wchar)数组吗?既然是数组,再怎么重组、拆分、加密等等是不是就有很多方法了啊
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
有空间的话用2进制来写吧,哈哈哈
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
这么一想的话,想怎么重组确实方法多了  但是还是想知道大家的主流方法是啥
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我觉得楼主的方法就可以啊。字符串属于常量啊,比如一个字符串"哈哈哈哈哈",只要在代码中出现了,编译的时候就会编译到常量区了。如果一个一个Asii码(Unicode码)的填,局部变量的话,就会保存在栈上,如果不运行的话,一般调试器是解析不出来的应该。
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
可以是可以,但是放在OD一看反汇编代码就看到了一串代码:给new出来的空间里填数据,拽回也太显眼了=。=
另外就是:这样一个一个填ASCII写代码也好累啊,还得对着ASCII表一个一个查
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
或者用楼上大家说的加密的方法,先将字符串加密好,在运行时解密。这样OD查看字符串的时候只能查看到加密的内容。再有你可以加壳啊给程序。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
检索字符串的方式是对于直接引用字符串的 比如push string_addr; 所以只要想办法让string_addr常量不是指向字符串的就可以了 这里免不了要使用过渡变量
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
1、只要你的程序能被debug,再复杂的加密也能够被找到正确的字符串。
2、如何不被debug,目前比较好的方式是加壳,把关键的代码放到vm里面保护,这样可以防止大部分的debug。
3、壳不是万能,所以终极大法是把字符串放在服务端,不要做到客户端,如果可以的话。
|
能力值:
( LV5,RANK:70 )
|
-
-
13 楼
http://bbs.pediy.com/showthread.php?t=209250
|
能力值:
( LV5,RANK:60 )
|
-
-
14 楼
楼主隐藏字符串的主要动机是软件保护,不要让人通过字符串定位到代码。这个,其实还是一个复杂的问题,组合、编码、或者加密,运行时还原,这种方法对静态反汇编是很有效的,以下找不到。但对于动态内存搜索,通过内存断点定位代码,你咋办?
|
能力值:
( LV4,RANK:50 )
|
-
-
15 楼
额,,没考虑那么多,就是想加密一下字符串,不让他在调试环境中以明文出现=。=
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
既然是固定的文本,事先加密好成Byte的数据,里面在填充几个\0这些,在赋值给全局变量。。。以前我是这样做的,程序写个解密的方法。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
|
能力值:
( LV12,RANK:230 )
|
-
-
19 楼
用 RC4或者 AES 加密解密啊。
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
写代码的时候就写密文然后给一个DecodeFunc 不知道是否可行
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
龙幽
楼主换个思路,字符串是啥?不就是一个以0结尾的一维char(unicode为wchar)数组吗?既然是数组,再怎么重组、拆分、加密等等是不是就有很多方法了啊
豁然开朗,谢谢指点!
|
|
|