稍微优化

This commit is contained in:
aixiao 2022-09-14 16:47:34 +08:00
parent fbfc828997
commit e4243709c2
2 changed files with 34 additions and 30 deletions

View File

@ -2,16 +2,16 @@ CROSS_COMPILE ?=
CC := $(CROSS_COMPILE)gcc CC := $(CROSS_COMPILE)gcc
STRIP := $(CROSS_COMPILE)strip STRIP := $(CROSS_COMPILE)strip
CFLAGS += -g -Wall -Os CFLAGS += -g -Wall -Os
LIBS = -static LDFLAGS +=
OBJ := sha OBJ := sha
all: aes.o sha.o all: aes.o sha.o
$(CC) $(CFLAGS) -o $(OBJ) $^ $(LIBS) $(CC) $(CFLAGS) -o $(OBJ) $^ $(LDFLAGS)
.c.o: .c.o:
$(CC) $(CFLAGS) -c $< $(CC) $(CFLAGS) -c $<
install: install:
cp $(OBJ) /bin/sha cp $(OBJ) /bin/
uninstall: uninstall:
rm /bin/$(OBJ) rm /bin/$(OBJ)

58
sha.c
View File

@ -548,7 +548,7 @@ char *source_c[] = {
"}", "}",
"", "",
"#endif // #if defined(CTR) && (CTR == 1)", "#endif // #if defined(CTR) && (CTR == 1)",
"",
"static int oneHexChar2Hex(char hex)", "static int oneHexChar2Hex(char hex)",
"{", "{",
" int outHex = 0;", " int outHex = 0;",
@ -596,7 +596,7 @@ char *source_c[] = {
"}", "}",
"", "",
"int is_Resolver(char *shll_text, char *shbin)", "static int is_Resolver(char *shll_text, char *shbin)",
"{", "{",
" char *p, *p1;", " char *p, *p1;",
" char temp[270];", " char temp[270];",
@ -631,48 +631,46 @@ char *source_c[] = {
" }", " }",
" return 0;", " return 0;",
"}", "}",
"",
"#define BUFFER_SIZE 270",
"",
"int main(int argc, char *argv[])", "int main(int argc, char *argv[])",
"{", "{",
" uint8_t *Hex_string = (uint8_t *) malloc(encrypted_text_len*2);", " char *argvs[BUFFER_SIZE];",
" char *shbin = (char *) malloc(270);", " int l=1;",
"", " int i=4;",
" memset(shbin, 0, 270);",
" memset(Hex_string, 0, encrypted_text_len*2);",
"",
"",
" static uint8_t key[16] = \"aixiao\";", " static uint8_t key[16] = \"aixiao\";",
" struct AES_ctx ctx;", " struct AES_ctx ctx;",
" uint8_t *Hex_string = (uint8_t *) malloc(encrypted_text_len*2);",
" char *shbin = NULL;",
"",
"",
" AES_init_ctx(&ctx, key);", " AES_init_ctx(&ctx, key);",
"",
"", " memset(Hex_string, 0, encrypted_text_len*2);",
" HexString2Hex((char *)Encrypted_data, (char *)Hex_string, sizeof(Encrypted_data));", " HexString2Hex((char *)Encrypted_data, (char *)Hex_string, sizeof(Encrypted_data));",
"",
"",
" AES_ECB_decrypt(&ctx, Hex_string);", " AES_ECB_decrypt(&ctx, Hex_string);",
" //printf(\"%s\\n\", Hex_string);", " //printf(\"%s\\n\", Hex_string);",
"", "",
"", "",
" shbin = (char *) malloc(BUFFER_SIZE);",
" memset(shbin, 0, BUFFER_SIZE);",
" if (-1 == is_Resolver((char *)Hex_string, shbin))", " if (-1 == is_Resolver((char *)Hex_string, shbin))",
" {", " {",
" goto EXIT;", " goto EXIT;",
" }", " }",
" //printf(\"%s\\n\", shbin);", " //printf(\"%s\\n\", shbin);",
"",
" char *argvs[270];",
"", "",
" argvs[0] = argv[0];", " argvs[0] = argv[0];",
" argvs[1] = \"-c\";", " argvs[1] = \"-c\";",
" argvs[2] = (char *)Hex_string;", " argvs[2] = (char *)Hex_string;",
" argvs[3] = argv[0];", " argvs[3] = argv[0];",
"", "",
" int j=1;",
" int i=4;",
" for(i=4; i<=argc-1+4; i++)", " for(i=4; i<=argc-1+4; i++)",
" {", " {",
" argvs[i] = argv[j];", " argvs[i] = argv[l];",
" j++;", " l++;",
" }", " }",
"", "",
@ -699,7 +697,8 @@ int main(int argc, char *argv[])
} }
open_file(argv[1]); open_file(argv[1]);
struct AES_ctx ctx;
static uint8_t key[16] = "aixiao"; static uint8_t key[16] = "aixiao";
uint8_t text_content[file_size * 2]; uint8_t text_content[file_size * 2];
uint8_t text_content_out[file_size * 2]; uint8_t text_content_out[file_size * 2];
@ -727,18 +726,16 @@ int main(int argc, char *argv[])
memset(buildcmd, 0, BUFFER_SIZE*10); memset(buildcmd, 0, BUFFER_SIZE*10);
memcpy(text_content, buff, strlen(buff)); memcpy(text_content, buff, strlen(buff));
struct AES_ctx ctx;
AES_init_ctx(&ctx, key); AES_init_ctx(&ctx, key);
AES_ECB_encrypt(&ctx, text_content); AES_ECB_encrypt(&ctx, text_content);
//转16进制字符串 //转16进制字符串
hex2str(text_content, file_size, (char *)hexString); hex2str(text_content, file_size, (char *)hexString);
printf("%s\n", hexString); //printf("%s\n", hexString);
//拼接 //拼接
@ -780,24 +777,32 @@ int main(int argc, char *argv[])
sprintf(buildcmd, "gcc -Wall -Os %s -o %s", sourcefile, binfile); sprintf(buildcmd, "gcc -Wall -Os %s -o %s", sourcefile, binfile);
strcat(buildcmd, " && strip ");
strcat(buildcmd, binfile);
// 编译 // 编译
if (0 != system(buildcmd)) { if (0 != system(buildcmd)) {
return -1; return -1;
} }
remove(sourcefile); remove(sourcefile);
free(buff); free(buff);
// 压缩 // 压缩
if (0 == system("which upx 1> /dev/null")) { if (0 == system("which upx 1> /dev/null")) {
FILE *fp = NULL;
char upxcommand[BUFFER_SIZE]; char upxcommand[BUFFER_SIZE];
memset(upxcommand, 0, BUFFER_SIZE); memset(upxcommand, 0, BUFFER_SIZE);
strcpy(upxcommand, "upx -9 "); strcpy(upxcommand, "upx -9 ");
strcat(upxcommand, binfile); strcat(upxcommand, binfile);
sleep(1); sleep(1);
if (0 != system(upxcommand)) { fp = popen(upxcommand, "r");
if (NULL == fp)
{
return -1; return -1;
} }
pclose(fp);
} }
@ -805,4 +810,3 @@ int main(int argc, char *argv[])
} }