C++编译加密软件用vc6.0的优点, vc6.0不是很老吗,为什么不用新的

C++编译加密软件用vc6.0的优点, vc6.0不是很老吗,为什么不用新的,第1张

主要是不需要运行库,界面简洁,体积小巧,还能输出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加密后的软件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9751660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存