专业丰富的破解论坛技术交流,提供软件安全,病毒分析,脱壳破解,安卓破解,加密解密等,由无数热衷于软件爱好者共同维护
 
发新帖
查看: 570|回复: 0

[技术文章] 十四节 逆向病毒分析(实战)

[复制链接]
玉面飞龙之王 发表于 2020-9-22 13:32:11 | 显示全部楼层
;HKEY_CURRENT_USER\ Software\Microsoft\Windows\CurrentVersion\Explorer
;句柄保存在变量 v_4 中
seg000:004D5388 test eax, eax
seg000:004D538A jnz short loc_4D53B2
;如果注册表打开失败,则直接返回 0
seg000:004D538C lea ecx, [ebp+var_8]
;ecx 指向变量 v_8,v_8 已经被初始化为 0x106
seg000:004D538F add edi, 0F0h
;edi 开始为字符串表指针,加上 0xf0 以后,指向字符串PINF
seg000:004D5395 push ecx
;参数 5(v_8 的指针)压栈
seg000:004D5396 push [ebp+arg_0]
;arg_0: 指向某变量/缓冲区的指针
;参数 4 压栈
seg000:004D5399 push 0
;参数 3 压栈
seg000:004D539B push 0
;参数 2 压栈
seg000:004D539D push edi
;参数 1(字符串PINF的指针)压栈
seg000:004D539E push [ebp+var_4]
;v_4 :注册表键句柄
;参数 0 压栈
seg000:004D53A1 call dword ptr [esi+30h]
;查函数地表,esi + 30h 保存的是 RegQueryValueKeyEx 的入口地址( 30h 对应序数 12)
;查 MSDN 以及 SDK 头文件,确定各个参数的含义
;参数 0:注册表鍵句柄
;参数 1:表示键值名称的字符串指针
;参数 2:未用,设为 0
;参数 3:指向双字的变量,用于接收键值类型,可以为 NULL,这里 0 表示 NULL
;参数 4:指向输出缓冲区的指针
;参数 5:指向双字变量(v_8),该变量指出输出缓冲区的大小,函数返回时,值被修改成实
;际复制到输出缓冲区的数据大小。V_8 初始值为 0x106,可见 arg_0 是指向个大小为 0x106
;字节的缓冲区,这里还无法确定PINF
的值是什么类型,该类型的确定需要看后期怎么
;使用 arg_0 指向的缓冲区了。
seg000:004D53A4 test eax, eax
seg000:004D53A6 setz bl
seg000:004D53A9 and ebx, 1
;RegQueryValueKeyEx 成功返回,设置 ebx 为 1,否则为 0
seg000:004D53AC push [ebp+var_4]
;参数 0(注册表键句柄)压栈
seg000:004D53AF call dword ptr [esi+34h]
;查函数地表,esi + 34h 保存的是 RegCloseKey 的入口地址( 34h 对应序数 13)
seg000:004D53B2

快速回复 返回顶部 返回列表