PDB Explorer (Found on a Japanese website.)

Results 1 to 12 of 12
  1. #1
    Retired. Don't PM. SecretsOThePast is offline
    DeveloperRank
    Jan 2009 Join Date
    643Posts

    PDB Explorer (Found on a Japanese website.)

    http://blog.titilima.com/wp-content/...bexp_v1.10.zip

    This allows you to view reconstructions of classes and structs from PDB files. Useful for if you have a PDB file, such as the one from MatchServer.exe or Gunz.exe

    I still can't believe I found this. Its usefulness will help novices like myself to REing understand it a bit more.

    Example dump:

    class ZGameClient : public MMatchClient // 0xd30
    {
    public:
    void ZGameClient(class ZGameClient&);
    void ZGameClient::ZGameClient(void);
    virtual void ZGameClient::~ZGameClient(void);
    void ZGameClient::PriorityBoost(bool);
    bool GetPriorityBoost(void);
    bool GetRejectNormalChat(void);
    void SetRejectNormalChat(bool);
    bool GetRejectTeamChat(void);
    void SetRejectTeamChat(bool);
    bool GetRejectClanChat(void);
    void SetRejectClanChat(bool);
    bool GetRejectWhisper(void);
    void SetRejectWhisper(bool);
    bool GetRejectInvite(void);
    void SetRejectInvite(bool);
    ULONG GetClockCount(void);
    ULONG ZGameClient::GetGlobalClockCount(void);
    virtual void ZGameClient::OutputMessage(char*, enum MZMOMType);
    void SetOnCommandCallback(*);
    void ZGameClient::Tick(void);
    class MMatchStageSetting* GetMatchStageSetting(void);
    bool IsForcedEntry(void);
    bool IsLadderGame(void);
    void ZGameClient::ReleaseForcedEntry(void);
    void ZGameClient::ClearStageSetting(void);
    void ZGameClient::RequestPrevStageList(void);
    void ZGameClient::RequestNextStageList(void);
    void ZGameClient::RequestStageList(int);
    void ZGameClient::StartStageList(void);
    void ZGameClient::StopStageList(void);
    void ZGameClient::StartChannelList(enum MCHANNEL_TYPE);
    void ZGameClient::StopChannelList(void);
    char* GetChannelName(void);
    enum MCHANNEL_TYPE GetChannelType(void);
    char* GetChannelRuleName(void);
    char* GetStageName(void);
    int GetStageNumber(void);
    char* GetChatRoomInvited(void);
    void SetChatRoomInvited(char*);
    bool ZGameClient::AmIStageMaster(void);
    char* GetVoteMessage(void);
    void ZGameClient::AnswerSponsorAgreement(bool);
    void ZGameClient::AnswerJoinerAgreement(bool);
    void ZGameClient::RequestCreateClan(char*, char**);
    void ZGameClient::RequestProposal(enum MMatchProposalMode, char**, int);
    bool IsVoteInProgress(void);
    void SetVoteInProgress(bool);
    bool CanVote(void);
    void SetCanVote(bool);
    void ZGameClient::RequestGameSuicide(void);
    void ZGameClient::OnStageEnterBattle(struct MUID&, enum MCmdEnterBattleParam, struct MTD_PeerListNode*);
    int ZGameClient::ValidateRequestDeleteChar(void);
    void RequestChannelJoin(enum MCHANNEL_TYPE, char*);
    void ZGameClient::RequestChannelJoin(struct MUID&);
    void ZGameClient::RequestOnLobbyCreated(void);
    void ZGameClient::RequestOnGameDestroyed(void);
    class MEmblemMgr* GetEmblemManager(void);
    void ZGameClient::RequestServerStatusListInfo(void);
    void __local_vftable_ctor_closure(void);
    virtual void* __vecDelDtor(DWORD);
    protected:
    void SetChannelRuleName(char*);
    int GetBridgePeerCount(void);
    void SetBridgePeerCount(int);
    void UpdateBridgePeerTime(ULONG);
    void StartBridgePeer(void);
    void ZGameClient::UpdateStageSetting(struct MSTAGE_SETTING_NODE*, enum STAGE_STATE, struct MUID&);
    void SetCountdown(int);
    int GetCountdown(void);
    bool Countdown(int);
    int FindListItem(class MListBox*, struct MUID&) = 0;
    virtual bool ZGameClient::OnCommand(class MCommand*);
    virtual bool ZGameClient::OnSockDisconnect(DWORD);
    virtual bool ZGameClient::OnSockConnect(DWORD);
    virtual void ZGameClient::OnSockError(DWORD, enum SOCKET_ERROR_EVENT, int&);
    virtual int ZGameClient::OnConnected(DWORD, struct MUID*, struct MUID*, DWORD);
    virtual void ZGameClient::OnRegisterCommand(class MCommandManager*);
    virtual void ZGameClient::OnPrepareCommand(class MCommand*);
    virtual int ZGameClient::OnResponseMatchLogin(struct MUID&, int, char*, enum MMatchServerMode, enum MMatchUserGradeID, enum MMatchPremiumGradeID, struct MUID&);
    virtual void ZGameClient::OnBridgePeerACK(struct MUID&, int);
    virtual void ZGameClient::OnObjectCache(DWORD, void*, int);
    virtual void ZGameClient::OnAgentError(int);
    void ZGameClient::OnMatchNotify(DWORD);
    void ZGameClient::OnAnnounce(DWORD, char*);
    void OnResponseResult(int);
    void ZGameClient::OnChannelResponseJoin(struct MUID&, enum MCHANNEL_TYPE, char*);
    void ZGameClient::OnChannelChat(struct MUID&, char*, char*, int);
    void ZGameClient::OnChannelList(void*, int);
    void ZGameClient::OnChannelResponseRule(struct MUID&, char*);
    void ZGameClient::OnLadderPrepare(struct MUID&, int);
    void ZGameClient::OnLadderLaunch(struct MUID&, char*);
    void ZGameClient::OnLadderResponseChallenge(int);
    void ZGameClient::OnStageJoin(struct MUID&, struct MUID&, DWORD, char*);
    void ZGameClient::OnStageLeave(struct MUID&, struct MUID&);
    void OnStageStart(struct MUID&, struct MUID&, int);
    void ZGameClient::OnStageLaunch(struct MUID&, char*);
    void ZGameClient::OnStageFinishGame(struct MUID&);
    void ZGameClient::OnStageMap(struct MUID&, char*);
    void ZGameClient::OnStageTeam(struct MUID&, struct MUID&, DWORD);
    void ZGameClient::OnStagePlayerState(struct MUID&, struct MUID&, enum MMatchObjectStageState);
    void ZGameClient::OnStageMaster(struct MUID&, struct MUID&);
    void ZGameClient::OnStageChat(struct MUID&, struct MUID&, char*);
    void ZGameClient::OnStageList(int, int, void*, int);
    void ZGameClient::OnResponseFriendList(void*, int);
    void ZGameClient::OnChannelPlayerList(int, int, void*, int);
    void ZGameClient::OnChannelAllPlayerList(struct MUID&, void*, int);
    void ZGameClient::OnResponseStageSetting(struct MUID&, void*, int, void*, int, enum STAGE_STATE, struct MUID&);
    void ZGameClient::OnResponseRecommandedChannel(struct MUID&);
    void ZGameClient::OnResponsePeerRelay(struct MUID&);
    void ZGameClient::OnResponseGameInfo(struct MUID&, void*, void*, void*);
    void OnResponseCharInfoDetail(void*);
    void ZGameClient::OnLoadingComplete(struct MUID&, int);
    void ZGameClient::OnForcedEntryToGame(void);
    void ZGameClient::OnUserWhisper(char*, char*, char*);
    void ZGameClient::OnChatRoomJoin(char*, char*);
    void ZGameClient::OnChatRoomLeave(char*, char*);
    void ZGameClient::OnChatRoomSelectWrite(char*);
    void ZGameClient::OnChatRoomInvite(char*, char*);
    void ZGameClient::OnChatRoomChat(char*, char*, char*);
    void ZGameClient::OnFollowResponse(int);
    void ZGameClient::OnExpiredRentItem(void*);
    void OnBirdTest(void);
    void ZGameClient::OnResponseCreateClan(int, int);
    void ZGameClient::OnResponseAgreedCreateClan(int);
    void ZGameClient::OnClanAskSponsorAgreement(int, char*, struct MUID&, char*);
    void ZGameClient::OnClanAnswerSponsorAgreement(int, struct MUID&, char*, bool);
    void ZGameClient::OnClanResponseCloseClan(int);
    void ZGameClient::OnClanResponseJoinClan(int);
    void ZGameClient::OnClanAskJoinAgreement(char*, struct MUID&, char*);
    void ZGameClient::OnClanAnswerJoinAgreement(struct MUID&, char*, bool);
    void ZGameClient::OnClanResponseAgreedJoinClan(int);
    void ZGameClient::OnClanUpdateCharClanInfo(void*);
    void ZGameClient::OnClanResponseLeaveClan(int);
    void ZGameClient::OnClanResponseChangeGrade(int);
    void ZGameClient::OnClanResponseExpelMember(int);
    void ZGameClient::OnClanMsg(char*, char*);
    void ZGameClient::OnClanMemberList(void*);
    void ZGameClient::OnClanResponseClanInfo(void*);
    void ZGameClient::OnClanStandbyClanList(int, int, void*);
    void ZGameClient::OnClanMemberConnected(char*);
    void ZGameClient::OnResponseProposal(int, enum MMatchProposalMode, int);
    void ZGameClient::OnAskAgreement(struct MUID&, void*, enum MMatchProposalMode, int);
    void ZGameClient::OnReplyAgreement(struct MUID&, struct MUID&, char*, enum MMatchProposalMode, int, bool);
    void ZGameClient::ReplyAgreement(bool);
    void ZGameClient::ReplyAgreement(struct MUID&, enum MMatchProposalMode, bool);
    void ZGameClient::OnGameLevelUp(struct MUID&);
    void ZGameClient::OnGameLevelDown(struct MUID&);
    void ZGameClient::OnSpawnWorldItem(void*);
    void ZGameClient::OnObtainWorldItem(struct MUID&, int);
    void ZGameClient::OnRemoveWorldItem(int);
    void ZGameClient::OnLocalReport119(void);
    void ZGameClient::OnAdminAnnounce(char*, enum ZAdminAnnounceType);
    void ZGameClient::OnNotifyCallVote(char*, char*);
    void ZGameClient::OnNotifyVoteResult(char*, int);
    void ZGameClient::OnVoteAbort(int);
    void ZGameClient::OnBroadcastClanRenewVictories(char*, char*, int);
    void ZGameClient::OnBroadcastClanInterruptVictories(char*, char*, int);
    void ZGameClient::ProcessEmblem(DWORD, DWORD);
    void RequestEmblemURL(DWORD);
    void ZGameClient::OnClanResponseEmblemURL(DWORD, DWORD, char*);
    void ZGameClient::OnClanEmblemReady(DWORD, char*);
    protected:
    char m_szChannel[0x100]; // +0x4fc(0x100)
    char m_szChannelRule[0x80]; // +0x5fc(0x80)
    char m_szStageName[0x100]; // +0x67c(0x100)
    char m_szChatRoomInvited[0x40]; // +0x77c(0x40)
    DWORD m_nRoomNo; // +0x7bc(0x4)
    int m_nStageCursor; // +0x7c0(0x4)
    bool m_bLadderGame; // +0x7c4(0x1)
    enum MCHANNEL_TYPE m_CurrentChannelType; // +0x7c8(0x4)
    char m_szVoteText[0x100]; // +0x7cc(0x100)
    bool (*m_fnOnCommandCallback)(class MCommand*); // +0xcc0(0x4)
    bool m_bIsBigGlobalClock; // +0xcc4(0x1)
    ULONG m_nClockDistance; // +0xcc8(0x4)
    class MMatchStageSetting m_MatchStageSetting; // +0xccc(0x60)
    bool m_bForcedEntry; // +0xd2c(0x1)
    private:
    ULONG m_nPrevClockRequestAttribute; // +0x8cc(0x4)
    int m_nBridgePeerCount; // +0x8d0(0x4)
    ULONG m_tmLastBridgePeer; // +0x8d4(0x4)
    int m_nCountdown; // +0x8d8(0x4)
    ULONG m_tmLastCountdown; // +0x8dc(0x4)
    int m_nRequestID; // +0x8e0(0x4)
    struct MUID m_uidRequestPlayer; // +0x8e4(0x8)
    class ZNetAgreementBuilder m_AgreementBuilder; // +0x8ec(0x1c)
    enum MMatchProposalMode m_nProposalMode; // +0x908(0x4)
    bool m_bVoteInProgress; // +0x90c(0x1)
    bool m_bCanVote; // +0x90d(0x1)
    class MEmblemMgr m_EmblemMgr; // +0x910(0x3a8)
    bool m_bPriorityBoost; // +0xcb8(0x1)
    bool m_bRejectNormalChat; // +0xcb9(0x1)
    bool m_bRejectTeamChat; // +0xcba(0x1)
    bool m_bRejectClanChat; // +0xcbb(0x1)
    bool m_bRejectWhisper; // +0xcbc(0x1)
    bool m_bRejectInvite; // +0xcbd(0x1)
    };
    I haven't scanned it but if you're that paranoid, use it in a VM on a machine you don't care about.

    Crazy japanese people, I tell ya.


  2. #2
    Valued Member DelPa is offline
    MemberRank
    May 2010 Join Date
    JapanLocation
    100Posts

    Re: PDB Explorer (Found on a Japanese website.)

    It looks Chinese...?

  3. #3
    Member Alexander is offline
    MemberRank
    Nov 2010 Join Date
    The NetherlandsLocation
    52Posts

    Re: PDB Explorer (Found on a Japanese website.)

    Thanks for sharing!

  4. #4
    GunZ Developer dacharles is offline
    MemberRank
    Oct 2006 Join Date
    476Posts

    Re: PDB Explorer (Found on a Japanese website.)

    can't open it show something in chinesse...

    edit: lol I need dia library right?
    Last edited by dacharles; 14-12-10 at 05:41 PM.

  5. #5
    Retired. Don't PM. SecretsOThePast is offline
    DeveloperRank
    Jan 2009 Join Date
    643Posts

    Re: PDB Explorer (Found on a Japanese website.)

    Quote Originally Posted by dacharles View Post
    can't open it show something in chinesse...
    You may need debugging tools for windows or the DIA SDK, which is included in the Windows SDK to run it. dbghelp.dll is needed I believe to access these types of files.

  6. #6
    igunz.net Dawson is offline
    LegendRank
    Feb 2010 Join Date
    ::1 (Canada BC)Location
    2,581Posts

    Re: PDB Explorer (Found on a Japanese website.)

    Very nice, I prefer lurking with IDA over this kinda stuff, but hey it's a fine find anyway

  7. #7
    Doggie And Rice. Military is offline
    MemberRank
    Jun 2009 Join Date
    Here and AboutLocation
    3,301Posts

    Re: PDB Explorer (Found on a Japanese website.)

    Thank you.

  8. #8
    Retired. Don't PM. SecretsOThePast is offline
    DeveloperRank
    Jan 2009 Join Date
    643Posts

    Re: PDB Explorer (Found on a Japanese website.)

    Quote Originally Posted by DawsonByrd View Post
    Very nice, I prefer lurking with IDA over this kinda stuff, but hey it's a fine find anyway
    IDA doesn't reconstruct the classes; it only does structures of classes. Also, IDA is highly inaccurate for positioning of structures and it's also not outputting the information with private vs public class members, with IDA you'd have to match up the PDB dump... with this, you'd just have to copy and paste and do minor adjustments.

  9. #9
    Account Upgraded | Title Enabled! TheCodeOfGunz is offline
    MemberRank
    Oct 2010 Join Date
    PhilippinesLocation
    532Posts

    Re: PDB Explorer (Found on a Japanese website.)

    i need the PDB of 2007 or 2008 is anyone have?

  10. #10

    Re: PDB Explorer (Found on a Japanese website.)

    The language's Chinese.

  11. #11
    igunz.net Dawson is offline
    LegendRank
    Feb 2010 Join Date
    ::1 (Canada BC)Location
    2,581Posts

    Re: PDB Explorer (Found on a Japanese website.)

    Quote Originally Posted by TheCodeOfGunz View Post
    i need the PDB of 2007 or 2008 is anyone have?
    No such thing.

  12. #12
    Account Upgraded | Title Enabled! skywind is offline
    MemberRank
    Nov 2010 Join Date
    239Posts

    Re: PDB Explorer (Found on a Japanese website.)

    THIS is not jep -_-

    ITS CH



Advertisement