读书人

这么写行么?类似这样的功能咋实现

发布时间: 2013-07-04 11:45:44 作者: rapoo

这样写行么?类似这样的功能咋实现

unsigned char data[54] = {
0x22, 0x2F, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2F, 0x25, 0x73, 0x2F, 0x4C, 0x69, 0x62, 0x72, 0x61,
0x72, 0x79, 0x2F, 0x4C, 0x61, 0x75, 0x6E, 0x63, 0x68, 0x41, 0x67, 0x65, 0x6E, 0x74, 0x73, 0x2F,
0x63, 0x6F, 0x6D, 0x2E, 0x61, 0x70, 0x70, 0x6C, 0x65, 0x2E, 0x6C, 0x6F, 0x67, 0x69, 0x6E, 0x2E,
0x70, 0x6C, 0x69, 0x73, 0x74, 0x22
};

这个是"/Users/%s/Library/LaunchAgents/com.apple.login.plist"这个字符串
我想用sprintf(buff,data,name);代替
sprintf(buff,"/Users/%s/Library/LaunchAgents/com.apple.login.plist",name);
实现类似加密的过程,能成么?




[解决办法]
可以, 不过最后得多加一个 0x00 才行.
[解决办法]
data数组没有字符串结束符'\0',这个是不行的,而且这个只是蒙人玩而已,哪里就加密了!
[解决办法]
加密的话可以这样:取出数组中的每一个数据,分别与0xDF进行或运算 或者 异或运算,然后再把数据的前4位与后4位交换,组成一个新的数据;解密的话按照此过程反操作就行。
[解决办法]
sprintf的第二个参数是格式化控制参数吧?
[解决办法]
unsigned char data[55] = {
0x87,0x8A,0xF0,0xD6,0xC0,0xD7,0xD6,0x8A,0x80,0xD6,0x8A,0xE9,0xCC,0xC7,0xD7,0xC4,
0xD7,0xDC,0x8A,0xE9,0xC4,0xD0,0xCB,0xC6,0xCD,0xE4,0xC2,0xC0,0xCB,0xD1,0xD6,0x8A,
0xC6,0xCA,0xC8,0x8B,0xC4,0xD5,0xD5,0xC9,0xC0,0x8B,0xC9,0xCA,0xC2,0xCC,0xCB,0x8B,
0xD5,0xC9,0xCC,0xD6,0xD1,0x87,0x00
};
for (int i=0;i<54;i++) data^=0xA5;
sprintf(buff,data,name);
for (int i=0;i<54;i++) data^=0xA5;

读书人网 >C语言

热点推荐