lab07-01
1惯例静态分析一波结论::无加密,输入表两个关键dll,显示程序会有网络和注册表相关操作(ADVAPI32.dll和WININET.dll),kernel.dll导入了互斥量和线程相关操作,认识的dll和函数也就这些了
再看看字符串
分析主函数:看两个关键参数(lpservicename和lpserviceproc)和两个关键函数(startservicectrldispatcher和sub_401040),startservocectrldispacher函数将主线程链接到服务控制管理器,说明lab07-01要作为服务程序运行,服务名字是MalService,开始运行地址是sub_401040,所以分析一下sub_401040就可以知道他在干嘛.
双击跳转到401040处,看程序流程图分析一波:
首先是openmutex检查互斥量HGL345是否存在,存在这说明已经有一个恶意程序在运行了,所以就直接就结束程序,如果不存在则createmutex创建这个互斥量
然后是打开openscmanager得到服务控制管理器句柄备用
然后getcurrentprocess得到进程句柄备用
然后getmodulefilename得到当前进程路径名备用
然后createservice把前面备用的都当参数传进去了创建了个malservice'服务,注意参数0x02(dwstarttype)是自启动
然后systemtimetofiletime将系统时间转换为文件格式备用,其中年设置为2100其他都是0(2010年1月1日00:00)然后他把这个时间传给了setwaitabletimer
然后createwaitabletimer创建同步定时器对象,对象句柄备用
然后setwaitabletimer激活(使用前两个备用作为关键参数)
最后waitforsingleobject等待定时器对象处于信号状态或超时间间隔结束(FFFFFFFFh这么长时间等到啥时候),只有等待成功返回0那么程序就接着做,否则跳转去sleep了(依照参数要等到2100年1月1日吃啊处于信号状态)
那么成功等待之后做啥呢:
首先设置了14h大小的循环控制变量,然后createthread创建线程 14h次就也转去睡觉了.那么这些线程做啥:看startaddress
就做一件事一直链接加载这个网址http://www.ma