创建重要文件

179 篇文章 0 订阅
86 篇文章 0 订阅

创建重要文件

 

//----- (10121F8A)--------------------------------------------------------
int __fastcall CreateImportantFiles(int a1, int*a2, int a3, int a4, int *a5, int *a6, int *a7)
{

  v85 =-2147023537;
  v7 =a2;
  if (a1 & 0xFFFFFFFE)  // dwFlags 0 1
  {
  }

  v50 =20;
  v51 =0;
  v53 =0;
  v54 =0;
  v52 =64;
  if (a1 & 1)
  {
    v68 =0;
    v10 =SimpleCreateDirectory(a2, (int)g_LUNICODE_STRING_EFI,(int *)&v68);
    v70 =0;
    v12 =SimpleCreateDirectory(v68, (int)g_LUNICODE_STRING_Microsoft,(int *)&v70);
    v69 =0;
    v13 =SimpleCreateDirectory(v70,(int)g_LUNICODE_STRING_boot, &v69);
    AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v69);
    AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v70);
    AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v68);
  }
  v84 =0;
  v14 =SimpleCreateDirectory(v7, (int)g_LUNICODE_STRING_Windows,(int *)&v84);
  v83 =0;
  v15 =SimpleCreateDirectory(v7,(int)g_LUNICODE_STRING_Program_space_Files, (int *)&v83);
  v82 =0;
  v16 =SimpleCreateDirectory(v83,(int)g_LUNICODE_STRING_Common_space_Files, &v82);
  v17 =*(_DWORD*)(a4+ 48);
  if (v17 == 6|| v17 ==9 ||v17 == 5|| v17 ==12 )
  {
    v70 =0;
    v18 =SimpleCreateDirectory(
            v7,
            (int)g_LUNICODE_STRING_Program_space_Files_space__lparen_x86_rparen_,
            (int*)&v70);
    v69 =0;
    v20 =SimpleCreateDirectory(v70,(int)g_LUNICODE_STRING_Common_space_Files, &v69);
    AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v69);
    AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v70);
  }
  v81 =0;
  v21 =SimpleCreateDirectory(v7,(int)g_LUNICODE_STRING_Users, (int *)&v81);
  v80 =0;
  v22 =SimpleCreateDirectory(v81,(int)g_LUNICODE_STRING_Default, &v80);
  v79 =0;
  v23 =SimpleCreateDirectory(v84,(int)g_LUNICODE_STRING_servicing, (int *)&v79);
  if (v23 < 0
    ||(v23 =SimpleCreateDirectory(v79,(int)g_LUNICODE_STRING_Packages, 0), v23 < 0)
    ||(v23 =SimpleCreateDirectory(v79,(int)g_LUNICODE_STRING_Sessions, 0), v23 < 0) )
  {
  }

  v78 =0;
  v24 =SimpleCreateDirectory(v84,(int)g_LUNICODE_STRING_System32, (int *)&v78);
  v77 =0;
  v25 =SimpleCreateDirectory(v78,(int)g_LUNICODE_STRING_CatRoot, (int *)&v77);
  if (v25 < 0
    ||(v25 =SimpleCreateDirectory(
                v77,
                (int)g_LUNICODE_STRING__lbrace_F750E6C3_dash_38EE_dash_11D1_dash_85E5_dash_00C04FC295EE_rbrace_,
                0),
        v25 <0) )
  {
  }

  v76 =0;
  v26 =SimpleCreateDirectory(v78,(int)g_LUNICODE_STRING_config, &v76);
  v75 =0;
  v27 =SimpleCreateDirectory(v78, (int)g_LUNICODE_STRING_SMI,(int *)&v75);
  v74 =0;
  v28 =SimpleCreateDirectory(v75,(int)g_LUNICODE_STRING_Schema, &v74);
  v73 =0;
  v29 =SimpleCreateDirectory(v75,(int)g_LUNICODE_STRING_Store, (int *)&v73);
  v72 =0;
  v30 =SimpleCreateDirectory(v73,(int)g_LUNICODE_STRING_Machine, &v72);
  if (v30 < 0
    ||(v30 =SimpleCreateDirectoryWithSecurity(
                1024,
                (int)v78,
                (int)g_LUNICODE_STRING_DriverStore,
                0),
        v30 <0)
    ||(v30 =CreateWinSxSSkeletonWithSecurity(v84), v30 < 0) )
  {
  }

  v31 =v74;
  v51 =g_LUNICODE_STRING_WcmTypes_dot_xsd;
  v71 =0;
  v32 =*(_DWORD*)v74;
  v33 =(*(int (__thiscall**)(int,_DWORD, signed int, int *,signed int, signed int, signed int, signedint, int *, _DWORD))(v32 + 28))(
          v31,
          0,
          1179926,
          &v50,
          128,
          7,
          5,
          16480,
          &v71,
          0);
  if (v33 < 0
    ||(v34 =v71,
        v35 =*(int(__thiscall **)(int, _DWORD, int *))(*(_DWORD *)v71 + 28),
        v33 =v35(v34, 0,dword_10012020),
        v33 <0) )
  {
  }

  v36 =*a5;
  *a5= v76;
  v76 =v36;
  v37 =*a6;
  *a6= v80;
  v80 =v37;
  v38 =*a7;
  *a7= v72;
  v65 =0;
  v66 =0;
  v67 =0;
  v39 =*v7;
  v72 =v38;
  v40 =*(int(__thiscall **)(int *,signed int, int *))(v39 + 20);
  v41 =v40(v7, 2, &v65);
  v42 =v84;
  v62 =0;
  v63 =0;
  v64 =0;
  v43 =*(int(__thiscall **)(_DWORD *,signed int, int *))(*v84 + 20);
  v44 =v43(v42, 2, &v62);
  v59 =0;
  v60 =0;
  v61 =0;
  v45 =RtlConvertNtFilePathToWin32FilePath((int)&v65,&v59);
  v56 =0;
  v57 =0;
  v58 =0;
  v46 =RtlConvertNtFilePathToWin32FilePath((int)&v62,&v56);
  v9 =COM::CopyOut((int)&v59,(_DWORD *)(a4 + 8));
  v47 =(int *)&v56;
  v9 =COM::CopyOut((int)&v56,(_DWORD *)(a4 + 12));
  if (v9 < 0|| (v9= COM::CopyOut(a3, (_DWORD *)(a4 + 16)), v9 <0) )
  {  }
  AutoPODBase<_LUNICODE_STRING,Auto<_LUNICODE_STRING>>::Close((int)&v56);
  AutoPODBase<_LUNICODE_STRING,Auto<_LUNICODE_STRING>>::Close((int)&v59);
  AutoPODBase<_LUNICODE_STRING,Auto<_LUNICODE_STRING>>::Close((int)&v62);
  AutoPODBase<_LUNICODE_STRING,Auto<_LUNICODE_STRING>>::Close((int)&v65);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v71);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v72);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v73);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v74);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v75);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v76);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v77);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v78);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v79);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v80);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v81);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v82);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v83);
  AutoPointerBase<IRtlCdfStringTableEnumerator *,Auto<IRtlCdfStringTableEnumerator*>>::Close(&v84);
  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值