今天分析一个加了变形壳的样本,感觉不像有什么保护,可是一运行就退出了。仔细调试了一下,发现是壳中这段代码导致的退出:
call dword ptr ds:[edi-10] ;GetACP
cmp eax,3A8
jnz short next
push 0
call dword ptr ds:[edi-14] ;ExitProcess
上网查了一下,GetACP() 这个 API 用于判断目前正在生效的ANSI代码页,返回值为目前活动ANSI代码页的标识符,可能的代码页包括下面这些:
印象中熊猫烧香也是用这个 API 判断日文操作系统的。0x3A8 即 936,若操作系统是简体中文就退出了。
call dword ptr ds:[edi-10] ;GetACP
cmp eax,3A8
jnz short next
push 0
call dword ptr ds:[edi-14] ;ExitProcess
上网查了一下,GetACP() 这个 API 用于判断目前正在生效的ANSI代码页,返回值为目前活动ANSI代码页的标识符,可能的代码页包括下面这些:
874 | 泰语 | 932 | 日语 |
936 | 中文(简体) | 949 | 朝鲜语 |
950 | 中文(台湾和香港繁体) | 1200 | Unicode |
1250 | 东欧语言 | 1251 | 西里尔语 |
1252 | 美国和西欧语言 | 1253 | 希腊语 |
1254 | 土耳其语 | 1255 | 希伯来语 |
1256 | 阿拉伯语 | 1257 | 波罗的语 |
印象中熊猫烧香也是用这个 API 判断日文操作系统的。0x3A8 即 936,若操作系统是简体中文就退出了。