diff --git a/definitions/AreaTrigger.dbd b/definitions/AreaTrigger.dbd index 9489d62e1b..dd28ced3b2 100644 --- a/definitions/AreaTrigger.dbd +++ b/definitions/AreaTrigger.dbd @@ -67,7 +67,7 @@ box_width box_height box_yaw -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> ContinentID<32> x diff --git a/definitions/CreatureDisplayInfo.dbd b/definitions/CreatureDisplayInfo.dbd index 49ed4003df..ed3842c462 100644 --- a/definitions/CreatureDisplayInfo.dbd +++ b/definitions/CreatureDisplayInfo.dbd @@ -90,7 +90,7 @@ creatureGeosetData<32> objectEffectPackageID<32> animReplacementSetID<32> -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> modelID<32> soundID<32> diff --git a/definitions/CreatureFamily.dbd b/definitions/CreatureFamily.dbd index 533bca6cb6..787fe7244c 100644 --- a/definitions/CreatureFamily.dbd +++ b/definitions/CreatureFamily.dbd @@ -49,7 +49,7 @@ petFoodMask<32> name_lang iconFile -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> minScale minScaleLevel<32> diff --git a/definitions/CreatureModelData.dbd b/definitions/CreatureModelData.dbd index e2d00d9efe..4720514833 100644 --- a/definitions/CreatureModelData.dbd +++ b/definitions/CreatureModelData.dbd @@ -135,7 +135,7 @@ missileCollisionRadius missileCollisionPush missileCollisionRaise -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> flags<32> ModelName diff --git a/definitions/CreatureSoundData.dbd b/definitions/CreatureSoundData.dbd index 83cc0497c4..e50b35323a 100644 --- a/definitions/CreatureSoundData.dbd +++ b/definitions/CreatureSoundData.dbd @@ -116,7 +116,7 @@ tauntSoundID<32> soundFidget<32>[5] customAttack<32>[4] -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> soundExertionID<32> soundExertionCriticalID<32> diff --git a/definitions/CreatureSpellData.dbd b/definitions/CreatureSpellData.dbd index 3d8bf0abc9..3ff52e4785 100644 --- a/definitions/CreatureSpellData.dbd +++ b/definitions/CreatureSpellData.dbd @@ -8,7 +8,7 @@ $id$ID<32> spells<32>[4] availability<32>[4] -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> spells<32>[4] availability<32>[4] diff --git a/definitions/Faction.dbd b/definitions/Faction.dbd index ef38442802..7bdd9955f6 100644 --- a/definitions/Faction.dbd +++ b/definitions/Faction.dbd @@ -64,7 +64,7 @@ parentFactionCap<32>[2] name_lang description_lang -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> reputationIndex<32> reputationRaceMask<32>[4] diff --git a/definitions/FactionTemplate.dbd b/definitions/FactionTemplate.dbd index 4dbbbca3b0..f6a02336c7 100644 --- a/definitions/FactionTemplate.dbd +++ b/definitions/FactionTemplate.dbd @@ -29,7 +29,7 @@ factionGroup<8> friendGroup<8> enemyGroup<8> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> faction<32> flags<32> diff --git a/definitions/ItemDisplayInfo.dbd b/definitions/ItemDisplayInfo.dbd index 222019d34d..5417df4acc 100644 --- a/definitions/ItemDisplayInfo.dbd +++ b/definitions/ItemDisplayInfo.dbd @@ -68,7 +68,7 @@ texture[8] itemVisual<32> particleColorID<32> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> modelName[2] modelTexture[2] diff --git a/definitions/ItemRandomProperties.dbd b/definitions/ItemRandomProperties.dbd index 71de58e9db..cd649de57a 100644 --- a/definitions/ItemRandomProperties.dbd +++ b/definitions/ItemRandomProperties.dbd @@ -16,7 +16,7 @@ $noninlineid$ID<32> name_lang Enchantment<16>[5] -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> Name Enchantment<32>[5] diff --git a/definitions/ItemRandomSuffix.dbd b/definitions/ItemRandomSuffix.dbd index cdcc4d3bf8..7337444e7d 100644 --- a/definitions/ItemRandomSuffix.dbd +++ b/definitions/ItemRandomSuffix.dbd @@ -19,7 +19,7 @@ name_lang enchantment<16>[5] allocationPct<16>[5] -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> name_lang internalName diff --git a/definitions/ItemSet.dbd b/definitions/ItemSet.dbd index 1d193860c4..625a296eb0 100644 --- a/definitions/ItemSet.dbd +++ b/definitions/ItemSet.dbd @@ -33,7 +33,7 @@ setThreshold<32>[8] requiredSkill<32> requiredSkillRank<32> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> name_lang itemID<32>[17] diff --git a/definitions/ItemVisualEffects.dbd b/definitions/ItemVisualEffects.dbd index 41dfee0c80..c24efaf486 100644 --- a/definitions/ItemVisualEffects.dbd +++ b/definitions/ItemVisualEffects.dbd @@ -6,6 +6,6 @@ BUILD 6.0.1.18179, 4.0.0.11792 $id$ID<32> Model -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> Model diff --git a/definitions/ItemVisuals.dbd b/definitions/ItemVisuals.dbd index c088d86259..d328bccfd2 100644 --- a/definitions/ItemVisuals.dbd +++ b/definitions/ItemVisuals.dbd @@ -12,6 +12,6 @@ BUILD 8.0.1.26095, 8.0.1.26175 $noninlineid$ID<32> modelFileID<32>[5] -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> Slot<32>[5] diff --git a/definitions/Lock.dbd b/definitions/Lock.dbd index df3acb6fde..2e9f4dfe9a 100644 --- a/definitions/Lock.dbd +++ b/definitions/Lock.dbd @@ -20,7 +20,7 @@ Skill<16>[8] Type<8>[8] Action<8>[8] -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> Type<32>[8] Index<32>[8] diff --git a/definitions/ObjectEffect.dbd b/definitions/ObjectEffect.dbd index e4ed3d3054..99a647c7cb 100644 --- a/definitions/ObjectEffect.dbd +++ b/definitions/ObjectEffect.dbd @@ -51,7 +51,7 @@ offsetY offsetZ objectEffectModifierID<32> -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> name objectEffectGroupID<32> diff --git a/definitions/ObjectEffectGroup.dbd b/definitions/ObjectEffectGroup.dbd index 88cb91c5a7..0ecd05f6e3 100644 --- a/definitions/ObjectEffectGroup.dbd +++ b/definitions/ObjectEffectGroup.dbd @@ -6,6 +6,6 @@ BUILD 6.0.1.18179, 4.0.0.11792 $id$ID<32> name -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> name diff --git a/definitions/ObjectEffectModifier.dbd b/definitions/ObjectEffectModifier.dbd index 804919d8ae..e0e5151894 100644 --- a/definitions/ObjectEffectModifier.dbd +++ b/definitions/ObjectEffectModifier.dbd @@ -20,7 +20,7 @@ inputType<8> mapType<8> outputType<8> -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> inputType<32> mapType<32> diff --git a/definitions/ObjectEffectPackage.dbd b/definitions/ObjectEffectPackage.dbd index 88cb91c5a7..0ecd05f6e3 100644 --- a/definitions/ObjectEffectPackage.dbd +++ b/definitions/ObjectEffectPackage.dbd @@ -6,6 +6,6 @@ BUILD 6.0.1.18179, 4.0.0.11792 $id$ID<32> name -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> name diff --git a/definitions/ObjectEffectPackageElem.dbd b/definitions/ObjectEffectPackageElem.dbd index 8d762a9143..e09a6a6d66 100644 --- a/definitions/ObjectEffectPackageElem.dbd +++ b/definitions/ObjectEffectPackageElem.dbd @@ -17,7 +17,7 @@ objectEffectPackageID<16> objectEffectGroupID<16> stateType<16> -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> objectEffectPackageID<32> objectEffectGroupID<32> diff --git a/definitions/QuestInfo.dbd b/definitions/QuestInfo.dbd index 00acc27867..752560efe9 100644 --- a/definitions/QuestInfo.dbd +++ b/definitions/QuestInfo.dbd @@ -17,6 +17,6 @@ Profession<16> Type<8> Modifiers<8> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> InfoName_lang diff --git a/definitions/QuestSort.dbd b/definitions/QuestSort.dbd index 48d19a5653..5352b575c1 100644 --- a/definitions/QuestSort.dbd +++ b/definitions/QuestSort.dbd @@ -13,6 +13,6 @@ $noninlineid$ID<32> SortName_lang uiOrderIndex<8> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> SortName_lang diff --git a/definitions/SkillLine.dbd b/definitions/SkillLine.dbd index 208e6c72d7..4b2aca5fea 100644 --- a/definitions/SkillLine.dbd +++ b/definitions/SkillLine.dbd @@ -56,7 +56,7 @@ displayName_lang description_lang spellIconID<32> -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> categoryID<32> skillCostsID<32> diff --git a/definitions/SkillLineAbility.dbd b/definitions/SkillLineAbility.dbd index ab8b0a8030..eeacf1d707 100644 --- a/definitions/SkillLineAbility.dbd +++ b/definitions/SkillLineAbility.dbd @@ -85,7 +85,7 @@ trivialSkillLineRankLow<32> abandonable<32> characterPoints<32>[2] -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> skillLine<32> spell<32> diff --git a/definitions/SkillLineCategory.dbd b/definitions/SkillLineCategory.dbd index f36f4092fa..f5973494bc 100644 --- a/definitions/SkillLineCategory.dbd +++ b/definitions/SkillLineCategory.dbd @@ -8,7 +8,7 @@ $id$ID<32> name_lang sortIndex<32> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> name_lang sortIndex<32> diff --git a/definitions/SkillRaceClassInfo.dbd b/definitions/SkillRaceClassInfo.dbd index 09cbe3c186..93b98c6dae 100644 --- a/definitions/SkillRaceClassInfo.dbd +++ b/definitions/SkillRaceClassInfo.dbd @@ -40,7 +40,7 @@ minLevel<32> skillTierID<32> skillCostIndex<32> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> skillID<32> raceMask<32> diff --git a/definitions/SkillTiers.dbd b/definitions/SkillTiers.dbd index 062426eff8..2091f1629a 100644 --- a/definitions/SkillTiers.dbd +++ b/definitions/SkillTiers.dbd @@ -12,7 +12,7 @@ $id$ID<32> cost<32>[16] value<32>[16] -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> cost<32>[16] value<32>[16] diff --git a/definitions/SoundEmitters.dbd b/definitions/SoundEmitters.dbd index 715e763858..d1bf76b437 100644 --- a/definitions/SoundEmitters.dbd +++ b/definitions/SoundEmitters.dbd @@ -60,7 +60,7 @@ soundEntriesID<32> mapID<32> name -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 $id$ID<32> positionX positionY diff --git a/definitions/SoundEntries.dbd b/definitions/SoundEntries.dbd index 9cdee51651..62ad46ebd4 100644 --- a/definitions/SoundEntries.dbd +++ b/definitions/SoundEntries.dbd @@ -54,7 +54,7 @@ distanceCutoff EAXDef<32> soundEntriesAdvancedID<32> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> soundType<32> name diff --git a/definitions/SoundEntriesAdvanced.dbd b/definitions/SoundEntriesAdvanced.dbd index 371a118deb..6446b8866f 100644 --- a/definitions/SoundEntriesAdvanced.dbd +++ b/definitions/SoundEntriesAdvanced.dbd @@ -87,7 +87,7 @@ outsideVolume outerRadius2D name -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> soundEntryID<32> innerRadius2D diff --git a/definitions/Spell.dbd b/definitions/Spell.dbd index f64be0d2ae..1b2d9f0a51 100644 --- a/definitions/Spell.dbd +++ b/definitions/Spell.dbd @@ -367,7 +367,7 @@ schoolMask<32> runeCostID<32> spellMissileID<32> -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> category<32> dispelType<32> diff --git a/definitions/SpellChainEffects.dbd b/definitions/SpellChainEffects.dbd index fba0b2f48f..3a5ed5be89 100644 --- a/definitions/SpellChainEffects.dbd +++ b/definitions/SpellChainEffects.dbd @@ -233,7 +233,7 @@ RenderLayer<32> TextureLength WavePhase -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> AvgSegLen Width diff --git a/definitions/SpellItemEnchantment.dbd b/definitions/SpellItemEnchantment.dbd index e8dd14483d..b21481a212 100644 --- a/definitions/SpellItemEnchantment.dbd +++ b/definitions/SpellItemEnchantment.dbd @@ -97,7 +97,7 @@ flags<32> src_itemID<32> condition_ID<32> -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> charges<32> effect<32>[3] diff --git a/definitions/SpellItemEnchantmentCondition.dbd b/definitions/SpellItemEnchantmentCondition.dbd index 98b824bca8..67bb88c99f 100644 --- a/definitions/SpellItemEnchantmentCondition.dbd +++ b/definitions/SpellItemEnchantmentCondition.dbd @@ -47,7 +47,7 @@ rt_operand<32>[5] logic<8>[5] padding_371849722<8>[3] -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> lt_operandType<8>[5] lt_operand<32>[5] diff --git a/definitions/SpellMissile.dbd b/definitions/SpellMissile.dbd index e60db8a3fb..53fd6c33e8 100644 --- a/definitions/SpellMissile.dbd +++ b/definitions/SpellMissile.dbd @@ -92,7 +92,7 @@ defaultPitchMax defaultSpeedMin defaultSpeedMax -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> flags<32> defaultPitchMin diff --git a/definitions/SpellMissileMotion.dbd b/definitions/SpellMissileMotion.dbd index 84c08e4b7a..ffa4e51634 100644 --- a/definitions/SpellMissileMotion.dbd +++ b/definitions/SpellMissileMotion.dbd @@ -32,7 +32,7 @@ scriptBody flags<32> missileCount<32> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> name scriptBody diff --git a/definitions/SpellVisual.dbd b/definitions/SpellVisual.dbd index 31e6da1052..5daf9da7dd 100644 --- a/definitions/SpellVisual.dbd +++ b/definitions/SpellVisual.dbd @@ -147,7 +147,7 @@ missileImpactOffsetX missileImpactOffsetY missileImpactOffsetZ -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> precastKit<32> castKit<32> diff --git a/definitions/SpellVisualEffectName.dbd b/definitions/SpellVisualEffectName.dbd index 21dfcb8bde..58c06ac31d 100644 --- a/definitions/SpellVisualEffectName.dbd +++ b/definitions/SpellVisualEffectName.dbd @@ -75,7 +75,7 @@ fileName areaEffectSize scale -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> name fileName diff --git a/definitions/SpellVisualKit.dbd b/definitions/SpellVisualKit.dbd index 053ece0978..c4098208c2 100644 --- a/definitions/SpellVisualKit.dbd +++ b/definitions/SpellVisualKit.dbd @@ -130,7 +130,7 @@ charParamTwo[4] charParamThree[4] flags<32> -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> kitType<32> startAnimID<32> diff --git a/definitions/TaxiNodes.dbd b/definitions/TaxiNodes.dbd index ac8d6641b0..af10e4bca0 100644 --- a/definitions/TaxiNodes.dbd +++ b/definitions/TaxiNodes.dbd @@ -42,7 +42,7 @@ Flags<8> uiTextureKitID<32> specialIconConditionID<32> -BUILD 3.0.1.8303, 3.0.2.8885, 4.0.0.11792 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328, 4.0.0.11792 $id$ID<32> ContinentID<32> X diff --git a/definitions/TaxiPath.dbd b/definitions/TaxiPath.dbd index 64caa0fa71..92997e9ad2 100644 --- a/definitions/TaxiPath.dbd +++ b/definitions/TaxiPath.dbd @@ -17,7 +17,7 @@ ToTaxiNode<16> $id$ID<32> Cost<32> -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> FromTaxiNode<32> ToTaxiNode<32> diff --git a/definitions/TaxiPathNode.dbd b/definitions/TaxiPathNode.dbd index cb4177b145..ed03638ee9 100644 --- a/definitions/TaxiPathNode.dbd +++ b/definitions/TaxiPathNode.dbd @@ -35,7 +35,7 @@ delay<32> arrivalEventID<16> departureEventID<16> -BUILD 3.0.1.8303, 3.0.2.8885, 4.0.0.11792 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328, 4.0.0.11792 $id$ID<32> PathID<32> NodeIndex<32> diff --git a/definitions/Vehicle.dbd b/definitions/Vehicle.dbd index de24cd5da5..aa05e4dbf1 100644 --- a/definitions/Vehicle.dbd +++ b/definitions/Vehicle.dbd @@ -128,7 +128,7 @@ pitchMin pitchMax seatID<32>[8] -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> flags<32> turnSpeed diff --git a/definitions/VehicleSeat.dbd b/definitions/VehicleSeat.dbd index 87619509a3..8520f09831 100644 --- a/definitions/VehicleSeat.dbd +++ b/definitions/VehicleSeat.dbd @@ -295,7 +295,7 @@ exitAnimStart<32> exitAnimLoop<32> exitAnimEnd<32> -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> flags<32> attachmentID<32> diff --git a/definitions/Weather.dbd b/definitions/Weather.dbd index 883dd166a4..e559a65215 100644 --- a/definitions/Weather.dbd +++ b/definitions/Weather.dbd @@ -56,7 +56,7 @@ transitionSkyBox effectColor[3] effectTexture -BUILD 3.0.1.8303, 3.0.2.8885 +BUILD 3.0.1.8303, 3.0.2.8885, 3.0.8.9328 ID<32> ambienceID<32> effectType<32> diff --git a/definitions/WorldStateUI.dbd b/definitions/WorldStateUI.dbd index bb5a5cda1e..c97e255144 100644 --- a/definitions/WorldStateUI.dbd +++ b/definitions/WorldStateUI.dbd @@ -87,7 +87,7 @@ dynamicTooltip_lang extendedUI extendedUIStateVariable<32>[3] -BUILD 3.0.2.8885 +BUILD 3.0.2.8885, 3.0.8.9328 ID<32> mapID<32> areaID<32> diff --git a/exedumper/initial_dump_from_binary-3.0.8.9328.ps1 b/exedumper/initial_dump_from_binary-3.0.8.9328.ps1 new file mode 100644 index 0000000000..fc209c9c90 --- /dev/null +++ b/exedumper/initial_dump_from_binary-3.0.8.9328.ps1 @@ -0,0 +1,36 @@ +if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) +{ + "Run as Administrator, or inject will fail" + exit +} + +$ErrorActionPreference = "Stop" +$PSDefaultParameterValues['*:Encoding'] = 'utf8' +$script_dir = (split-path $MyInvocation.MyCommand.Path) + +$msvcpp = "Visual Studio 15 2017" +$msvs_short = "vs2017" + +if(!(Test-Path -Path $script_dir/initial_dump_from_binary-3.0.8.9328-build)) { + mkdir initial_dump_from_binary-3.0.8.9328-build + cd initial_dump_from_binary-3.0.8.9328-build + + if(-not (Test-Path nuget.exe)) + { + Invoke-WebRequest -Uri "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -OutFile nuget.exe + } + + & "./nuget.exe" install EasyHookNativePackage + + & cmake -DCMAKE_INSTALL_PREFIX="${script_dir}/initial_dump_from_binary-3.0.8.9328-install" -G"$msvcpp" ../initial_dump_from_binary-3.0.8.9328 + cd .. +} + +if(Test-Path -Path $script_dir/initial_dump_from_binary-3.0.8.9328-install) { + Remove-Item -Path "${script_dir}/initial_dump_from_binary-3.0.8.9328-install" -Confirm:$false -Force -Recurse +} +& cmake --build $script_dir/initial_dump_from_binary-3.0.8.9328-build --config Release --target install + +& "${script_dir}/initial_dump_from_binary-3.0.8.9328-install/injector.exe" "${script_dir}/initial_dump_from_binary-3.0.8.9328-install/dump.dll" "WOW-9327patch3.0.8_PTR_WIN.exe" 2>&1 + +Start-Sleep -Seconds 2 \ No newline at end of file diff --git a/exedumper/initial_dump_from_binary-3.0.8.9328/CMakeLists.txt b/exedumper/initial_dump_from_binary-3.0.8.9328/CMakeLists.txt new file mode 100644 index 0000000000..895243be9f --- /dev/null +++ b/exedumper/initial_dump_from_binary-3.0.8.9328/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.2) + +if (NOT CMAKE_BUILD_TYPE) + set (CMAKE_BUILD_TYPE Release) +endif() + +set (CMAKE_LIBRARY_ARCHITECTURE "Win32/v140/${CMAKE_BUILD_TYPE}") + +set (easyhook_version "2.7.6578.1") +set (CMAKE_PREFIX_PATH "${CMAKE_CURRENT_BINARY_DIR}/EasyHookNativePackage.redist.${easyhook_version}/build/native" + "${CMAKE_CURRENT_BINARY_DIR}/EasyHookNativePackage.${easyhook_version}/build/native" +) + +message (STATUS "${CMAKE_INSTALL_PREFIX}") + +find_library (easyhook_lib NAMES EasyHook32.lib) +find_file (easyhook_redist NAMES EasyHook32.dll PATH_SUFFIXES "bin/${CMAKE_LIBRARY_ARCHITECTURE}") +find_path (easyhook_include NAMES easyhook.h) + +if(NOT easyhook_lib) + message (FATAL_ERROR "${easyhook_lib}") +endif() +if(NOT easyhook_redist) + message (FATAL_ERROR "${easyhook_redist}") +endif() +if(NOT easyhook_include) + message (FATAL_ERROR "${easyhook_include}") +endif() + +add_executable (injector "injector.cpp") +add_library (dump SHARED "dump.cpp") + +find_package (Boost REQUIRED) + +target_include_directories (injector SYSTEM PRIVATE "${easyhook_include}") +target_include_directories (dump SYSTEM PRIVATE "${easyhook_include}") + +target_link_libraries (injector ${easyhook_lib}) +target_link_libraries (dump Psapi ${easyhook_lib} Boost::boost) + +install (TARGETS injector dump DESTINATION ".") +install (FILES "${easyhook_redist}" DESTINATION ".") \ No newline at end of file diff --git a/exedumper/initial_dump_from_binary-3.0.8.9328/dump.cpp b/exedumper/initial_dump_from_binary-3.0.8.9328/dump.cpp new file mode 100644 index 0000000000..5a05cb672c --- /dev/null +++ b/exedumper/initial_dump_from_binary-3.0.8.9328/dump.cpp @@ -0,0 +1,106 @@ +#include + +BOOL APIENTRY DllMain (HMODULE, DWORD, LPVOID) { return TRUE; } + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "patching.hpp" + +using _UNKNOWN = void; +fun sub_5B08F0 + = 0x5DEAD0; + +fun sub_5B1AD0 = 0x5DF1D0; +fun sub_405AA0 = 0x406000; + +void on_inject() +{ + //! This function is _not_ dbmeta but db update registration. the fields in here are in memory, not in file! + hook (sub_5B08F0 + , [] ( int fieldCount, const char *structName, const char **fieldNames + , _UNKNOWN *, char, _UNKNOWN *, _UNKNOWN * + , unsigned int recordSize + , unsigned int *fieldOffsets, unsigned int *fieldSizes, char *fieldTypesIsh + , _UNKNOWN *someFunc + ) + { + std::ofstream(std::string (structName) + ".dbd"); + std::ofstream of(std::string (structName) + ".dbd", std::ios_base::app); + of << "COLUMNS\n"; + for (int f = 0; f < fieldCount; ++f) { + std::string type; + switch(fieldTypesIsh[f]) { + case 0: + //! HACK: these are actually either int or float. + type = "int"; + break; + case 1: + if (std::string(fieldNames[f]).find("_lang") == std::string::npos) + type = "string"; + else + //! HACK: these only work since in dbd we don't care for splitting them either + type = "locstring"; + break; + default: + throw std::logic_error ("unknown typeish"); + } + of << type << " " << (fieldNames[f] + 2) << "\n"; + } + of << "\n"; + of << "BUILD 3.0.8.9328\n"; + + for (int f = 0; f < fieldCount; ++f) { + std::string suff; + switch(fieldTypesIsh[f]) { + case 0: + if (fieldSizes[f] % 4 != 0) { + suff = "<8>"; + if (fieldSizes[f] > 1) { + suff += "[" + std::to_string (fieldSizes[f]) + "]"; + } + } else { + suff = "<32>"; + if (fieldSizes[f] / 4 > 1) { + suff += "[" + std::to_string (fieldSizes[f] / 4) + "]"; + } + } + break; + case 1: + if (fieldSizes[f] % 4 != 0) throw std::logic_error ("non-4-byte-stringref"); + if (fieldSizes[f] / 4 > 1) { + suff += "[" + std::to_string (fieldSizes[f] / 4) + "]"; + } + break; + default: + throw std::logic_error ("unknown typeish"); + } + of << (fieldNames[f] + 2) << suff << "\n"; + } + } + , false + ); + + hook (sub_405AA0, [] { sub_5B1AD0(); exit (0); }); +} + + +extern "C" void __declspec(dllexport) __stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* inRemoteInfo) +{ + on_inject(); + + RhWakeUpProcess(); +} + \ No newline at end of file diff --git a/exedumper/initial_dump_from_binary-3.0.8.9328/injector.cpp b/exedumper/initial_dump_from_binary-3.0.8.9328/injector.cpp new file mode 100644 index 0000000000..05c2e6b408 --- /dev/null +++ b/exedumper/initial_dump_from_binary-3.0.8.9328/injector.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +int wmain(int argc, WCHAR* argv[]) +{ + if (argc < 3) { + std::wcout << argv[0] << " dll command_line\n"; + return 1; + } + std::wstring dllToInject (argv[1]); + std::wstring exe (argv[2]); + exe = exe.substr (0, exe.find (' ')); + std::wstring command_line (argv[2]); + command_line = command_line.substr (command_line.find (' ') + 1); + + ULONG pid; + NTSTATUS nt = RhCreateAndInject + ( const_cast (exe.c_str()) + , const_cast (command_line.c_str()) + , 0 + , EASYHOOK_INJECT_DEFAULT + , const_cast (dllToInject.c_str()) + , nullptr + , nullptr + , 0 + , &pid + ); + + if (nt != 0) + { + std::wcout << "RhCreateAndInject failed with error code = " << nt << "\n " << RtlGetLastErrorString() << "\n"; + return 1; + } + + return 0; +} \ No newline at end of file diff --git a/exedumper/initial_dump_from_binary-3.0.8.9328/patching.hpp b/exedumper/initial_dump_from_binary-3.0.8.9328/patching.hpp new file mode 100644 index 0000000000..68cd1ff10e --- /dev/null +++ b/exedumper/initial_dump_from_binary-3.0.8.9328/patching.hpp @@ -0,0 +1,14 @@ +#pragma once + +template + struct var; +template + struct fun; + +template + void hook (Fun& fun, typename Fun::signature* replacement, bool exclude_this_thread = true); + +void* rebase (size_t); +size_t unrebase (void const*); + +#include "patching.ipp" \ No newline at end of file diff --git a/exedumper/initial_dump_from_binary-3.0.8.9328/patching.ipp b/exedumper/initial_dump_from_binary-3.0.8.9328/patching.ipp new file mode 100644 index 0000000000..1a6c13624c --- /dev/null +++ b/exedumper/initial_dump_from_binary-3.0.8.9328/patching.ipp @@ -0,0 +1,115 @@ + +namespace +{ + template struct maybe_unprotect; + template struct maybe_unprotect + { + static void apply(void* p, DWORD* old) + { + VirtualProtect(p, sizeof (T), PAGE_EXECUTE_READWRITE, old); + } + static void remove(void* p, DWORD old) + { + DWORD ignored; + VirtualProtect(p, sizeof (T), old, &ignored); + } + }; + template struct maybe_unprotect + { + static void apply(void* p, DWORD* old) + { + } + static void remove(void* p, DWORD old) + { + } + }; +} + +namespace +{ + char* module_base() + { + MODULEINFO info; + GetModuleInformation(GetCurrentProcess(), GetModuleHandle (nullptr), &info, sizeof (info)); + return static_cast (info.lpBaseOfDll); + } + constexpr std::intptr_t const rebase_base(0x400000); +} + +inline void* rebase (std::size_t offset) +{ + return static_cast (module_base() + offset - rebase_base); +} +inline std::size_t unrebase (void const* pointer) +{ + return static_cast (pointer) - module_base() + rebase_base; +} + +template +struct var +{ + size_t const _offset; + + constexpr var (size_t offset) : _offset (offset) {} + + T* _x = nullptr; + DWORD old = 0; + + operator void*() { maybe_rebase(); return _x; } + T& operator*() { maybe_rebase(); return *_x; } + T* operator->() { maybe_rebase(); return _x; } + + void maybe_rebase() + { + if (_x) return; + + _x = static_cast (rebase (_offset)); + + maybe_unprotect::apply(_x, &old); + } + ~var() + { + if (_x) maybe_unprotect::remove(_x, old); + } +}; + +template +struct fun : var +{ + using signature = Ret(Args...); + + using var::var; + using var::operator void *; + Ret operator() (Args... args) + { + maybe_rebase(); + return (*_x)(args...); + } +}; +template +struct fun : var +{ + using var::var; + using var::operator void *; + Ret operator() (T* t, Args... args) + { + maybe_rebase(); + return (*_x)(t, args...); + } +}; + +template +void hook (Fun& fun, typename Fun::signature* replacement, bool exclude_this_thread) +{ +#define FORCE(what_,...) \ + if (FAILED (__VA_ARGS__)) {\ + std::wcerr << "Failed to " << what_ << ": " << RtlGetLastErrorString() << "\n";\ + abort();\ +} + + HOOK_TRACE_INFO hHook {0}; + FORCE ("install hook", LhInstallHook(fun, replacement, nullptr, &hHook)); + + ULONG ACLEntries {0}; + FORCE("set hook acl", LhSetExclusiveACL(&ACLEntries, exclude_this_thread ? 1 : 0, &hHook)); +} \ No newline at end of file