首先是网上的分析writeup:

https://jmprsp.wordpress.com/2016/02/09/practical-malware-analysis-ida-pro-lab-5/

PSLIST:检测操作系统平台为VER_PLATFORM_WIN32_NT;操作系统版本不低于windowsXP(没找到证据)

问题14处的时间应该是30s,30000ms


问题17:找寻0xED,一个一个翻可以找到书中的特征汇编码:in eax,dx


https://debug.fail/2015/11/practical-malware-analysis-lab-5-1-notes/

上面这个链接显示的是简洁结果,没有太多分析过程


从书后答案学到的新姿势

View->Graphs->User xrefs chart...以图示形式,看到当前函数的调用关系链表

利用GetVersionEx查询当前系统平台信息

这个链接提供了查询Windows版本的程序以及常数值来源。本质上就是Microsoft在某些标志位上进行了版本号与标记位置的一一对应,我们只需要按照规定去查询就好

http://chenhailong.iteye.com/blog/1856505


从下面这两个可以看到VERSIONINFO的结构体定义以及对应的含义

http://blog.csdn.net/yyingwei/article/details/8286658

https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms724833(v=vs.85).aspx

其中dwPlatformId的值为2意思是:VER_PLATFORM_WIN32_NT

\

所以100036C3函数的意思是:判断当前windows版本不低于XP


IDApython

ScreenEA():获取当前光标位置,并且作为偏移值使用

Byte():取当前地址的字符值

PatchByte():将字节写入IDA的显示中,但不会修改原始文件(修改原始文件需要用到二进制编辑器等如010editor,将对应的位置的字符patch成正确的字符)