SWTOR emu - Draft menu

User Tag List

Page 1 of 5 12345 LastLast
Results 1 to 15 of 68
  1. #1
    yamashi12's Avatar Master Sergeant
    Reputation
    60
    Join Date
    Jan 2011
    Posts
    126
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    SWTOR emu - Draft

    Hello,

    I will be writing here my dev notes and whatever I figure out as I figure it out, take it as my draft place to write everything that comes up to my mind.

    I. Authentication

    Pretty simple launch with the following command line :
    swtor.exe -set username jesus -set password SOME_KEY_TO_GENERATE (nothing specific, you can write french fries is works) -set plateform web_server_ip:web_server_port -set environment betatest -set lang fr-fr (for french) -set torests main,fr-fr @swtor_dual.icb
    II. Server list

    JSON based, must be located in /gamepad/ and named shardlist as such : http://127.0.0.1:8080/gamepad/shardlist
    Params :
    - token the key set in the launcher password.
    - refresh always true, discard

    JSON format :
    - "shards" -> array
    - "shard" ->
    iusp : true or false // server up or down
    region : an integer, haven't looked into it yet
    host : ip : port : key sent to the game server in the handshake packet
    weight : possibly location in server list
    datacenter : don't care write jesus
    queuewait : queue size, 0 is none
    pop : no idea
    timezone : ... the timezone !!!
    focusid : 0 pve, 1 pvp
    pop_max : ?
    name : name to show
    loadlevel : ? possibily server charge from 0 to 10 (10 being full and 0 empty)
    language : "en","fr","de"
    {"isup":true,"region":2,"host":"he1004n01.swtor.com:8995:castlehilltest","weight ":100,"datacenter":"VA1","queuewait":166,"pop":3500,"timezone":-600,"focusid":0,"pop_max":500,"name":"Sword of Ajunta Pall","loadlevel":10,"language":"en"}

    III. Game server

    Header

    byte[0] = (type1 << 6 | encType); encType = 0 - plain, encType - 1 RSA
    byte[1..4] : data length (uint32)
    byte[5] = byte[0] XOR byte[1] XOR ... byte[4]
    byte[5..8] - message ID for first packet
    byte[9..13] : not a checksum dunno what it is


    Data

    String : 4 bytes (size) + string

    Packets

    1st :
    server key
    nth packet : Encrypted or deflated.

    Thanks to :
    polimorfic
    Last edited by yamashi12; 11-29-2011 at 05:17 AM.

    These ads disappear when you log in.

  2. #2
    LordJZ's Avatar Corporal
    Reputation
    11
    Join Date
    Jan 2009
    Posts
    28
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Also, launcher authentication is JSON over HTTPS.

  3. #3
    yamashi12's Avatar Master Sergeant
    Reputation
    60
    Join Date
    Jan 2011
    Posts
    126
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Don't care about authentication it has pretty much nothing to do with the game

  4. #4
    Hex00010's Avatar Master Sergeant
    Reputation
    45
    Join Date
    Feb 2010
    Posts
    98
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    If you need any help message me ive been using the same engine STWOR uses for about 3 years now so i know how it operates

    Also a side note:

    What do you plan on doing for the GOM/DOM/ Javelin System ?

    DOM and GOM are the 2 most important things for retrieving and modifying data within the game.

    Instead of a normal MMO with a Mysql DB


    this engine only has 2 options

    replica of the GOM/DOM/Jvelin System

    hope to god they decided to use the Oracle import function in the Engine


    those are 2 of my biggest concerns on how this is going to work out
    Last edited by Hex00010; 11-28-2011 at 04:42 PM.

  5. #5
    yamashi12's Avatar Master Sergeant
    Reputation
    60
    Join Date
    Jan 2011
    Posts
    126
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I don't get what you re trying to say, do you have experience with the client's engine or the server's arch ?

  6. #6
    Hex00010's Avatar Master Sergeant
    Reputation
    45
    Join Date
    Feb 2010
    Posts
    98
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I have over 3 years of programing knowledge in that engine

    I have helped in about 4 or 5 titles so far that uses the same engine STWOR uses

    One thing that you gotta focus on the most that is going to be the bitch of them all is the GOM

    if you have any questions you can add me on msn messenger and ill try and answer them for you


    i use the new msn messenger which requires both parties to invite one another so i will post my msn address below and you can either message it here or send me your msn through a private message



    my msn is

    [email protected]
    Last edited by Hex00010; 11-28-2011 at 05:48 PM.

  7. #7
    yamashi12's Avatar Master Sergeant
    Reputation
    60
    Join Date
    Jan 2011
    Posts
    126
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    How the game server is coded does not really matter, what matters is the gameplay which can be deduced by playing, the data (data minning) and the communication.
    The only part giving me a headache is communication, I am currently trying to figure out how they send their data, it appears to be compressed, all my inflate attempts failed, I will try to see if they don't strip some constants or if they don't stream...
    I will also look into gzip.

  8. #8
    Sirmabus's Avatar Sergeant
    Reputation
    34
    Join Date
    Jun 2008
    Posts
    69
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    What he's talking about:
    GOM - HEWIKI
    DOM - HEWIKI

    The h..p://wiki.heroengine.com wiki

    Hex00010:
    Any of the Hero Engine tools you can upload?
    Also in particular and of the licensed Engine C++ headers and lib files would be great.

    Anyone can just sign up at the HeroEngine site and get the free "HeroBlade" version, but there appears to be a lot of differences between that and what the client uses.
    For one obvious thing HeroBlade is not the licensed version; not the binary/custom version. You don't get any of the C++ stuff (headers, libs, source, etc).
    Looking at the swtor client in comparison to the HeroBlade client (with it's exe and various DLLs) they are different.
    Maybe SW:TOR is either using an old, and, or, new unreleased version, and, or, it could be heavily modified.
    Incidentally made worse now a lot of the strings that used to be in the client (that could be matched to the HeroEngine wiki et al) are now hash codes.

    Please upload what you want, either publicly or privately via PMs.
    Last edited by Sirmabus; 11-28-2011 at 08:34 PM.

  9. #9
    Hex00010's Avatar Master Sergeant
    Reputation
    45
    Join Date
    Feb 2010
    Posts
    98
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Well as a respected member in the HE Community i cant really give such files however i can answer the questions you asked


    1. Yes there is a Major difference between " Herblade" , "HeroCloud "," HeroEngine"

    HB and HC are pretty much the same


    HB/HC how it works is when we open up the engine we go to tools->scripts>Client Script or Server Script / XML Script

    You select which script you wanna program for they have a custom programing language called HSL

    HSl does not require the whole

    " import " , " define " stuff if anything in relation to calling stuff outside the app the closest it would be is using the external function such as

    external ScaleForm()

    or shared_function

    If you use the engine version however of course there will be the whole .h and what not stuff But the Heroblade/Herocloud is all based of a VM and all code is compiled directly to the server



    2. Your question on looking at the HeroBlade client vs the stwor.exe will be different as always and the reason is because the Heroblade .exe is for the Engine its self not for a game so the data will be diff no matter what lol



    here is some scripts you can look over

    This is a Server side script defined as Account Class Methods


    Code:
    method HE_UsePrototypeForAccountRootNode( prototypeName references String ) as Boolean
      prototypeName = "e_account_prototype"
      
      return true
    .
    
    method HE_PreSessionStarted( theAccount as NodeRef )
      Debug( "LoginProcess", "Using default HeroEngine HE_PreSessionStarted()." )
      
    .
      
    method HE_PostSessionStarted( theAccount as NodeRef )
      Debug( "LoginProcess", "Using default HeroEngine HE_PostSessionStarted()." )
    .
      
    method HE_PreEnteredArea( theAccount as NodeRef )
      Debug( "LoginProcess", "Using default HeroEngine HE_PreEnteredArea()." )
      
      modern_oil_refinery_area_id as ID = 4611686018513387949
      if GetAreaNumber() = modern_oil_refinery_area_id
        var current_character_appearance = theAccount.GetMyVisibleCharacter()
        glomclass( "_extendedeventobject",  current_character_appearance )
        where current_character_appearance is kindof _extendedEventObject
          current_character_appearance._extendedEventLookup["_characterSpecification"] = current_character_appearance._characterSpecification
          marshal current_character_appearance.geometry_list to current_character_appearance._extendedEventLookup["geometry_list"]
        .
        
        current_character_appearance._characterSpecification = "Supervisor"
        
        clear current_character_appearance.geometry_list
        geometry_pair as Class geometry_pair
        geometry_pair.geometry_part_string = "hard hat"
        geometry_pair.geometry_slot_string = "headwear"
        add back geometry_pair to current_character_appearance.geometry_list
        
        geometry_pair.geometry_part_string = "the supervisor"
        geometry_pair.geometry_slot_string = "personel"
        add back geometry_pair to current_character_appearance.geometry_list
      .
    .
      
    method HE_PostEnteredArea( theAccount as NodeRef )
      Debug( "LoginProcess", "Using default HeroEngine HE_PostEnteredArea()." )
      
      area as NodeRef of Class AreaRoot = GetRootNode()
    
      // Give individual areas the opportunity to do things.
      if HasMethod( area, "HE_AreaSpecificEnteredArea" )
        if area.HE_AreaSpecificEnteredArea( theAccount )
          // Call returned true, so the area overrode the below functionality.
          return
        .
      .
      
      // initialize the player
      var entity = theAccount.GetMyChar()
      if( entity != None )
        entity.InitCommonCharacter()
      .
    
      // Position the character in the area
      DoPositioning( theAccount )
    .
    
    method HE_PreClientReady( theAccount as NodeRef )
      Debug( "LoginProcess", " HE_PreClientReady()." )
    .
      
    method HE_PostClientReady( theAccount as NodeRef )
      Debug( "LoginProcess", "HeroEngine HE_PostClientReady()." )
      PlayerLoadFinished( theAccount )
    .
    
    method HE_PreCharacterActivated( theAccount as NodeRef )
      Debug( "LoginProcess", "UHeroEngine HE_PreCharacterActivated()." )
    .
    
    method HE_PostCharacterActivated( theAccount as NodeRef )
      Debug( "LoginProcess", "HeroEngine HE_PostCharacterActivated()." )
      
      account as NodeRef of Class _PlayerAccount = theAccount
      area as NodeRef of Class AreaRoot = GetRootNode()
      
      // Find the character.
      // Don't validate that the pc node exists until after area-specific overrides get a chance to do validation/creation/whatever.
      // This is important because it is the character selection area script's responsibility to create an initial PC.
      pc as NodeRef of Class _PlayerCharacter = account.GetMyChar()
      if pc = None
        Debug( "LoginProcess", "No PC node for " + account.account_name + "." )
      else
        Debug( "LoginProcess", "Found PC node " + pc + " for " + account.account_name + "." )
      .
      
      // if this is a new session, move this character to the top of the account's character list
      where account is kindof _SessionStarting
        if ( pc != None )
          if pc.name != ""
            add front pc.name to account._charList
            if account._charList.length > 1
              loop i from 2 to account._charList.length
                if account._charList[i] = pc.name
                  remove account._charList at i
                .
              .
            .
          .
        .
      .
      
      // Allow for area-specific overrides of below functionality
      if HasMethod( area, "HE_AreaSpecificCharacterActivated" )
        Debug( "LoginProcess", "Calling override for AreaSpecificCharacterActivated() in " + GetAreaName( GetAreaNumber() ) + " for " + theAccount + " (" + account.account_name + ")." )
        if area.HE_AreaSpecificCharacterActivated( account )
          // returned true so it wants to override the remaining functionality
          return
        .
      .
      
      if getAreaNumber() = 1
        // if we are in the holding area, we stop here because they do not yet have a character
        return
      .
      
      // Validate existence of expected nodes
      assert( pc != None, account.account_name + " got to _CharacterActivate() without a character_class node.")
      vc as NodeRef of Class _characterAppearance = pc.GetMyVisibleCharacter()
      assert( vc != None, account.account_name + " got to _CharacterActivate() without a visible_character node.")
    
      // deal with the character's rendering
    //  vc.draw_character = true
      exclude as List of ID
      add back pc to exclude
      if(pc.name != "")
        $CHAT.ChatExcludeList(exclude, "", " * " + pc.name + " has entered the area.")
      else
        $CHAT.ChatExcludeList(exclude, "", " * Account " + account.account_name + " has entered the area.")
      .
      $CHAT.ChatPlayer( theAccount, "", "You have entered " + GetAreaName( GetAreaNumber() ) + " [area #" + GetAreaNumber() + " instance#" + GetInstanceNumber() + "].")
    
      CallScript(GMNotesSystem, "SafeUpdatePopulateGMNotesList", account)
      CallMethod( $STATES, "_SafeOnLogonDoInitialization", account )
    .
    
    method HE_PreAreaMoveFailed( theAccount as NodeRef )
      Debug( "LoginProcess", " HE_PreAreaMoveFailed()." )
    .
    
    method HE_PostAreaMoveFailed( theAccount as NodeRef )
      Debug( "LoginProcess", "HE_PostAreaMoveFailed()." )
      
      account as NodeRef of Class _PlayerAccount
      
      $CHAT.ChatPlayer( theAccount, "", "Unable able to move you to the new area." )
      where account is kindof _AreaDetails
        $CHAT.ChatWorld( "", "Unable to move " + account.account_name + " to area " + account.AreaID + "(" + account.AreaInstanceNumber + ").  Reason: " + account._message )
      .
    .
    
    method HE_PreExitingArea( theAccount as NodeRef )
      Debug( "LogoffProcess", " HE_PreExitingArea()." )
    
      modern_oil_refinery_area_id as ID = 4611686018513387949
      if GetAreaNumber() = modern_oil_refinery_area_id
        
        var current_character_appearance = theAccount.GetMyVisibleCharacter()
        
        where current_character_appearance is kindof _extendedEventObject
          current_character_appearance._characterSpecification = current_character_appearance._extendedEventLookup["_characterSpecification"]
          unmarshal current_character_appearance.geometry_list from current_character_appearance._extendedEventLookup["geometry_list"]
        .
        
        RemoveClassFromNode( "_extendedEventObject", current_character_appearance )
      .
    .
    
    method HE_PostExitingArea( " HeroEngine HE_PostExitingArea()." )
      
      account as NodeRef of Class _PlayerAccount = theAccount
      pc as NodeRef of Class _PlayerCharacter = account.GetMyChar()
      
      // clean up possession and other char specific behaviors
      if (pc != None)
        if ( pc != account.GetControlledChar() )
          // means player is currently possessing an npc
          npc as NodeRef = account.GetControlledChar()
          Debug( "LogoffProcess", pc + " attempting to UnpossessNPC " + npc )
        else
          Debug( "LogoffProcess", pc + " logging off no possession." )
        .
      else
        $Debug.SendNotifyDebugMessage("LogoffProcess", "pc was none?")
      .
      
      // Allow for area-specific overrides of below functionality
      if HasMethod( $ACCOUNT, "HE_AreaSpecificExitingArea" )
        Debug( "LogoffProcess", "Calling override for HEAreaSpecificExitingArea() in " + GetAreaName( GetAreaNumber() ) + " for " + account + " (" + account.account_name + ")." )
        $ACCOUNT.HE_AreaSpecificExitingArea( account )
        return
      .
    
      if pc != None    
        if GetAreaNumber() != 1
          $CHAT.ChatArea( "", " * " + pc.name + " has left the area." )
          $CHAT.ChatWorld("logon", "* " + pc.name + " has exited the world.")
        .
      .
    .
    
    method HE_PreSessionEnding( theAccount as NodeRef )
      Debug( "LoginProcess", "HE_PreSessionEnding()." )
    .
    
    method HE_PostSessionEnding( theAccount as NodeRef )
      Debug( "LoginProcess", " HE_PostSessionEnding()." )
    .
    
    function DoPositioning( account as NodeRef of Class _PlayerAccount )
      // Can't position a character that doesn't have a character_class or a visible_character.
      pc as NodeRef of Class _PlayerCharacter = account.GetMyChar()
      if (pc == None)
        return
      .
      vc as NodeRef of Class _characterAppearance = pc.GetMyVisibleCharacter()
      if ( vc == None )
        return
      .
    
      name as String
      if pc.name != ""
        name = "Character '" + pc.name + "'"
      else
        name = "Account '" + account.account_name + "'"
      .
    
      // Set the pc's new area and instance.
      if GetAreaNumber() != 1
        pc._currentArea = GetAreaNumber()
        pc._currentAreaInstance = GetInstanceNumber()
      .
    
      pos as Vector3
      rot as Vector3
      where account 
        is kindof _SessionStarting
          if GetAreaNumber() != $CLEANTESTAREA._getCleanTestArea()
            Debug( "LoginProcess", pc.name + " is logging into the game as an existing character.  Using last known position " + vc.character_position + ", and rotation " + vc.character_rotation + "." )
            account._TeleportPlayer( vc.character_position, vc.character_rotation )
          else
            account._TeleportPlayer( pos, rot )
          .
          return
        .
        default
          connection as NodeRef of Class _PlayerConnection = GetPlayerConnectionNode( account )
          where connection
            is kindof _TravelTarget
              targetAccount as NodeRef of Class _PlayerAccount = FindPlayerByName( connection._travelTargetCharacter )
              if targetAccount == None
                goto notarget
              .
              targetPC as NodeRef of Class _PlayerCharacter = targetAccount.GetMyChar()
              RemoveClassFromNode( "_TravelTarget", connection )
              if targetPC != None
                account._TeleportPlayer( targetPC.GetPosition(), targetPC.GetRotation() )
              else
                goto notarget
              .
            .
            default
              label notarget
              path as NodeRef of Class PathNode = PathUtils:GetPathByName( "Arrival" )
              if path != None
                pos = GetPositionOnPath( path )
                Debug( "LoginProcess", name + " is moving between areas and I found an Arrival path (" + path + ").  Teleporting to " + pos + "." )
                account._TeleportPlayer( pos, rot )
              else
                Debug ( "LoginProcess", "No Arrival path found or target for " + name + " in area '" + GetAreaName( GetAreaNumber() ) + "', so positioning at origin." )
                account._TeleportPlayer( pos, rot )
              .
            .
          .
        .
      .
    .
    
    method HE_OnPlayerConnectionDisconnect( connection as NodeRef ) as Boolean
    // Used by $ACCOUNT
    // Parameters:
    //   connection - reference to the _playerConnection node
    // Returns:
    //   handled - boolean indicating whether or not the clean engine processing should be used
    //
    
      // don't do reconnection mechanics
      return true
    .
    
    function GetPositionOnPath( path as NodeRef of Class PathNode ) as Vector3
      if path == None
        return "(0,0,0)"
      .
      
      area as NodeRef of Class _Area = $AREA
      if not ( area is kindof ArrivalPointData )
        GlomClass( "ArrivalPointData", area )
      .
      
      where area is kindof ArrivalPointData
        waypoint as NodeRef of Class PathPointNode = PathUtils:GetNextWaypoint( path, area.lastWaypoint )
        if waypoint != None
          area.lastWaypoint = waypoint
          return waypoint.PathPointLocation
        else
          waypoint = PathUtils:GetFirstWaypoint( path )
          if waypoint != None
            area.lastWaypoint = waypoint
            return waypoint.PathPointLocation
          else
            return "(0,0,0)"
          .
        .
      .
    .
    
    function Debug( system as String, message as String )
      if $CONFIGURATIONS._CoreScriptDebug( system )
        $Debug.SendNotifyDebugMessage( system, message )
      .
    .

    I can post ( some ) more but u will have to ask questions so i know which ones to give you



    As far as communicating and what not the login part uses RSA Encryption and everything sent after that is not encrypted

    all remote calls from the client to the server can only be made to functions or methods which are marked with the modifer word Untrusted. This ensures that hacked clients cannot call just any server function. It is, however, important that the implementors of these functions ensure that they are properly safeguarded against hacking

    Client-side files are protected from accidental or malicious changes with two coordinated layers of HMAC-style signature verification. Username/password and other sensitive information bound for the AUTHENTICATOR becomes encrypted with a PKI-style key. The actual session between client and server can be protected with OpenSSL, when desired.
    Last edited by Hex00010; 11-28-2011 at 10:00 PM.

  10. #10
    Sirmabus's Avatar Sergeant
    Reputation
    34
    Join Date
    Jun 2008
    Posts
    69
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    2. Your question on looking at the HeroBlade client vs the stwor.exe will be different as always and the reason is because the Heroblade .exe is for the Engine its self not for a game so the data will be diff no matter what lol
    I'm not sure who misunderstands what here

    From reading the HE docs the client side is meant to be an engine that is mostly data/script driven.
    Hence the assumption about the commonality in the clients and modules.

    You take your HE engine: you add your own XML and script defs for HE node objects, throw in your client behavior and action scripts, plus your server-side scripts and extra data.
    Stir in your assets like models and map data, textures, audio, etc., simmer until done and you have your game.

    You can take the free HeroBlade engine, and, or, one of the limited licenses and make your own MMO game just doing this, not even needing a custom client.

    The BigWorld engine works like this too. With the apparent main differences are BW uses Python and HE has this on-the-fly world construction/edit feature.
    As a matter of fact, take BW engine "World of Tanks" MMO. It's easy to mess with because it's not very far from the base engine. It just has some custom parts (as facilitated by the engine to do in C++) for speed and attempts to hide some stuff from "hackers".

    I do see a lot of the HE wiki stuff in "swtor.exe". Obviously the base paradigms and concepts are there.
    It would just be nice to associate as much base/commone engine stuff for access in binary/code form in the client as possible.
    Like be able to bring a console out and be able to type "list nodes" or what ever; or even call the internal "list nodes" method via a custom wrapper if it's there, etc.

    And right if one had the scripts (IE from a HS decompiler) the "hacker" could look at things from the script space/layer point of view.


    I see mainly two ways of doing things in the client space:
    1) Make a HS decompiler (at least a byte code disassembler/viewer) and mess with things in the game's script space.
    Modifying existing key flow scripts, and, or replacing them with your own, etc.

    2) More traditionally, find the data and necessary support functions et al, inside of the client necessary for internal or external hacks and bots, and, or, for emu packet monitoring and reversing. To fit things into one's own existing bot/hack engines, etc.


    If you could, for people interested in decompiling HS:
    A) Post a simple "Hello World" script, and maybe a few more complex.
    B) Upload a HE binary compiled version of the said script(s).
    That might be very helpful
    Last edited by Sirmabus; 11-29-2011 at 12:08 AM.

  11. #11
    cereberusgrave's Avatar Private
    Reputation
    1
    Join Date
    Nov 2011
    Posts
    1
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    i have alot of server emulation experience, if you want to share and collaborate email me or add me to msn with this: [email protected] same works for yahoo.

  12. #12
    polimorfic's Avatar Corporal
    Reputation
    6
    Join Date
    Nov 2011
    Posts
    31
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by yamashi12 View Post
    Hello,


    Header

    byte[0] : Game state (00 login, 80 in game)
    byte[1..4] : data length (uint32)
    byte[5] : weird if(length < 255) then = to byte[1] else not understood
    byte[6..13] : not a checksum dunno what it is

    nth packet : Encrypted or deflated.
    byte[5] = byte[0] XOR byte[1] XOR ... byte[4]
    byte[5..8] - message ID for first packet

    byte[0] = (type1 << 6 | encType); encType = 0 - plain, encType - 1 RSA

  13. #13
    yamashi12's Avatar Master Sergeant
    Reputation
    60
    Join Date
    Jan 2011
    Posts
    126
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks, I had a hard time figuring out what these were.
    Can you explain how you got these ?

  14. #14
    polimorfic's Avatar Corporal
    Reputation
    6
    Join Date
    Nov 2011
    Posts
    31
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    search 0xA609E6A7(first packet messageID) in IDA

    btw, create private space for swtor emu discussions
    Last edited by polimorfic; 11-29-2011 at 05:53 AM.

  15. #15
    yamashi12's Avatar Master Sergeant
    Reputation
    60
    Join Date
    Jan 2011
    Posts
    126
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Oh yeah didn't think of that -_-
    Thanks !

Page 1 of 5 12345 LastLast

Similar Threads

  1. open source SwTor emu project
    By the1domo in forum SWTOR Emulator Servers
    Replies: 0
    Last Post: 09-10-2012, 07:09 AM
  2. github for swtor-emu
    By the1domo in forum SWTOR Emulator Servers
    Replies: 2
    Last Post: 05-02-2012, 10:44 PM
  3. SwTor Emu Beta News
    By the1domo in forum SWTOR Emulator Servers
    Replies: 12
    Last Post: 02-19-2012, 06:01 AM
  4. A Couple WoW Emu Questions
    By Avianar47 in forum World of Warcraft General
    Replies: 2
    Last Post: 06-19-2006, 03:31 PM
  5. anybody got links for Emu?
    By Krazzee in forum World of Warcraft General
    Replies: 4
    Last Post: 06-10-2006, 04:49 PM
All times are GMT -5. The time now is 05:41 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search