欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创][原创]震网~WTR4141.TMP分析

[原创][原创]震网~WTR4141.TMP分析

前一段熟悉了用户态的API Hook,而震网采用用户态IATHook来实现文件隐藏,所以就拿来练练手,对其进行逆向分析,顺便学学其中的方法。将DLL模块释放为磁盘文件然后加载,而是直接拷贝到内存中,然后模拟DLL的加载过程。内存中通过调用导出函数1跳转到DllGetClassObject,函数的Hook功能就在此部分完成,下面主要对其进行分析。整个函数的结构如下图所示:

函数sub_10002340加载4132.tmp(病毒主dll),然后解析,完成病毒文件更新。函数sub_100019A0完成Hook功能。从函数中我们可以看到主要Hook了FindFirstFileW、FindNextFileW、FindFirstFileExW、NtQueryDirectoryFile、ZwQueryDirectoryFile这5个函数
IATHook实现如下:

PE头+78H就是PE的IMAGE_DATA_DIRECTORY[0],也就是V4的值
78H:输出表
V11:导出表地址
V5:导出表名称
V10:导出表中成员个数
v9 = v4 + a1 + 0x24
V9:导出表序列号数组

遍历导出表的导出名称表,与要Hook的函数名称进行比较
然后定位到要Hook的Dll的位置,利用同样的方法找到其导入表地址IMAGE_DATA_DIRECTORY[1]

v7 = *(v6 + a2 + 12);
  v8 = a2 + v6;
  v9 = *(v8 + 16);
  v10 = (a2 + v7);
  v11 = (v9 + a2);
  v12 = *v8 + a2;
V9:导入地址表(IAT)的RVA       V11:导入地址表
V8:dll的导入名称表(INT)的RVA  V12:导入名称表地址
V7:DLL导入表映像文件的名字RVA  V10:dll名称
f (!lstrcmpiA(lpString1, v10) )
{
    v13 = *v12;
    v14 = *v12 < 0;
}
找到DLL所在的名称表,保存为v12和v13
接着通过DLL的名称表找到HookApi对应的地址

在DLL中找到HookDll后,直接将其值修改为自己要执行的API a5
*v11 = a5
A5的值为sub_100019A0的参数
Hook后执行的函数主要完成对函数返回结果的过滤

病毒样本下载地址:
http://download.csdn.net/detail/flypuam/8060003

上传的附件 9.png
QQ截图20141224094947.png
1.png
2.png
3.png
4.png
7.png

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功