xiaochen666 发表于 2022-5-7 18:20

aes加密类型转换问题

通过打开文件获取 shellcode.c
现在是可以正常输出的


使用的aes库是:https://github.com/Tu3k/AES_Encry
这里有两个疑问:
1. unsigned char Temp里面现在存的是不带 \x 字符的shellcode,如何在循环时加上例:\xfc

2. 类型转换怎么符合他要求,弄了一下午 还是不清楚


花边下丶情未央 发表于 2022-5-7 18:49

加解密数据后,看内存里面,如果文件头正常直接强转用就行
我有用过base64加解密shellcode的,打乱后其实和其它加解密效果差不多一样
经过CryptStringToBinary的解密速度要快的很多

xiaochen666 发表于 2022-5-7 18:59

花边下丶情未央 发表于 2022-5-7 18:49
加解密数据后,看内存里面,如果文件头正常直接强转用就行
我有用过base64加解密shellcode的,打乱后其实和其 ...

强转试了,不行,一堆码

wangyujie96 发表于 2022-5-7 19:08

不带 \x 字符就是十六进制文本吧。
"bc"字符串->0xBC字节是吧?你搜十六进制文本转字节

花边下丶情未央 发表于 2022-5-7 19:16

xiaochen666 发表于 2022-5-7 18:59
强转试了,不行,一堆码

我就想知道你加密这个code是给哪个语言用?干嘛非要纠结打印出来的数据带\x呢,这个只是表示十六进制数据
另外 你不用去纠结申请 无符号的内存还是有符号的,你看一下内存一不一样就行了,还有加密后最终还是要解密使用,最重要就是看解密后能不能加载上就可以了

OAOm 发表于 2022-5-7 19:59

学到了学到了

xiaochen666 发表于 2022-5-7 20:15

花边下丶情未央 发表于 2022-5-7 19:16
我就想知道你加密这个code是给哪个语言用?干嘛非要纠结打印出来的数据带\x呢,这个只是表示十六进制数据
...

十六进制到没怎么纠结,主要是AES_encrypt 这个函数要 char* 型我不会转师傅,强转和 (char*)& 都输出的不沾边的

苏紫方璇 发表于 2022-5-7 20:24

看着改改应该能用int main(int argc, char* argv[])
{

        char buf[] = "\\x00\\x01\\x02\\x03\\x04\\x05\\xff\\x06";
        char str = { 0 };
        char *Temp = new char;

        char key[] = "abcd1234abcd1234";
        char cData;

        int j = 0;
        int k = 0;
        //减去字符串末尾0的位置
        for (int i = 0; i < sizeof(buf)-1; i += 4)
        {
                str = buf;
                str = buf;
                sscanf(str, "%02x", &k);
                Temp = (char)k;
                j++;
        }
        int clen = AES_encrypt(Temp, sizeof(buf)/4, cData, key);
        printf("%d", clen);
        delete[] Temp;
        return 0;
}

xiaolai1995 发表于 2022-5-7 22:41

学习了,学习了

xiaochen666 发表于 2022-5-7 22:42

苏紫方璇 发表于 2022-5-7 20:24
看着改改应该能用int main(int argc, char* argv[])
{



我愿称你为最强战神,用这个思路 做出来了{:301_978:}
页: [1] 2
查看完整版本: aes加密类型转换问题