1. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  2. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  3. We have recently started the 16th edition of the Mini Mapping Contest. The theme is mini RPG. Do check it out and have fun.
    Dismiss Notice
  4. Dismiss Notice
  5. The Highway to Hell has been laid open. Come along and participate in the 5th Special Effect Contest.
    Dismiss Notice
  6. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Reverse Engineer Game.dll

Discussion in 'The Lab' started by aple, Aug 14, 2015.

  1. aple

    aple

    Joined:
    May 20, 2009
    Messages:
    807
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    Has anyone tried this? If you have, how far did you get and what were your problems? It seems like a huge ton of the game is built into this DLL file, like most (If not all) of the UI, selection amount, determine what's a hero, a building, an item, or a normal widget, and spell and trigger functionality. This DLL also seems to contain the no-cd hack Blizz put on the game with one of the patches.

    Correct me of I'm wrong on any of that, I'm not too skilled in real programming. I figured out most of this by reading some threads on here and a little bit of experimentation mostly with Cheat Engine like for instance I was able to completely destroy selection for the game instance. Had to restart the game to fix it. XD

    Parts of the game have already been reverse-engineered. An example of this is with the Nirvana mod, which made it's own executable that injects plugins of good features such as Mana Bars and locking the mouse in the WC3 window when it's in windowed mode, and vamps up the graphics a bit with good HDR, real-time shadows, and Normal Mapping.
     
    Last edited: Aug 14, 2015
  2. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,210
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    Seems you want to experiment a bit with it. Moved to lab.
     
  3. aple

    aple

    Joined:
    May 20, 2009
    Messages:
    807
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    Well, like I said I don't really have a whole lot, if any, experience with coding. I'm pretty sure I've only found out what I know due to sheer luck.

    I'm not asking anyone to do this, I'm just asking if anybody has tried and what they accomplished.

    I actually can really see this being like a next-gen WC3 modding, remaking Game.dll along with Nirvana. Technically you already can greatly expand upon WC3 using Nirvana, but it requires a great knowledge of assembly, and lots and lots of research into WC3 via a Disassembler. If we could completely rebuild Game.dll, we'd have something a lot easier to work off of more then likely.

    But then again, it'd probably be a lot easier to just make an open source WarCraft III-esque RTS... So maybe this isn't all too rewarding. I dunno. What does everyone else think?
     
  4. edo494

    edo494

    Joined:
    Apr 16, 2012
    Messages:
    3,846
    Resources:
    5
    Spells:
    1
    JASS:
    4
    Resources:
    5
    you could very well just replace the game.dll with different game.dll with more functionality.

    Sharpcraft can extend the game too, and you need to know 0 assembly whatsoever, you only need to know C#.

    No I havent reverse engineered the game.dll, but some folks did a bit at least, like the people that make the 8 mb bypasses
     
  5. PurgeandFire

    PurgeandFire

    Code Moderator

    Joined:
    Nov 11, 2006
    Messages:
    7,426
    Resources:
    18
    Icons:
    1
    Spells:
    4
    Tutorials:
    9
    JASS:
    4
    Resources:
    18
    look into .mix files (custom dlls loaded by wc3) and sites like cheatengine/d3scene. I don't know if I've seen anything significant done with them, but it may be worthwhile to check (there is an 8 mb size limit remover in the tools section, but apart from that, it is mostly gold/visibility/misc cheat hacks).

    you can also do some post-processing edits like ENB:
    http://www.hiveworkshop.com/forums/warcraft-editing-tools-277/enb-warcraft-3-a-237739/

    you'll have to do a lot of memory reading to reverse engineer the game.dll. it is a lot of trial and error :p
     
  6. aple

    aple

    Joined:
    May 20, 2009
    Messages:
    807
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    Yep, that's the problem with figuring out stuff via assembly. Doable, actually easy, but just really, REALLY time-consuming with occasionally getting stuck not having clues to go off of.

    I think it could be worth-while to change the UI greatly, though. Who would like 4x3 or hell 5x5 button card? Or make the Hero panel display more then 7 heroes? Or show more in-depth elements in the UI, such as real speed instead of saying "Fast" or "Slow" ? I think this would all be pretty useful, and having it in a DLL that people could easily modify because of having a source would be even more useful. =)

    I think it's 100% possible, it'd just take time.
     
  7. edo494

    edo494

    Joined:
    Apr 16, 2012
    Messages:
    3,846
    Resources:
    5
    Spells:
    1
    JASS:
    4
    Resources:
    5
    but nothing you said is confirmed to be modifiable from within game.dll, and probably a lot of things are hardcoded so game.dll or not, you cant go around.

    there is antimaphack tool that is .mix I believe, which basically detects when people click outside of their possible vision, and pings it on the screen + says who clicked on what.
     
  8. aple

    aple

    Joined:
    May 20, 2009
    Messages:
    807
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    No no, you're misunderstanding. I'm not saying modify game.dll at all. I'm saying completely rebuild it from the ground, up. Entirely rebuilt, coded yourself, instead of using the old one at all.

    This would have the advantage of having the source to the file, which we could do a whole lot with.

    What I was talking about with the selection and UI is identifying that those things 100% for sure are contained within game.dll. So those are features that we can know 100% for sure would have to be inside it in order for a reverse-engineered game.dll to allow WC3 to function properly.

    In order to do this, we need to know everything it does so that we can properly recreate it to function properly with WC3.

    The idea is, Game.dll I can already tell contains a lot of such as the entirety of the UI. It probably contains other important things, such as unit movement speed, range, attacks, etc. I wouldn't be surprised if the actual WarCraft executables were just there to render graphics and hold all the information. It would be amazing to have a source code to this thing, to be able to modify all these things easily and expand upon them.

    Of course, this is all just fantasizing. I doubt anyone would take the time to do this. I've tried figuring out all I can, but I never get much done whenever I sit down with WC3 and Cheat Engine.
     
  9. edo494

    edo494

    Joined:
    Apr 16, 2012
    Messages:
    3,846
    Resources:
    5
    Spells:
    1
    JASS:
    4
    Resources:
    5
    you still need to follow function names, otherwise the game either wont start(in case game.dll is linked statically), or would crash with dereference of 0x00000000 address in case the dll is linked dynamically.

    How do you know such information(UI being contained in game.dll)?

    You can disassembly stuff, and while it wouldn't be exact original, and variable names would be full garbage, it would still be C/C++ code.

    Again, it would really be unfeasible to create new game.dll from scratch, really, really, really unfeasible(consider the fact that the dll has 11 MB. While it is not 1 byte of code == 1 byte in dll, it still is probably like 60%(I pulled this number from my ass, I have no idea) code only, so thats a lot of code, a looooot)
     
  10. looking_for_help

    looking_for_help

    Joined:
    Dec 12, 2012
    Messages:
    961
    Resources:
    5
    Spells:
    2
    JASS:
    3
    Resources:
    5
    Well what you are saying is essentialy "recode Wc3 completly, then we have the advantage of having the source code".

    Before someone would be able to recode something like this from scratch he would have to know everything perfectly about that game - something which is usually not the case even if you have full access to the source code.

    I think you really really underestimate this. I guess that even for a team of professional reverse-engineers it would take years to make a full and working rebuilt like the one you are talking about.
     
  11. A Void

    A Void

    Joined:
    Mar 29, 2011
    Messages:
    2,500
    Resources:
    10
    Models:
    2
    Spells:
    1
    Tutorials:
    7
    Resources:
    10
    I'm not sure if it helps, but I have Warcraft 3 source code strings extracted from Game.dll. I will copy and paste them here.

    Warcraft 3 was coded in C++ based on the frequent .cpp files in the source code.

    Game.dll

    .RoE.Ro
    Race.mpq
    tx.mpq
    War3X_med.mpq
    War3_med.mpq
    War3X_low.mpq
    War3_low.mpq
    War3XLocal.mpq
    War3X.mpq
    War3.mpq
    War3Patch.mpq
    oSkin.txt
    .\CMiscCustom.cpp
    o.\CPreferencesWar3.cpp
    ui\startupstrings.txt
    8LoFramedefErrors.log
    UI\war3skins.txt
    UI\FrameDef\FrameDef.toc
    .\Engine.cpp
    config.txt
    war3mapMap.tga
    war3mapMap.blp
    Units\MiscGame.txt
    UI\SoundInfo\MiscData.txt
    UI\MiscUI.txt
    UI\MiscData.txt
    Units\MiscData.txt
    advapi32.dll
    %c.mpq
    Path.tga
    ReplaceableTextures\Selection\SpellAreaOfEffect.blp
    25.0
    .\CAbilityAttack.cpp
    o.\CAbilityMove.cpp
    %o.w3u
    %o.w3t
    %o.w3a
    %o.w3h
    %o.w3q
    %o.w3b
    2oo.w3d
    %s%s%s.mdl
    o.\CDestructable.cpp
    %s_portrait.mdx
    %s.mdx
    .\CWidget.cpp
    o.\CItem.cpp
    .\NetUnit.cpp
    ocommon.ai
    common.j
    op(.o
    x.o.\CCaptainAI.cpp
    units\critters\VillagerKid\VillagerKid.mdl
    sound\interface\mouseclick2.wav
    sound\interface\mouseclick1.wav
    .\CGameUI.cpp
    CustomKeys.txt
    Units\ItemFunc.txt
    Units\CommandFunc.txt
    Units\Telemetry.txt
    Units\ItemStrings.txt
    Units\CommandStrings.txt
    Units\NeutralUpgradeFunc.txt
    Units\UndeadUpgradeFunc.txt
    Units\OrcUpgradeFunc.txt
    Units\NightElfUpgradeFunc.txt
    Units\HumanUpgradeFunc.txt
    Units\CampaignUpgradeFunc.txt
    Units\NeutralUpgradeStrings.txt
    Units\UndeadUpgradeStrings.txt
    Units\OrcUpgradeStrings.txt
    Units\NightElfUpgradeStrings.txt
    Units\HumanUpgradeStrings.txt
    Units\CampaignUpgradeStrings.txt
    Units\ItemAbilityFunc.txt
    Units\UndeadAbilityFunc.txt
    Units\OrcAbilityFunc.txt
    Units\NightElfAbilityFunc.txt
    Units\NeutralAbilityFunc.txt
    Units\HumanAbilityFunc.txt
    Units\CommonAbilityFunc.txt
    Units\CampaignAbilityFunc.txt
    Units\ItemAbilityStrings.txt
    Units\UndeadAbilityStrings.txt
    Units\OrcAbilityStrings.txt
    Units\NightElfAbilityStrings.txt
    Units\NeutralAbilityStrings.txt
    Units\HumanAbilityStrings.txt
    Units\CommonAbilityStrings.txt
    Units\CampaignAbilityStrings.txt
    Units\UndeadUnitFunc.txt
    Units\OrcUnitFunc.txt
    Units\NightElfUnitFunc.txt
    Units\NeutralUnitFunc.txt
    Units\HumanUnitFunc.txt
    Units\CampaignUnitFunc.txt
    Units\UnitGlobalStrings.txt
    Units\UndeadUnitStrings.txt
    Units\OrcUnitStrings.txt
    Units\NightElfUnitStrings.txt
    Units\NeutralUnitStrings.txt
    Units\HumanUnitStrings.txt
    Units\CampaignUnitStrings.txt
    oabilities\weapons\spear\spearmissile.mdl
    Abilities\Spells\Other\TempSpellArt\TempSpellArt.mdl
    ReplaceableTextures\CommandButtons\BTNTemp.blp
    ReplaceableTextures\Selection\SpellAreaOfEffect.blp
    SoundManagerLog.txt
    %-4.1f
    %5.2f
    4oUI\TipStrings.txt
    %s%s.w3z
    UI\HelpStrings.txt
    ui\widgets\escmenu\human\observer-icon.blp
    Sound\Music\mp3Music\PH1.mp3
    .\CMultiBoard.cpp
    Environment\DNC\DNCLordaeron\DNCLordaeronTerrain\DNCLordaeronTerrain.mdl
    Environment\DNC\DNCLordaeron\DNCLordaeronUnit\DNCLordaeronUnit.mdl
    .\CWorldFrameWar3.cpp
    9o.\CBuildMode.cpp
    o.\CBuildFrame.cpp
    .\CGameWar3.cpp
    maps\campaign\War3XBonusCredits.w3x
    maps\campaign\War3XRegularCreditsIce.w3x
    maps\campaign\BonusCredits.w3m
    maps\campaign\WarcraftIIICredits.w3m
    blizzard.j
    scripts\common.j
    o0.03
    Campaigns.w3v
    o%s\Campaigns.w3p
    .\CFogOfWarMap.cpp
    VAo.\CPlayerWar3.cpp
    selection.log
    .\CSelectionWar3.cpp
    o.\CGameState.cpp
    ZEo.\Jass.cpp
    Nodes.h
    .\Compile.cpp
    Eo.\Instance.cpp
    .\scanner.cpp
    .\parser.cpp
    Fo.\Agile.cpp
    %4.2f
    %4.2f
    Go.\CAgent.cpp
    Go.\Integer.cpp
    o0AGo.\Position.cpp
    .\FloatProp.cpp
    .\AgentRef.cpp
    Ho.\CAgentBase.cpp
    Ho.\ipse_thread.cpp
    256.0
    16.0
    10.0
    -128000.0
    .\cproximitymap.cpp
    .\agent_.cpp
    .\cmemblock.cpp
    .\FileCache.cpp
    \%s%08x.pre
    .\CDataAllocator.cpp
    .\Prop.cpp
    .\Status.cpp
    ZLo0ULo.\RCString.cpp
    fLo.\CDataRecycler.cpp
    fLo.\CDataStoreChunked.cpp
    o.\Database.cpp
    Lo.db
    .\SysMessage.cpp
    .\TextBlock.cpp
    .\Profile.cpp
    .\Sprite.cpp
    .\Lightning.cpp
    .\Texture.cpp
    _mip%d.tga
    8No 8No.\GfxSingletonManager.cpp
    No.\Tokenizer.cpp
    No.\SprAnimList.cpp
    No.\SprLinkTable.cpp
    Po.\ModelCreate.cpp
    Doodads\Cinematic\ArthasIllidanFight\ArthasCape%s.mrf
    .\WorldMatrix.cpp
    .\MdlAnim.cpp
    .\Interp.cpp
    B.\CGxDevice\CGxDevice.cpp
    Ro.\CGxDeviceD3d\CGxDeviceD3d.cpp
    BlizzardCursor.cur
    WAR3.ICO
    WAR3X.ICO
    Ro.\CGxDeviceOpenGL\CGxDeviceOpenGl.cpp
    .\GxMovie\GxVideo.cpp
    d3d8.dll
    .\CGxDeviceD3d\CGxD3dScene.cpp
    So.\CGxDeviceD3d\CGxD3dPrim.cpp
    %d.%d
    .\CGxDeviceOpenGL\CGxOglTexture.cpp
    .\CGxDeviceOpenGL\CGxOglScene.cpp
    .\CGxDeviceOpenGL\CGxOglPrim.cpp
    .\NetGameStore.cpp
    Replay\LastReplay.w3g
    TempReplay.w3g
    Battle.net
    font\font.ccd
    font\font.clh
    font\font.exp
    font\font.gid
    UI\Widgets\BattleNet\chaticons\iconselection-border-disabled.blp
    UI\Widgets\BattleNet\chaticons\iconselection-border-hilight.blp
    UI\Widgets\BattleNet\chaticons\iconselection-border-active.blp
    UI\Widgets\Glues\Minimap-Unknown.blp
    ui\widgets\glues\icon-folder-up.blp
    ui\widgets\glues\icon-folder.blp
    ui\widgets\glues\icon-file.blp
    ui\widgets\glues\icon-file-ums.blp
    ui\widgets\glues\icon-file-melee.blp
    ui\widgets\glues\dialogbox-question.blp
    ui\widgets\glues\dialogbox-error.blp
    ui\widgets\glues\dialogbox-message.blp
    UI\Widgets\BattleNet\friends-nonmutual.blp
    UI\Widgets\BattleNet\friends-mutual.blp
    UI\Widgets\BattleNet\friends-privategame.blp
    UI\Widgets\BattleNet\friends-publicgame.blp
    UI\Widgets\BattleNet\friends-chatroom.blp
    UI\Widgets\BattleNet\friends-online.blp
    UI\Widgets\BattleNet\friends-offline.blp
    UI\Widgets\BattleNet\chaticons\clan-orc-initiate.blp
    UI\Widgets\BattleNet\chaticons\clan-orc-leader.blp
    UI\Widgets\BattleNet\chaticons\clan-orc-officer.blp
    UI\Widgets\BattleNet\chaticons\clan-orc-member.blp
    UI\Widgets\BattleNet\bnet-userlist-back.blp
    UI\Widgets\BattleNet\bnet-userlist-mod-back.blp
    UI\widgets\BattleNet\bnet-tooltip-background.blp
    UI\widgets\BattleNet\bnet-tooltip-border.blp
    UI\Widgets\Glues\ThumbsDown-Disabled.blp
    UI\Widgets\Glues\ThumbsDown-Down.blp
    UI\Widgets\Glues\ThumbsDown-Up.blp
    UI\Widgets\Glues\ThumbsUp-Disabled.blp
    UI\Widgets\Glues\ThumbsUp-Down.blp
    UI\Widgets\Glues\ThumbsUp-Up.blp
    UI\Widgets\BattleNet\chaticons\tier1-orc.blp
    UI\Widgets\Glues\GlueScreen-Checkbox-CheckDisabled.blp
    UI\Widgets\Glues\GlueScreen-Checkbox-Check.blp
    UI\Widgets\Glues\GlueScreen-Checkbox-BackgroundDisabled.blp
    UI\Widgets\Glues\GlueScreen-Checkbox-BackgroundPressed.blp
    UI\Widgets\Glues\GlueScreen-Checkbox-Background.blp
    ui\widgets\glues\Icon-Map-AuthentificationFail.blp
    ui\widgets\glues\Icon-Map-Unknown.blp
    ui\widgets\glues\Icon-Map-Blizzard.blp
    ui\widgets\glues\Icon-Map-Authenticated.blp
    ui\widgets\battlenet\chaticons\bnet-unknown.blp
    %s%s%s%s.w3g
    %s\%s_%s.w3g
    units\orc\peon\peon_portrait.mdl
    %s.mdl
    %s_portrait.mdl
    Maps\Test\OrcVsOrc.w3m
    %d.%d.%d.%d
    War3Patch_med.mpq
    War3Patch_low.mpq
    Frozen Throne.exe
    Warcraft III.exe
    UI\Glues\ScoreScreen\scorescreen-silverbannerborder.blp
    UI\Glues\ScoreScreen\scorescreen-goldbannerborder.blp
    UI\Glues\ScoreScreen\scorescreen-hero-archmage.blp
    UI\Glues\ScoreScreen\ScoreScreen-BottomBar\ScoreScreen-BottomBar.mdl
    UI\Glues\ScoreScreen\ScoreScreen-CenterBar\ScoreScreen-CenterBar.mdl
    YoUI\Glues\BattleNet\PlaceholderAd\WelcomeToBattleNet.png
    UI\Widgets\BattleNet\bnet-tab-up.blp
    UI\Widgets\BattleNet\bnet-tab-down.blp
    BattleNet\bnserver-WAR3.ini
    ui\widgets\battlenet\chaticons\iconindex_bel.txt
    %sMovies\%s.mpq
    UI\Captions\%s.txt
    .\FrameDef.cpp
    .\SetupFrame.cpp
    .\FDFile.cpp
    .\Handlers\FrameHandlers.cpp
    o.\Handlers\EditBoxHandlers.cpp
    o.\IFDFile.cpp
    o.\Handlers\MenuHashNode.cpp
    7_o.\Handlers\HighlightFrameHashNode.cpp
    g_o.\Handlers\BackdropFrameHandlers.cpp
    .\Handlers\TextFrameHandlers.cpp
    _o.\CLayer.cpp
    .\CControl.cpp
    o.\CSimpleButton.cpp
    .\CSimpleMessageFrame.cpp
    0o.\CFrame.cpp
    o.\CSimpleFrame.cpp
    .\CScreenFrame.cpp
    oFRIZQT__.TTF
    3o.\CDialog.cpp
    o.\CSimpleTop.cpp
    o.\CSimpleRender.cpp
    o%s.blp
    o.\CSimpleStatusBar.cpp
    o.\CSpriteFrame.cpp
    .\CCheckBox.cpp
    ao.\CMenu.cpp
    3.\CTextFrame.cpp
    o.\CPopupMenu.cpp
    .\CEditBox.cpp
    laoplao.\CControlSet.cpp
    .\CBackdropGenerator.cpp
    .\CTextArea.cpp
    ao l3o.\CTextButtonFrame.cpp
    ao.\CSlider.cpp
    o.\CSimpleCheckbox.cpp
    bo.\CModelFrame.cpp
    bo l3o.\CButtonFrame.cpp
    .\CMessageFrame.cpp
    o.\CHighlightFrame.cpp
    Pbo.\CScrollBar.cpp
    mbo.\CListBox.cpp
    .\CChatDisplay.cpp
    bo.\CFramePoint.cpp
    bo.\CInputObserver.cpp
    .\EvtSched.cpp
    fLo.\EvtTimer.cpp
    .\NetProvider.cpp
    .\NetProviderBNET.cpp
    .\NetProviderLOOP.cpp
    .\NetProviderLTCP.cpp
    eo.\NetCommon.cpp
    fo.\NetRouter.cpp
    go.\NetClient.cpp
    bncache.dat
    .\BattleNetCache.cpp
    .\BattleNetChat.cpp
    ko.\W32\OsGui.cpp
    ko.\W32\OsBattleNet.cpp
    %s\bnupdate.exe
    Prepatch.lst
    kernel32.dll
    .\W32\Time.cpp
    o.\W32\OsSnd.cpp
    VORT_DLS.DLL
    S3BASE.DLL
    GenuineIntelAuthenticAMDCyrixInsteadCentaurHalls.\W32\OSSystem.cpp
    8BLZ2112.HTM
    .\W32\OsLock.cpp
    OsNetLog.txt
    o.\W32\OsTcp.cpp
    ws2_32.dll
    mswsock.dll
    Wno.\W32\OsClipboard.cpp
    .\W32\OsCall.cpp
    calldump.log
    .\W32\OsISndCache.cpp
    .\SHA.cpp
    Maiev.mod
    .\WardenClient.cpp
    3ooMisc.txt
    %%.%df
    UI\TriggerStrings.txt
    UI\TriggerData.txt
    UI\WorldEditLayout.txt
    UI\AIEditorData.txt
    UI\UnitEditorData.txt
    UI\WorldEditGameStrings.txt
    UI\WorldEditStrings.txt
    UI\WorldEditData.txt
    UI\WorldEditStartupStrings.txt
    2soPreview.tga
    Map.tga
    War3.exe
    WEUTiming.txt
    TerrainMemory.txt
    setting to 1.0
    %.0f)
    xo.\blp.cpp
    %s%s\%s.tga
    .\CONSOLE.CPP
    o.\tga.cpp
    .\funcs.cpp
    o.\GxuLight.cpp
    .\GxuFont.cpp
    C%2.2x%2.2x%2.2x%2.2x
    .\GxuFontUtil.cpp
    .\IGxuFontGlyph.cpp
    001.003
    001.002
    001.001
    001.000
    5.\MsgBuffer.cpp
    .\Param.cpp
    o.\AsyncFile.cpp
    COMCTL32.dll
    WINMM.dll
    KERNEL32.dll
    comdlg32.dll
    ADVAPI32.dll
    WININET.dll
    Storm.dll
    ijl15.dll
    MSVCR80.dll
    WSOCK32.dll
    mss32.dll
    OPENGL32.dll
    IMM32.dll
    USER32.dll
    GDI32.dll
    SHELL32.dll
    ole32.dll
    Game.dll
    757G7.8
    Race.mpq


    Game.dll wDrive

    e:\drive1\temp\buildwar3x\war3\source\Data.h
    e:\Drive1\temp\buildwar3x\Storm\H\stpl.h
    e:\drive1\temp\buildwar3x\war3\source\world\WorldCampaign.cpp
    e:\drive1\temp\buildwar3x\war3\source\world\WorldLoad.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CAbilityMassTeleport.cpp
    e:\drive1\temp\buildwar3x\engine\source\agile\FloatModifier.h
    e:\drive1\temp\buildwar3x\engine\source\agile\IntegerListener.h
    e:\drive1\temp\buildwar3x\engine\source\agile\PositionListener.h
    e:\drive1\temp\buildwar3x\engine\source\agile\FloatListener.h
    e:\drive1\temp\buildwar3x\war3\source\unit\CAbilityEvasion.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CAbilityCouple.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CAbilityCriticalStrike.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CAbilitySilence.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CUnitDatabase.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CCustomData.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CUnit_Visibility.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CUnitUI.cpp
    e:\drive1\temp\buildwar3x\engine\source\agile\MovementRequest.h
    e:\drive1\temp\buildwar3x\war3\source\unit\CUnit_Enum.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CUnit_Vision.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CUnit_Ownership.cpp
    e:\drive1\temp\buildwar3x\war3\source\unit\CMissile.cpp
    e:\drive1\temp\buildwar3x\engine\source\base\CDataStore.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CTimerDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CScriptDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CChatDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CLogDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CAllianceSlot.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CAllianceDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CResourceBar.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CHeroLevelBar.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CBuildTimeIndicator.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CInfoPanelBuildingDetail.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CInfoPanelUnitDetail.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CInfoPanelItemDetail.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CInfoPanelDestructableDetail.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CReplayPanel.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CGameResultDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CEscMenuMainPanel.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CEscMenuOptionsPanel.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CGameSaveSplashDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CEscMenuSaveGamePanel.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CSuspendDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CUnresponsiveDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CUpperButtonBar.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CChatEditBar.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CSimpleConsole.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CQuestDialog.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CCinematicPanel.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CQuestLists.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CLeaderboard.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CMultiboard.h
    e:\drive1\temp\buildwar3x\engine\source\agile\PositionModifier.h
    e:\Drive1\temp\buildwar3x\Storm\H\SAPIEXTEND.H
    e:\drive1\temp\buildwar3x\war3\source\ui\CSkinManager.h
    e:\drive1\temp\buildwar3x\war3\source\ui\CSoundManagerI.h
    e:\drive1\temp\buildwar3x\war3\source\game\HashKeyStripacked.h
    e:\Drive1\temp\buildwar3x\War3\Source\CAgentWar3.h
    e:\drive1\temp\buildwar3x\war3\source\game\CFogMaskTable.h
    e:\drive1\temp\buildwar3x\engine\source\jass2\Nodes.h
    e:\drive1\temp\buildwar3x\engine\source\jass2\Instance.h
    e:\drive1\temp\buildwar3x\engine\source\jass2\Compile.h
    e:\drive1\temp\buildwar3x\engine\source\agile\CAgent.h
    e:\Drive1\temp\buildwar3x\Storm\H\SAPIExtend.h
    e:\drive1\temp\buildwar3x\engine\source\base\Status.h
    e:\drive1\temp\buildwar3x\engine\source\anim\Interp.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CDialogWar3.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CListBoxWar3.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetUserListBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetNewsBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetFriendsListBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetClanMateListBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetStatusBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CCheckListBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CMapList.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetIconSelectBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetProfileListBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CMapPreferenceBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CCampaignListBox.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CPlayerSlot.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CTeamSetup.h
    e:\drive1\temp\buildwar3x\war3\source\glue\COptionsMenu.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CAdvancedOptionsDisplay.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CAdvancedOptionsPane.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetChatroom.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetChatActionMenu.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetTeamInvitation.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetClanPane.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetClanInvitation.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetChatPanel.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CMapInfoPane.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetCustomJoinPanel.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetMain.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetProfilePanel.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetTeamPanel.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CGameChatroom.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CTitle.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CLoading.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CMainMenu.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CLocalMultiplayerJoin.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CLocalMultiplayerCreate.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CScoreScreen.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetCustomCreatePanel.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CCampaignMenu.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CSinglePlayerMenu.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CViewReplayScreen.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CLoadSavedGameScreen.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CSkirmish.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CAdBanner.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetScheduledGame.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetCustomLoadPanel.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetStandardPanel.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CMinimapImage.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CLocalMultiplayerLoad.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CBattleNetFriendsPane.h
    e:\drive1\temp\buildwar3x\war3\source\glue\CCustomCampaignMenu.h
    e:\drive1\temp\buildwar3x\engine\source\frame\CHighlightFrame.h
    e:\drive1\temp\buildwar3x\engine\source\frame\CEditBox.h
    e:\drive1\temp\buildwar3x\engine\source\framedef\IFrameDef.h
    e:\drive1\temp\buildwar3x\engine\source\fdfile\FDFile.h
    e:\drive1\temp\buildwar3x\engine\source\fdfile\handlers\MenuHashNode.h
    e:\drive1\temp\buildwar3x\engine\source\frame\CSimpleMessageFrame.h
    e:\drive1\temp\buildwar3x\war3\source\worldedit\WECustomObjectData.h
    e:\drive1\temp\buildwar3x\war3\source\worldedit\CCustomObjectData.h
    e:\drive1\temp\buildwar3x\engine\source\base\MsgBuffer.h
    e:\drive1\temp\buildwar3x\engine\source\gxu\IGxuFont.h
    e:\Drive1\temp\buildwar3x\War3\bin\Game.pdb


    Also keep in mind that modification of the source code or Game.dll is strictly prohibited by Blizzard. Hive doesn't support such actions as Blizzard could take this site down if that happened. What you're asking for wont happen, nobody will spend tons of hours reverse engineering it only for it to be hunted down by Blizzard.

    Reverse engineering a game is a serious crime, it also is dangerous as you would be sued or had to pay the toll.

    You should read End User License Agreement.
     

    Attached Files:

  12. Dr Super Good

    Dr Super Good

    Spell Reviewer

    Joined:
    Jan 18, 2005
    Messages:
    25,726
    Resources:
    3
    Maps:
    1
    Spells:
    2
    Resources:
    3
    Technically illegal...

    Only if the executables are dynamically linked. Static linking will likely cause problems as it requires all function addresses to be unmodified.

    game.dll is Warcraft 3. The executables are purely platform specific ways to start the game. Additionally the executable used to contain copy protection but that has been disabled/removed.

    Consult EULA...

    It took a team of paid programmers years to create WC3 and you want to do it again for free?!

    Disassemble is the process of converting machine code into its (or another) assembly language. Assembly languages are the lowest level form of human readable computer programming as it directly interacts with the underlying processor (translates 1:1 to machine code).

    Decompile is the process of converting some low level language produced by a compiler back into the source language, trying to re-create the structure of the code. This works wonders on un-optimized code. Optimized code (such as WC3) will either fail to decompile or the resulting code would be as bad as the underlying assembly (pretty much converting each line of assembly into a line of C/C++). Obviously all named C/C++ context is not restored as that gets lost during compiling.

    Those are all the string constants in the dll. God knows why there are cpp file references in it but chances are that they were put there by MSVC during build (possibly for some very basic debugging functionality?). In any case that is almost certainly a tiny fraction of the actual source code files.
     
  13. edo494

    edo494

    Joined:
    Apr 16, 2012
    Messages:
    3,846
    Resources:
    5
    Spells:
    1
    JASS:
    4
    Resources:
    5
    are you really going to play with words in here? Pathetic. You know what I meant with disassemble
     
  14. aple

    aple

    Joined:
    May 20, 2009
    Messages:
    807
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    To be fair, it took them years because they went through numerous different versions of the game. At least half of the development cycle has got to have been reworking and repurposing things for the changing ideas, so it's safe to say that actually coding the game as we know it today was a fraction of the entire development time.

    If you want an example of a realistic time it would take to do this, take a look at OpenRA. The guys over there have built a fully functional C&C-style RTS engine in about 5 years. However if you were to take the hours they put into it without considering other time-consuming factors such as life stuff or a job, it would be about 2 years or so.

    Anyway, yeah you're right about the licensing stuff though... As cool as it'd be to have more control over WC3, it's probably not a good idea just from that alone. Disregarding time constraints, cost, and other things.

    Probably just a good idea to lock this topic now before it could cause a problem or I keep running my mouth on the subject.
     
  15. A Void

    A Void

    Joined:
    Mar 29, 2011
    Messages:
    2,500
    Resources:
    10
    Models:
    2
    Spells:
    1
    Tutorials:
    7
    Resources:
    10
    No problem, it is justified. Warcraft 3 has a lot of potential that has been ruined by these closed limitations. It would be awesome to edit UI or add new things to it.
     
  16. ENAleksey

    ENAleksey

    Joined:
    Nov 29, 2014
    Messages:
    189
    Resources:
    1
    Tools:
    1
    Resources:
    1
    Hello, I'm making graphic modification for WarCraft III based on the Nirvana mod.

    The first demo is avaliable for download.
    Installation:
    1. Download Nirvana and unzip it to War3 folder.
    2. Download RenderEdge and unzip it to War3 folder.
    3. If you want to see the parallax mapping, replace Nir_Plugin_RenderCraft.dll
    on (parallax)Nir_Plugin_RenderCraft.dll and delete "(parallax)".
    Note: Parallax mapping does not work properly, but later will fix it.
    More info: http://xgm.guru/p/wc3/155094 (All download links are available at this link)
    I'm sorry, but the topic is only the Russian language.
     
  17. A Void

    A Void

    Joined:
    Mar 29, 2011
    Messages:
    2,500
    Resources:
    10
    Models:
    2
    Spells:
    1
    Tutorials:
    7
    Resources:
    10
    Sorry, it's not working. It says no Game.dll found, it is there. I tried running it as an administrator..

    Edit: It worked now, but there was no sky and it lagged like 1 frame per second.
     
  18. ENAleksey

    ENAleksey

    Joined:
    Nov 29, 2014
    Messages:
    189
    Resources:
    1
    Tools:
    1
    Resources:
    1
    I don't know because of what is happening. I tried to run it on Windows XP and Windows 10 and it worked in 60 frames per second (although I have NVIDIA NVS 5200m video card), the sky is displayed correctly.
    Do you used ReShade? And could you show me an ingame screenshot?
     
  19. A Void

    A Void

    Joined:
    Mar 29, 2011
    Messages:
    2,500
    Resources:
    10
    Models:
    2
    Spells:
    1
    Tutorials:
    7
    Resources:
    10
    I just extracted Nirvana and RenderCraft then setup the files to run as administrator. I am running Windows 10. It gave me No Game.dll error and when I clicked on it in Windowed mode it ran the game, it was very laggy and there was no sky. Otherwise if it was running in full screen it crashed.

    Images
    [​IMG]
    [​IMG]


    Btw, I wanted to personally thank you for doing this mod, it is very amazing! It would be interesting to create something with this one day. Wonder how long it took you to do something like this.. :)
     
  20. ENAleksey

    ENAleksey

    Joined:
    Nov 29, 2014
    Messages:
    189
    Resources:
    1
    Tools:
    1
    Resources:
    1
    Thank you)
    Have you did this?
    Do you use Enb or other d3d8/d3d9 mods at the same time?