Archive for 九月, 2009
CString::MakeLower(),微软想的啥?
最近打算把MDecoder迁移到VS2005上,修改了greta的几个地方后终于编译过去了。运行的时候还是有些莫名的错误,比如:“An invalid argument was encountered”,发现是在CString::MakeLower()这个函数里抛的异常,一路跟下去,在
errno_t __cdecl _mbslwr_s_l( unsigned char *string, size_t sizeInBytes, _locale_t plocinfo )
有这么一段:
for (cp = string, dst = string; *cp != NULL; ++cp) { if (_ismbblead_l(*cp, _loc_update.GetLocaleT())) { int retval; unsigned char ret[4]; if ((retval = __crtLCMapStringA( _loc_update.GetLocaleT(), _loc_update.GetLocaleT()->mbcinfo->mblcid, LCMAP_LOWERCASE, (const char *)cp, 2, (char *)ret, 2, _loc_update.GetLocaleT()->mbcinfo->mbcodepage, TRUE )) == 0 ) { errno = EILSEQ; _RESET_STRING(string, sizeInBytes); return errno; }
,当碰到字符0×247时就会返回errno = EILSEQ,然后在ATLMFC_CRT_ERRORCHECK(::_mbslwr_s(_Str, _SizeInChars));里面就抛了个异常出来。OMG,我只是个菜鸟,微软何必这么折磨我呢?我看不懂上面的啥__crtLCMapStringA,我也不想看。
拿关键字:MakeLower() EILSEQ 去google,在这个链接里微软的人这么说:This issue is actually by design.这个问题就是这么设计的。
我靠,这么设计的???!!!
我只不过我要把字母都转成小写的而已,你抛个异常干毛啊?把能转成小写的转成小写的得了。汗,猜不透微软咋想的。可有大牛路过的给个指点?或许我可以用别的方法解决转换为小写的问题,可是指不定别的地方又冒出这种异常来,这不搞死我么。
MDecoder V0.2
懒惰了N久后,更新鸟,改用VC写,^_^,以下是更新说明:
1,增强解密功能。增加对base62,htmlship,MSsrenc等的解密,不过一般应该不用关心这个,使用默认的AUTO就可以解密大部分网马了。
2,增加自动模式。使用MDecoder.exe -auto来进入自动解密模式。输入命令似乎有点麻烦,不过我想不出在哪里添加界面了,建议经常使用这种模式的人添加一个快捷方式吧,里面带上参数。
3,关于页面里增加检查更新的功能。最近老改,BUG和新想法层出不穷,指不定哪天就更新了,为了方便,增加了检查更新的功能。
4,模仿Freshow增加了替换和翻转的选项,还有HEX解密时输入KEY。不过似乎一般不用输入KEY,AUTO解密的时候我会暴力查找KEY并解密。
5,其他的零碎:wdomain.ini中有过滤链接时会去掉的域名,你可以在里面自己添加删减,每行一个域名就可以了。自动解密模式会自动丢弃重复的链接。
下载地址:http://mtian.net/down/MDecoder.zip
后续计划:
这个只是我个人业余时间写的小东西,恩,还有许多打算做而没有做的事,比如AUTO模式中线程的限制,目前是有多少发多少线程的。还有配置文件啊,打算将解密的一些参数放配置文件里。解密功能还得继续增强,一些网马分多文件,需要要拼起来解密的,目前就是一个文件按一个文件看的,那个暴力提取shellcode只能暂时挡一挡需求。不过这种MDecoder的静态解密似乎不能从根本上解决问题,网马终究是给浏览器的HTML页面(呃,或者flash,pdf等),所以有空的话,研究下firefox和chrome的源码也是有必要的。呃,这些都是想法,想法而已,我并不承诺以后一定会做的。
感谢:
感谢glacier_lk对我一如既往的支持。
感谢SJF帮我改BUG,初学VC,总是有各种菜菜的问题,o(∩_∩)o…哈哈。
感谢所有即将使用这个小东东的同学,你们才是我最终的动力(我靠,我真会说话)。
截图:
base62解密(这种压缩算法的官方似乎就是这么命名的):
htmlship解密(我瞎起的名):
MSsrcenc解密(我瞎起的名,too):
vbs_char解密(呃,名字同上):
暴力提取shellcode解密,包含在自动解密中,如其名,很暴力,效率低,而且我不能保证他的准确性,但有些时候还需要他,哈哈:
最后是一张自动解密的图:
近期评论
- mtian 发表在《JScript.Encode的解密》
- Demon 发表在《JScript.Encode的解密》
- mtian 发表在《base62的解码分析》
- Charles 发表在《base62的解码分析》
- 南瓜 发表在《迅雷客户端漏洞三个》





