今天分析一个加了变形壳的样本,感觉不像有什么保护,可是一运行就退出了。仔细调试了一下,发现是壳中这段代码导致的退出:
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,若操作系统是简体中文就退出了。

【责编:Ken】