20211011gfsj_re_lgniteMe

查壳,无壳。拉去IDA

int __cdecl main(int argc, const char **argv, const char **envp)
{int result; // eaxsize_t i; // [esp+4Ch] [ebp-8Ch]char v5[4]; // [esp+50h] [ebp-88h]char v6[28]; // [esp+58h] [ebp-80h]char v7; // [esp+74h] [ebp-64h]sub_402B30(&unk_446360, "Give me your flag:");//这个应该是类似于printf函数sub_4013F0(sub_403670);sub_401440(v6, 127);if ( strlen(v6) < 0x1E && strlen(v6) > 4 )//输入的字符串要大于4个字符小于0x1E个字符{strcpy(v5, "EIS{");for ( i = 0; i < strlen(v5); ++i ){//验证前4个字符符合“EIS{”if ( v6[i] != v5[i] ){sub_402B30(&unk_446360, "Sorry, keep trying! ");sub_4013F0(sub_403670);return 0;}}if ( v7 == 125 )//"}"的ASCII码为125{if ( (unsigned __int8)sub_4011C0(v6) )//最重要的函数sub_4011C0(v6)sub_402B30(&unk_446360, "Congratulations! ");elsesub_402B30(&unk_446360, "Sorry, keep trying! ");sub_4013F0(sub_403670);result = 0;}else{sub_402B30(&unk_446360, "Sorry, keep trying! ");sub_4013F0(sub_403670);result = 0;}}else{sub_402B30(&unk_446360, "Sorry, keep trying!");sub_4013F0(sub_403670);result = 0;}return result;
}
bool __cdecl sub_4011C0(char *a1)
{size_t v2; // eaxsigned int v3; // [esp+50h] [ebp-B0h]char v4[32]; // [esp+54h] [ebp-ACh]int v5; // [esp+74h] [ebp-8Ch]int v6; // [esp+78h] [ebp-88h]size_t i; // [esp+7Ch] [ebp-84h]char v8[128]; // [esp+80h] [ebp-80h]if ( strlen(a1) <= 4 )return 0;i = 4;v6 = 0;while ( i < strlen(a1) - 1 )v8[v6++] = a1[i++];//将EIS{xxxx}中的内容赋值到v8数组     b[i]v8[v6] = 0;v5 = 0;v3 = 0;memset(v4, 0, 0x20u);for ( i = 0; ; ++i ){v2 = strlen(v8);if ( i >= v2 )break;if ( v8[i] >= 97 && v8[i] <= 122 )//97->a,122->z{//将小写改为大写v8[i] -= 32;v3 = 1;}if ( !v3 && v8[i] >= 65 && v8[i] <= 90 )//65->A,90->Zv8[i] += 32;//将大写改为小写v4[i] = byte_4420B0[i] ^ sub_4013C0(v8[i]);//byte_4420B0[i]		c[i]与sub_4013C0()函数异或v3 = 0;}return strcmp("GONDPHyGjPEKruv{{pj]X@rF", v4) == 0;		//a[i]
}
.data:004420B0 ; char byte_4420B0[32]
.data:004420B0 byte_4420B0     db 0Dh                  ; DATA XREF: sub_4011C0+1A0↑r
.data:004420B1                 db  13h
.data:004420B2                 db  17h
.data:004420B3                 db  11h
.data:004420B4                 db    2
.data:004420B5                 db    1
.data:004420B6                 db  20h
.data:004420B7                 db  1Dh
.data:004420B8                 db  0Ch
.data:004420B9                 db    2
.data:004420BA                 db  19h
.data:004420BB                 db  2Fh ; /
.data:004420BC                 db  17h
.data:004420BD                 db  2Bh ; +
.data:004420BE                 db  24h ; $
.data:004420BF                 db  1Fh
.data:004420C0                 db  1Eh
.data:004420C1                 db  16h
.data:004420C2                 db    9
.data:004420C3                 db  0Fh
.data:004420C4                 db  15h
.data:004420C5                 db  27h ; '
.data:004420C6                 db  13h
.data:004420C7                 db  26h ; &
.data:004420C8                 db  0Ah
.data:004420C9                 db  2Fh ; /
.data:004420CA                 db  1Eh
.data:004420CB                 db  1Ah
.data:004420CC                 db  2Dh ; -
.data:004420CD                 db  0Ch
.data:004420CE                 db  22h ; "
.data:004420CF                 db    4
int __cdecl sub_4013C0(int a1)
{//内容与0x55异或再加上72return (a1 ^ 0x55) + 72;//b[i]=(a[i]^0x55)+72//a[i]=(b[i]-72)^0x55
}

exp

#include
#include
int main()
{char a[] = "GONDPHyGjPEKruv{{pj]X@rF";int b[25];int c[32] = { 0x0D,0x13,0x17,0x11,2,1,0x20,0x1D,0x0C,2,0x19,0x2F,0x17,0x2B,0x24,0x1F,0x1E,0x16,9,0x0F,0x15,0x27,0x13,0x26,0x0A,0x2F,0x1E,0x1A,0x2D,0x0C,0x22,4 };int i;int v3;for (i = 0; i < strlen(a); i++){v3 = 0;b[i] = c[i]^a[i];b[i] = (b[i] - 72) ^ 0x55;if (b[i] >= 97 && b[i] <= 122)//97->a,122->z{//将小写改为大写b[i] -= 32;v3 = 1;}if (!v3 && b[i] >= 65 && b[i] <= 90)//65->A,90->Zb[i] += 32;//将大写改为小写}for(i=0;i<strlen(a);i++)printf("%c",(char)b[i]);}
//wadx_tdgk_aihc_ihkn_pjlm


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部