主要是不需要运行库,界面简洁,体积小巧,还能输出makefile。
其它没有任何优点可言,无论是优化还是标准还是调试,vc6没有任何的优势可言。其它版本的安装完之后至少2G以上的空间占用,vs2012达到了8G。
//我在vc上简单帮调了一下,不太清楚你要干什么所以只调了些基本的崩溃的地方
//主要就是p,这些都是指针,并没有真实的空间,所以,没东西可存
//我全初步分了15个空间,楼主根据自己的想法,不够的再多分点就行了
#include<stringh>
#include<stdioh>
#include<mathh>
void main()
{
char s="asdfgasdfg";
int i,l,j;
char p[15] = {0};//p没有分配空间,存不了s+l/2,也不能cat,要是用p的话,下面就要malloc,我改成静态分配的了
char t[15] = {0};//同上
char u[15] = {0};//同上
char g[15] = {0};//同上
char k[15] = {0};//同上
// clrscr(); //我在VC上调的,这个没有,TC的话你你试的时候打开看看吧
l=strlen(s);
strcpy(p,s+l/2);
for(i=0;i<l/2;i++){(t+i)=(s+i);}
strrev(p);strrev(t);
strcat(p,t);
j=0;printf("p=%s\n",p);
do{
if(l-j>=5)
{
for(i=j;i<j+5;i++)
(u+i)=(p+i);
j=j+5;//这个是不是在for里哪??要是的话得加大括号;下面分支同理
if((t+0)<'@')
(u+0)=(u+0)^106;
if((t+1)<'@')
(u+1)=(u+1)^119;
if((t+2)<'@')
(u+2)=(u+2)^99;
if((t+3)>='@')
(u+3)=(u+3)^48;
if((t+4)>='@')
(u+4)=(u+4)^49;
strcat(g,u);
}
else
{
for(i=j;i<l-j;i++)
(k+i)=(p+i);
j=l;
if((t+0)<'@')(k+0)=(k+0)^106;
if((t+1)<'@')(k+1)=(k+1)^119;
if((t+2)<'@')(k+2)=(k+2)^99;
if((t+3)>='@')(k+3)=(k+3)^48;
strcat(g,u);
}
}while(j=l);
printf("%s",g);
}
解密XenoCode加密的字符串
很多 net 程序发行时会使用混淆器进行保护,其中 XenoCode 2005 应该说是使用比较多的一个。
XenoCode会使用一个插入的类对程序集中的字符串进行保护。
本文将结合 Reflector 和反射技术解密程序集中被加密的字符串。
首先,我们使用 Reflector 对原程序进行 Disassembler,找到我们要解密的字符串代码。
如:
thisx80bb7e5ddf294933SerialNumber = stringIntern(x1110bdd110cdcea4_d574bb1a8f3e9cbc("\udbac\ue2b7\ue9bb\uf0af\uf7b8\ufeb3\u05a8\u0c61", 0x555ddb55));
找到要解密的字符串以后,开始编写反射调用代码。
class Program
{
public static void Main()
{
// 载入程序集,testexe 为被混淆的程序集文件名。
Assembly asm = AssemblyLoadFrom(@"testexe");
// 获取XenoCode插入的解密类型(包含其namespace),对应上面字符串前面的类名,每次混淆结果可能都不同。
Type type = asmGetType("x293b01486f981425x1110bdd110cdcea4");
// 字符串参数和解密参数
object[] parameters = {"\udbac\ue2b7\ue9bb\uf0af\uf7b8\ufeb3\u05a8\u0c61", 0x555ddb55};
Type[] paramTypes = new Type[parametersLength];
for (int i = 0; i < parametersLength; i++)
paramTypes = parametersGetType();
// 调用解密方法
BindingFlags flags = BindingFlagsPublic | BindingFlagsStatic;
MethodInfo method = typeGetMethod("_d574bb1a8f3e9cbc", flags, null, paramTypes, null);
object result = methodInvoke(null, parameters);
// 显示解密结果
ConsoleWriteLine(result);
ConsoleWriteLine("Press Enter key to exit");
ConsoleReadLine();
}
}
以上就是关于C++编译加密软件用vc6.0的优点, vc6.0不是很老吗,为什么不用新的全部的内容,包括:C++编译加密软件用vc6.0的优点, vc6.0不是很老吗,为什么不用新的、请问我这个程序有什么问题呢,为什么我的TC2.0一编译就自动关掉或者提示出错,这个是一个字符串加密程序的、如何反编译经过XenoCode加密后的软件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)