Quiz Helper

05/09/2011 00:02 lol12sky2#121
Quote:
Originally Posted by doomedmaniac View Post
you make yourself look more pathetic
Quote:
Originally Posted by TechnoPhreak View Post
making yourself look foolish
idc if u guys think im a 45 year old fat man in my mother's basement eating chicken
05/09/2011 01:21 Warcry54#122
i get always this kind of error:
[Only registered and activated users can see links. Click Here To Register...]

does anyone knows any solution?
05/10/2011 02:41 Fantasma81#123
i dunno why inathero came here

this isn't his bot/quiz helper post

close this pathetic discussion both side


dumpersta did a great program and bot... sadly he's not following it anymore and dun read forum anymore i smell...
05/10/2011 03:51 ekimisoka#124
anyways why is Inathero is here?this is not his Bot thing..tsk tsk..im just confuse..
05/10/2011 04:24 girmak#125
Quote:
Originally Posted by ekimisoka View Post
anyways why is Inathero is here?this is not his Bot thing..tsk tsk..im just confuse..

He was here offering to help fix the quiz helper, since dumpsta seems to have stopped all work on it. There is no source code so its not gonna get fixxed. I agree that the BOI Quiz should be removed from this if anyone should happen to get the source code. The Trolling should stop though, Inathero has taken the game to lengths many people would not have been able to get to before. If Dumpsta comes back, and sees this thread I hope that he will give his source code.
05/10/2011 05:06 Fantasma81#126
Quote:
Originally Posted by girmak View Post
He was here offering to help fix the quiz helper, since dumpsta seems to have stopped all work on it. There is no source code so its not gonna get fixxed. I agree that the BOI Quiz should be removed from this if anyone should happen to get the source code. The Trolling should stop though, Inathero has taken the game to lengths many people would not have been able to get to before. If Dumpsta comes back, and sees this thread I hope that he will give his source code.
where the hell u have read that he wanted to update the quiz? he said he hope and asked to every1 to dun update it...

move out ur lips from his/her ass plz...

he's not the profet, like seems from ur words... he did a thing cos he wanted to do, maybe he started it for himself and then wanted to share to others, that dun mean he's "the profet" or "taken the game to lengths many people would not have been able to get to before" like u wrote, this phrase made my day ;)
05/10/2011 09:01 NguyenNP#127
Quote:
Originally Posted by girmak View Post
He was here offering to help fix the quiz helper, since dumpsta seems to have stopped all work on it. There is no source code so its not gonna get fixxed. I agree that the BOI Quiz should be removed from this if anyone should happen to get the source code. The Trolling should stop though, Inathero has taken the game to lengths many people would not have been able to get to before. If Dumpsta comes back, and sees this thread I hope that he will give his source code.
I have no idea about all above article. But if you say that there is source code, then you are wrong. Dumpsta you have not applied any security measures for him/her program, decompile and get the source code is "very very very" ease. Try it.

If someone wants to get the source code without having to "work", just contact me. When Dumpsta has no comments, I will send you free.

Sorry, Dumpsta because your program has is no longer usable.

S/r about my bad English.
05/10/2011 09:28 dlnqt#128
Here are the source codes for Warning of Wisdom and Love Match ripped from dumpersta's quiz helper bot, I won't include the BOI Quiz source code though..

Love Match:
Code:
public class LoveMatchCompanion : Form
{
    // Fields
    private Thread AnswerThread;
    private QuizHelper.QuizHelper.ProcData bot;
    private IContainer components;
    private IniFile IniFile = new IniFile(Application.StartupPath + @"\Love Match.ini");
    private Label label2;
    private Label label4;
    public string LastQuestion;
    private QuizHelper.QuizHelper masterWindow;
    private Label output_PartnerAnswer;
    private Label output_Question;
    private Label output_YourAnswer;
    public static int pQuiz_Question = 0x13d7b78;
    private Label txt_Question;

    // Methods
    public LoveMatchCompanion(QuizHelper.QuizHelper frm1)
    {
        this.InitializeComponent();
        this.masterWindow = frm1;
        if (this.masterWindow.lstbx_CharNames.SelectedItems.Count > 0)
        {
            foreach (QuizHelper.QuizHelper.ProcData data in this.masterWindow.botSessions)
            {
                if (data.Name == this.masterWindow.lstbx_CharNames.SelectedItem.ToString())
                {
                    this.bot = data;
                }
            }
        }
        else
        {
            return;
        }
        this.AnswerThread = new Thread(new ThreadStart(this.Thread_Answers));
        this.AnswerThread.Start();
    }

    protected override void Dispose(bool disposing)
    {
        this.AnswerThread.Abort();
        this.masterWindow.LoveMatchWindow = null;
        if (disposing && (this.components != null))
        {
            this.components.Dispose();
        }
        base.Dispose(disposing);
    }

    private void InitializeComponent()
    {
        ComponentResourceManager manager = new ComponentResourceManager(typeof(LoveMatchCompanion));
        this.txt_Question = new Label();
        this.output_Question = new Label();
        this.label2 = new Label();
        this.output_YourAnswer = new Label();
        this.label4 = new Label();
        this.output_PartnerAnswer = new Label();
        base.SuspendLayout();
        this.txt_Question.AutoSize = true;
        this.txt_Question.Location = new Point(12, 9);
        this.txt_Question.Name = "txt_Question";
        this.txt_Question.Size = new Size(0x34, 13);
        this.txt_Question.TabIndex = 0;
        this.txt_Question.Text = "Question:";
        this.output_Question.AutoSize = true;
        this.output_Question.Font = new Font("Microsoft Sans Serif", 15f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_Question.Location = new Point(0x1c, 0x16);
        this.output_Question.Name = "output_Question";
        this.output_Question.Size = new Size(180, 0x19);
        this.output_Question.TabIndex = 1;
        this.output_Question.Text = "No Question Active";
        this.label2.AutoSize = true;
        this.label2.Location = new Point(12, 0x2f);
        this.label2.Name = "label2";
        this.label2.Size = new Size(0x43, 13);
        this.label2.TabIndex = 2;
        this.label2.Text = "You Answer:";
        this.output_YourAnswer.AutoSize = true;
        this.output_YourAnswer.Font = new Font("Microsoft Sans Serif", 15f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_YourAnswer.Location = new Point(0x1c, 60);
        this.output_YourAnswer.Name = "output_YourAnswer";
        this.output_YourAnswer.Size = new Size(180, 0x19);
        this.output_YourAnswer.TabIndex = 3;
        this.output_YourAnswer.Text = "No Question Active";
        this.label4.AutoSize = true;
        this.label4.Location = new Point(11, 0x55);
        this.label4.Name = "label4";
        this.label4.Size = new Size(0x57, 13);
        this.label4.TabIndex = 4;
        this.label4.Text = "Partner Answers:";
        this.output_PartnerAnswer.AutoSize = true;
        this.output_PartnerAnswer.Font = new Font("Microsoft Sans Serif", 15f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_PartnerAnswer.Location = new Point(0x1c, 0x62);
        this.output_PartnerAnswer.Name = "output_PartnerAnswer";
        this.output_PartnerAnswer.Size = new Size(180, 0x19);
        this.output_PartnerAnswer.TabIndex = 5;
        this.output_PartnerAnswer.Text = "No Question Active";
        base.AutoScaleDimensions = new SizeF(6f, 13f);
        base.AutoScaleMode = AutoScaleMode.Font;
        base.ClientSize = new Size(0x25a, 130);
        base.Controls.Add(this.output_PartnerAnswer);
        base.Controls.Add(this.label4);
        base.Controls.Add(this.output_YourAnswer);
        base.Controls.Add(this.label2);
        base.Controls.Add(this.output_Question);
        base.Controls.Add(this.txt_Question);
        base.FormBorderStyle = FormBorderStyle.FixedToolWindow;
        base.Icon = (Icon) manager.GetObject("$this.Icon");
        base.MaximizeBox = false;
        this.MaximumSize = new Size(0x260, 0x9a);
        base.MinimizeBox = false;
        this.MinimumSize = new Size(0x260, 0x9a);
        base.Name = "LoveMatchCompanion";
        base.ShowInTaskbar = false;
        this.Text = "Love Match Companion";
        base.TopMost = true;
        base.ResumeLayout(false);
        base.PerformLayout();
    }

    public void Thread_Answers()
    {
        while (true)
        {
            int baseAddress = BitConverter.ToInt32(Hacking.Process_ReadMemory(this.bot.Handle, pQuiz_Question, 4), 0);
            if (baseAddress != 0)
            {
                string section = Hacking.Process_ReadStringFromMemory(this.bot.Handle, baseAddress, false);
                if (section != this.LastQuestion)
                {
                    this.IniFile.IniWriteValue(section, "Question Type", "Love Match");
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_YourAnswer.Text = this.IniFile.IniReadValue(section, "Your Answer");
                    this.output_PartnerAnswer.Text = this.IniFile.IniReadValue(section, "Partner Answer");
                }
                Thread.Sleep(100);
            }
        }
    }
}
Warning of Wisdom:
Code:
public class Warning : Form
{
    // Fields
    private Thread AnswerThread;
    private QuizHelper.QuizHelper.ProcData bot;
    private IContainer components;
    private IniFile IniFile = new IniFile(Application.StartupPath + @"\Warning of Wisdom.ini");
    private Label label_Answer;
    private Label label_Question;
    public string LastQuestion;
    private QuizHelper.QuizHelper masterWindow;
    private Label output_Answer;
    private Label output_Question;
    public static int pQuiz_Question = 0x13c1a1c;

    // Methods
    public Warning(QuizHelper.QuizHelper frm1)
    {
        this.InitializeComponent();
        this.masterWindow = frm1;
        if (this.masterWindow.lstbx_CharNames.SelectedItems.Count > 0)
        {
            foreach (QuizHelper.QuizHelper.ProcData data in this.masterWindow.botSessions)
            {
                if (data.Name == this.masterWindow.lstbx_CharNames.SelectedItem.ToString())
                {
                    this.bot = data;
                }
            }
        }
        else
        {
            return;
        }
        this.AnswerThread = new Thread(new ThreadStart(this.Thread_Answers));
        this.AnswerThread.Start();
    }

    protected override void Dispose(bool disposing)
    {
        this.AnswerThread.Abort();
        this.masterWindow.WarningWindow = null;
        if (disposing && (this.components != null))
        {
            this.components.Dispose();
        }
        base.Dispose(disposing);
    }

    private void InitializeComponent()
    {
        ComponentResourceManager manager = new ComponentResourceManager(typeof(Warning));
        this.label_Question = new Label();
        this.output_Question = new Label();
        this.label_Answer = new Label();
        this.output_Answer = new Label();
        base.SuspendLayout();
        this.label_Question.AutoSize = true;
        this.label_Question.Location = new Point(13, 13);
        this.label_Question.Name = "label_Question";
        this.label_Question.Size = new Size(0x31, 13);
        this.label_Question.TabIndex = 0;
        this.label_Question.Text = "Question";
        this.output_Question.AutoSize = true;
        this.output_Question.Font = new Font("Microsoft Sans Serif", 16f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_Question.Location = new Point(0x1a, 30);
        this.output_Question.Name = "output_Question";
        this.output_Question.Size = new Size(0xb1, 0x1a);
        this.output_Question.TabIndex = 1;
        this.output_Question.Text = "Current Question";
        this.label_Answer.AutoSize = true;
        this.label_Answer.Location = new Point(0x10, 60);
        this.label_Answer.Name = "label_Answer";
        this.label_Answer.Size = new Size(0x2d, 13);
        this.label_Answer.TabIndex = 2;
        this.label_Answer.Text = "Answer:";
        this.output_Answer.AutoSize = true;
        this.output_Answer.Font = new Font("Microsoft Sans Serif", 16f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_Answer.Location = new Point(0x1f, 0x4d);
        this.output_Answer.Name = "output_Answer";
        this.output_Answer.Size = new Size(0xa3, 0x1a);
        this.output_Answer.TabIndex = 3;
        this.output_Answer.Text = "Current Answer";
        base.AutoScaleDimensions = new SizeF(6f, 13f);
        base.AutoScaleMode = AutoScaleMode.Font;
        base.ClientSize = new Size(0x203, 0x73);
        base.Controls.Add(this.output_Answer);
        base.Controls.Add(this.label_Answer);
        base.Controls.Add(this.output_Question);
        base.Controls.Add(this.label_Question);
        base.FormBorderStyle = FormBorderStyle.FixedToolWindow;
        base.Icon = (Icon) manager.GetObject("$this.Icon");
        base.MaximizeBox = false;
        this.MaximumSize = new Size(0x209, 0x8b);
        base.MinimizeBox = false;
        this.MinimumSize = new Size(0x209, 0x8b);
        base.Name = "Warning";
        base.ShowInTaskbar = false;
        base.SizeGripStyle = SizeGripStyle.Hide;
        this.Text = "Warning of Wisdom Guide";
        base.TopMost = true;
        base.ResumeLayout(false);
        base.PerformLayout();
    }

    public void Thread_Answers()
    {
        while (true)
        {
            int baseAddress = BitConverter.ToInt32(Hacking.Process_ReadMemory(this.bot.Handle, pQuiz_Question, 4), 0);
            if (baseAddress != 0)
            {
                string section = Hacking.Process_ReadStringFromMemory(this.bot.Handle, baseAddress, false);
                if (section.Contains("Which incorrectly describes Starword [Silence]?"))
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = "Silence Resistance +2%";
                }
                else if (section.Contains("Which is the league name in [Ancient Ruins]?"))
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = "Gramr (or Chaosflame)";
                }
                else if (section.Contains("How many sources are there in [Ancient Ruins]?"))
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = "3";
                }
                else if (section.Contains("The level requirement for [Ancient Ruins] is ( )?"))
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = "45";
                }
                else if (section != this.LastQuestion)
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = this.IniFile.IniReadValue(section, "Answer");
                    this.IniFile.IniWriteValue(section, "Answer", this.output_Answer.Text);
                }
                Thread.Sleep(100);
            }
        }
    }
}
Quiz Helper Main Program:
Code:
public class QuizHelper : Form
{
    // Fields
    public string AppPath = Application.StartupPath;
    public Process[] BIO_Proccesses;
    public BOIQuiz BOIQuizWindow;
    public List<ProcData> botSessions = new List<ProcData>();
    public Button btn_Bot_RefreshCharList;
    private Button btn_BQ_Launch;
    private Button btn_LM_Launch;
    private Button btn_WoW_Launch;
    public string charlist_PreviousSelected = "";
    private IContainer components;
    public Button DeleteLog;
    public Label EditingLabel;
    public Label label1;
    public LoveMatchCompanion LoveMatchWindow;
    public ListBox lstbx_CharNames;
    public Button OutputFill;
    public static int pCharacter_Name = 0xef7bbc;
    public int UniIDCount;
    public Warning WarningWindow;

    // Methods
    public QuizHelper()
    {
        this.InitializeComponent();
    }

    private void btn_Bot_RefreshCharList_Click(object sender, EventArgs e)
    {
        this.Form_Load_CharList();
    }

    private void btn_BQ_Launch_Click(object sender, EventArgs e)
    {
        this.ShowBOIQuiz();
    }

    private void btn_LM_Launch_Click(object sender, EventArgs e)
    {
        this.ShowLoveMatch();
    }

    private void btn_WoW_Launch_Click(object sender, EventArgs e)
    {
        this.ShowWarning();
    }

    protected override void Dispose(bool disposing)
    {
        if (this.LoveMatchWindow != null)
        {
            this.LoveMatchWindow.Close();
        }
        if (this.BOIQuizWindow != null)
        {
            this.BOIQuizWindow.Close();
        }
        if (this.WarningWindow != null)
        {
            this.WarningWindow.Close();
        }
        if (disposing && (this.components != null))
        {
            this.components.Dispose();
        }
        base.Dispose(disposing);
    }

    public bool FileExists(string file)
    {
        return File.Exists(file);
    }

    public void Form_Load_CharList()
    {
        this.lstbx_CharNames.Items.Clear();
        this.BIO_Proccesses = Process.GetProcessesByName("game");
        for (int i = 0; i < this.BIO_Proccesses.Length; i++)
        {
            if (!this.BIO_Proccesses[i].MainWindowTitle.Contains("Immortals"))
            {
                continue;
            }
            IntPtr hProcess = Hacking.OpenProcess(Hacking.ProcessAccessFlags.VMWrite | Hacking.ProcessAccessFlags.VMRead | Hacking.ProcessAccessFlags.VMOperation, true, this.BIO_Proccesses[i].Id);
            string item = Hacking.Process_ReadStringFromMemory(hProcess, pCharacter_Name, false);
            if (item != "")
            {
                bool flag = false;
                foreach (ProcData data in this.botSessions)
                {
                    if (data.Name == item)
                    {
                        flag = true;
                        break;
                    }
                }
                if (!flag)
                {
                    ProcData data2 = new ProcData {
                        Process = this.BIO_Proccesses[i],
                        Handle = hProcess,
                        Name = item
                    };
                    this.botSessions.Add(data2);
                }
                this.lstbx_CharNames.Items.Add(item);
            }
        }
    }

    private void InitializeComponent()
    {
        ComponentResourceManager manager = new ComponentResourceManager(typeof(QuizHelper.QuizHelper));
        this.label1 = new Label();
        this.btn_Bot_RefreshCharList = new Button();
        this.lstbx_CharNames = new ListBox();
        this.EditingLabel = new Label();
        this.DeleteLog = new Button();
        this.btn_WoW_Launch = new Button();
        this.btn_BQ_Launch = new Button();
        this.btn_LM_Launch = new Button();
        base.SuspendLayout();
        this.label1.AutoSize = true;
        this.label1.ImeMode = ImeMode.NoControl;
        this.label1.Location = new Point(0x13, 8);
        this.label1.Name = "label1";
        this.label1.Size = new Size(90, 13);
        this.label1.TabIndex = 0;
        this.label1.Text = "Current Character";
        this.btn_Bot_RefreshCharList.ImeMode = ImeMode.NoControl;
        this.btn_Bot_RefreshCharList.Location = new Point(2, 0x9f);
        this.btn_Bot_RefreshCharList.Name = "btn_Bot_RefreshCharList";
        this.btn_Bot_RefreshCharList.Size = new Size(0x7a, 0x17);
        this.btn_Bot_RefreshCharList.TabIndex = 3;
        this.btn_Bot_RefreshCharList.Text = "Refresh List";
        this.btn_Bot_RefreshCharList.UseVisualStyleBackColor = true;
        this.btn_Bot_RefreshCharList.Click += new EventHandler(this.btn_Bot_RefreshCharList_Click);
        this.lstbx_CharNames.FormattingEnabled = true;
        this.lstbx_CharNames.Location = new Point(4, 0x31);
        this.lstbx_CharNames.Name = "lstbx_CharNames";
        this.lstbx_CharNames.RightToLeft = RightToLeft.No;
        this.lstbx_CharNames.Size = new Size(120, 0x6c);
        this.lstbx_CharNames.TabIndex = 5;
        this.lstbx_CharNames.SelectedIndexChanged += new EventHandler(this.lstbx_CharNames_SelectedIndexChanged);
        this.EditingLabel.Font = new Font("Arial", 11.25f, FontStyle.Bold);
        this.EditingLabel.ForeColor = Color.FromArgb(0xc0, 0, 0);
        this.EditingLabel.ImeMode = ImeMode.NoControl;
        this.EditingLabel.Location = new Point(6, 0x17);
        this.EditingLabel.Name = "EditingLabel";
        this.EditingLabel.Size = new Size(0x76, 0x18);
        this.EditingLabel.TabIndex = 11;
        this.EditingLabel.TextAlign = ContentAlignment.MiddleCenter;
        this.DeleteLog.Location = new Point(0, 0);
        this.DeleteLog.Name = "DeleteLog";
        this.DeleteLog.Size = new Size(0x4b, 0x17);
        this.DeleteLog.TabIndex = 80;
        this.btn_WoW_Launch.Location = new Point(0x83, 0x31);
        this.btn_WoW_Launch.Name = "btn_WoW_Launch";
        this.btn_WoW_Launch.Size = new Size(110, 0x17);
        this.btn_WoW_Launch.TabIndex = 0x5c;
        this.btn_WoW_Launch.Text = "Warning of Wisdom";
        this.btn_WoW_Launch.UseVisualStyleBackColor = true;
        this.btn_WoW_Launch.Click += new EventHandler(this.btn_WoW_Launch_Click);
        this.btn_BQ_Launch.Location = new Point(0x83, 0x85);
        this.btn_BQ_Launch.Name = "btn_BQ_Launch";
        this.btn_BQ_Launch.Size = new Size(110, 0x17);
        this.btn_BQ_Launch.TabIndex = 0x5d;
        this.btn_BQ_Launch.Text = "BoI Quiz";
        this.btn_BQ_Launch.UseVisualStyleBackColor = true;
        this.btn_BQ_Launch.Click += new EventHandler(this.btn_BQ_Launch_Click);
        this.btn_LM_Launch.Location = new Point(0x83, 90);
        this.btn_LM_Launch.Name = "btn_LM_Launch";
        this.btn_LM_Launch.Size = new Size(110, 0x17);
        this.btn_LM_Launch.TabIndex = 0x5e;
        this.btn_LM_Launch.Text = "Love Match";
        this.btn_LM_Launch.UseVisualStyleBackColor = true;
        this.btn_LM_Launch.Click += new EventHandler(this.btn_LM_Launch_Click);
        base.AutoScaleDimensions = new SizeF(6f, 13f);
        base.AutoScaleMode = AutoScaleMode.Font;
        base.ClientSize = new Size(0xfb, 0xc1);
        base.Controls.Add(this.btn_LM_Launch);
        base.Controls.Add(this.btn_BQ_Launch);
        base.Controls.Add(this.btn_WoW_Launch);
        base.Controls.Add(this.EditingLabel);
        base.Controls.Add(this.lstbx_CharNames);
        base.Controls.Add(this.btn_Bot_RefreshCharList);
        base.Controls.Add(this.label1);
        base.FormBorderStyle = FormBorderStyle.FixedToolWindow;
        base.Icon = (Icon) manager.GetObject("$this.Icon");
        base.MaximizeBox = false;
        this.MaximumSize = new Size(0x101, 0xd9);
        base.MinimizeBox = false;
        this.MinimumSize = new Size(0x101, 0xd9);
        base.Name = "QuizHelper";
        base.SizeGripStyle = SizeGripStyle.Hide;
        base.StartPosition = FormStartPosition.WindowsDefaultBounds;
        this.Text = "Quiz Helper";
        base.TopMost = true;
        base.Load += new EventHandler(this.QuizBot_Load);
        base.ResumeLayout(false);
        base.PerformLayout();
    }

    public void lstbx_CharNames_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (this.lstbx_CharNames.SelectedItems.Count > 0)
        {
            this.EditingLabel.Text = this.lstbx_CharNames.SelectedItem.ToString();
            if (this.LoveMatchWindow != null)
            {
                this.LoveMatchWindow.Close();
            }
            if (this.BOIQuizWindow != null)
            {
                this.BOIQuizWindow.Close();
            }
            if (this.WarningWindow != null)
            {
                this.WarningWindow.Close();
            }
            this.charlist_PreviousSelected = this.lstbx_CharNames.SelectedItem.ToString();
        }
    }

    public void QuizBot_Load(object sender, EventArgs e)
    {
        this.Form_Load_CharList();
    }

    public void ShowBOIQuiz()
    {
        if (this.BOIQuizWindow != null)
        {
            this.BOIQuizWindow.Activate();
        }
        else
        {
            if (this.lstbx_CharNames.SelectedItems.Count == 0)
            {
                if (this.lstbx_CharNames.Items.Count <= 0)
                {
                    return;
                }
                this.lstbx_CharNames.SetSelected(0, true);
            }
            this.BOIQuizWindow = new BOIQuiz(this);
            this.BOIQuizWindow.Show();
        }
    }

    public void ShowLoveMatch()
    {
        if (this.LoveMatchWindow != null)
        {
            this.LoveMatchWindow.Activate();
        }
        else if (this.lstbx_CharNames.SelectedItems.Count != 0)
        {
            this.LoveMatchWindow = new LoveMatchCompanion(this);
            this.LoveMatchWindow.Show();
        }
    }

    public void ShowWarning()
    {
        if (this.WarningWindow != null)
        {
            this.WarningWindow.Activate();
        }
        else
        {
            if (this.lstbx_CharNames.SelectedItems.Count == 0)
            {
                if (this.lstbx_CharNames.Items.Count <= 0)
                {
                    return;
                }
                this.lstbx_CharNames.SetSelected(0, true);
            }
            this.WarningWindow = new Warning(this);
            this.WarningWindow.Show();
        }
    }

    // Nested Types
    [StructLayout(LayoutKind.Sequential)]
    public struct ProcData
    {
        public Process Process;
        public IntPtr Handle;
        public string Name;
    }
}

We need to change 3 lines of code for LM and WW to work.. that is excluding BOI Quiz, if I were to add BOI Quiz, it would take an additional of 7 lines of codes to work.. for now lets talk about those 3 lines of code :)

First one is in the Quiz Helper Main Program code line 15 which is this code:
Code:
public static int pCharacter_Name = 0xef7bbc;
When you first run the program, you will notice the box at the left supposedly containing the characters names are empty, that is because the memory address(see code above) for the character name is wrong.

Second one is for the Love Match to work, located in the Love Match source code at line 15 also:
Code:
public static int pQuiz_Question = 0x13d7b78;
Third one is for the Warning of Wisdom to work, located in the Warning of Wisdom source code at line 14:
Code:
public static int pQuiz_Question = 0x13c1a1c;
Now, the next problem is how do we find the right memory address? Well, that's also my problem :D I'm stuck in this process also.. This is where reverse engineering comes to play, a good tool to reverse engineer is Ollydbg ofcourse.. Once you find the right memory address, edit the source code and compile it..

I'll be posting more soon, so everyone is welcome to help me in updating this program :)
05/10/2011 14:32 Fantasma81#129
uhm, so basically should be easy to upgrade it for new version... i'll try to check it also, i'll let u know, if some1 figure it early, let us know plz

ps. like i wrote before, i dun give a fok bout boi quiz, i'm interested on other things :D
05/10/2011 15:21 dlnqt#130
Yes it is very easy if you know how to find the memory address because there is minimal coding only. Change the address and compile. That's the process basically.
05/10/2011 19:27 tekc#131
Quote:
Originally Posted by dlnqt View Post
Here are the source codes for Warning of Wisdom and Love Match ripped from dumpersta's quiz helper bot, I won't include the BOI Quiz source code though..


We need to change 3 lines of code for LM and WW to work.. that is excluding BOI Quiz, if I were to add BOI Quiz, it would take an additional of 7 lines of codes to work.. for now lets talk about those 3 lines of code :)

First one is in the Quiz Helper Main Program code line 15 which is this code:
Code:
public static int pCharacter_Name = 0xef7bbc;
When you first run the program, you will notice the box at the left supposedly containing the characters names are empty, that is because the memory address(see code above) for the character name is wrong.

Second one is for the Love Match to work, located in the Love Match source code at line 15 also:
Code:
public static int pQuiz_Question = 0x13d7b78;
Third one is for the Warning of Wisdom to work, located in the Warning of Wisdom source code at line 14:
Code:
public static int pQuiz_Question = 0x13c1a1c;
Now, the next problem is how do we find the right memory address? Well, that's also my problem :D I'm stuck in this process also.. This is where reverse engineering comes to play, a good tool to reverse engineer is Ollydbg ofcourse.. Once you find the right memory address, edit the source code and compile it..

I'll be posting more soon, so everyone is welcome to help me in updating this program :)
I would like to start searching for new offsets and such, to help update the old apps, and i was told i needed an unpacked Game.exe first

I have been toying around with ollydb recently as well, i tried to follow the tutorial to unpack the new game.exe and the system detects the debugger and terminates before running.

Any chance you could send me an already unpacked version? or help me figure out what I'm doing wrong?
05/10/2011 20:10 dlnqt#132
You don't need to unpack the game.exe because it is already unpacked at runtime by using Olldbg + StrongOD.

IMO, unpacking the game.exe is only useful if you're going to modify the client itself. But if you're only going to find addresses, then you don't need to unpack it.

I read that you can find the addresses in two ways, one is using ollydbg or using cheat engine. They say that CE is the way to go if you're just finding the addresses, this involves advance knowledge of CE like pointers etc which I don't have any idea.

BTW I didn't unpack my game.exe, here is what I do:
- Download Ollydbg
- Download StrongOD (Ollydbg Plugin)
- Setup StrongOD, just check all the options or see other posts here for the setting. the purpose of StrongOD is to bypass VMProtect.
- Run game.exe in Ollydbg
- press F9 twice (if your BOI client successfully launches, then you bypassed VMProtect)
- Press Alt+M (Memory window will launch)
- sort the owner tab, then scroll through game.exe
- look for the size of 401000 - 580000(not sure of the number) other info so you don't get confused is the code text in the same line
- press F2
- then you will break again on the game.exe itself. (things to remember, if your client hangs, look on the lower right corner of ollydbg, if it says paused, just press F9 to continue)
- if you want to have a broad view, right click then search for all refernced strings and wait for it to load. you will find some neat stuff :)

I'm too lazy to make it detailed. Sorry.

I'm not yet able to make the quiz helper work, I still don't know how to search for the offset. I did find the address though to update for phantom23's multiclient which was a good start :)
05/10/2011 20:26 Mescaaa#133
U guys are awsome thanks so much for putting this effort and sharing it with us :D i will also try to find the offsets since i have a little experience with CE i might be able to grasp something lol once again thanks and if i find smth ill wil post here
05/10/2011 20:49 tekc#134
Quote:
Originally Posted by dlnqt View Post
You don't need to unpack the game.exe because it is already unpacked at runtime by using Olldbg + StrongOD.

IMO, unpacking the game.exe is only useful if you're going to modify the client itself. But if you're only going to find addresses, then you don't need to unpack it.

I read that you can find the addresses in two ways, one is using ollydbg or using cheat engine. They say that CE is the way to go if you're just finding the addresses, this involves advance knowledge of CE like pointers etc which I don't have any idea.

BTW I didn't unpack my game.exe, here is what I do:
- Download Ollydbg
- Download StrongOD (Ollydbg Plugin)
- Setup StrongOD, just check all the options or see other posts here for the setting. the purpose of StrongOD is to bypass VMProtect.
- Run game.exe in Ollydbg
- press F9 twice (if your BOI client successfully launches, then you bypassed VMProtect)
- Press Alt+M (Memory window will launch)
- sort the owner tab, then scroll through game.exe
- look for the size of 401000 - 580000(not sure of the number) other info so you don't get confused is the code text in the same line
- press F2
- then you will break again on the game.exe itself. (things to remember, if your client hangs, look on the lower right corner of ollydbg, if it says paused, just press F9 to continue)
- if you want to have a broad view, right click then search for all refernced strings and wait for it to load. you will find some neat stuff :)

I'm too lazy to make it detailed. Sorry.

I'm not yet able to make the quiz helper work, I still don't know how to search for the offset. I did find the address though to update for phantom23's multiclient which was a good start :)
hmmm, i must be doing something wrong with strongOD then.

I load the game.exe into ollydb, press F9 twice, and i get an error message stating that a debugger has been detected running on my system, and that i need to close it in order to continue

this happens on win 7 x64, and also on my x86 XP Virtual machine

I'm pretty sure i patched ollydb correctly so its not detected, changing the ACPU to AXXX and the fengyue to XXXXXXX

Am I missing something?

Any help is greatly appreciated, i would like to start being productive and to stop leeching :handsdown:
05/11/2011 01:12 dumpersta#135
Quote:
Originally Posted by dlnqt View Post
Here are the source codes for Warning of Wisdom and Love Match ripped from dumpersta's quiz helper bot, I won't include the BOI Quiz source code though..

Love Match:
Code:
public class LoveMatchCompanion : Form
{
    // Fields
    private Thread AnswerThread;
    private QuizHelper.QuizHelper.ProcData bot;
    private IContainer components;
    private IniFile IniFile = new IniFile(Application.StartupPath + @"\Love Match.ini");
    private Label label2;
    private Label label4;
    public string LastQuestion;
    private QuizHelper.QuizHelper masterWindow;
    private Label output_PartnerAnswer;
    private Label output_Question;
    private Label output_YourAnswer;
    public static int pQuiz_Question = 0x13d7b78;
    private Label txt_Question;

    // Methods
    public LoveMatchCompanion(QuizHelper.QuizHelper frm1)
    {
        this.InitializeComponent();
        this.masterWindow = frm1;
        if (this.masterWindow.lstbx_CharNames.SelectedItems.Count > 0)
        {
            foreach (QuizHelper.QuizHelper.ProcData data in this.masterWindow.botSessions)
            {
                if (data.Name == this.masterWindow.lstbx_CharNames.SelectedItem.ToString())
                {
                    this.bot = data;
                }
            }
        }
        else
        {
            return;
        }
        this.AnswerThread = new Thread(new ThreadStart(this.Thread_Answers));
        this.AnswerThread.Start();
    }

    protected override void Dispose(bool disposing)
    {
        this.AnswerThread.Abort();
        this.masterWindow.LoveMatchWindow = null;
        if (disposing && (this.components != null))
        {
            this.components.Dispose();
        }
        base.Dispose(disposing);
    }

    private void InitializeComponent()
    {
        ComponentResourceManager manager = new ComponentResourceManager(typeof(LoveMatchCompanion));
        this.txt_Question = new Label();
        this.output_Question = new Label();
        this.label2 = new Label();
        this.output_YourAnswer = new Label();
        this.label4 = new Label();
        this.output_PartnerAnswer = new Label();
        base.SuspendLayout();
        this.txt_Question.AutoSize = true;
        this.txt_Question.Location = new Point(12, 9);
        this.txt_Question.Name = "txt_Question";
        this.txt_Question.Size = new Size(0x34, 13);
        this.txt_Question.TabIndex = 0;
        this.txt_Question.Text = "Question:";
        this.output_Question.AutoSize = true;
        this.output_Question.Font = new Font("Microsoft Sans Serif", 15f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_Question.Location = new Point(0x1c, 0x16);
        this.output_Question.Name = "output_Question";
        this.output_Question.Size = new Size(180, 0x19);
        this.output_Question.TabIndex = 1;
        this.output_Question.Text = "No Question Active";
        this.label2.AutoSize = true;
        this.label2.Location = new Point(12, 0x2f);
        this.label2.Name = "label2";
        this.label2.Size = new Size(0x43, 13);
        this.label2.TabIndex = 2;
        this.label2.Text = "You Answer:";
        this.output_YourAnswer.AutoSize = true;
        this.output_YourAnswer.Font = new Font("Microsoft Sans Serif", 15f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_YourAnswer.Location = new Point(0x1c, 60);
        this.output_YourAnswer.Name = "output_YourAnswer";
        this.output_YourAnswer.Size = new Size(180, 0x19);
        this.output_YourAnswer.TabIndex = 3;
        this.output_YourAnswer.Text = "No Question Active";
        this.label4.AutoSize = true;
        this.label4.Location = new Point(11, 0x55);
        this.label4.Name = "label4";
        this.label4.Size = new Size(0x57, 13);
        this.label4.TabIndex = 4;
        this.label4.Text = "Partner Answers:";
        this.output_PartnerAnswer.AutoSize = true;
        this.output_PartnerAnswer.Font = new Font("Microsoft Sans Serif", 15f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_PartnerAnswer.Location = new Point(0x1c, 0x62);
        this.output_PartnerAnswer.Name = "output_PartnerAnswer";
        this.output_PartnerAnswer.Size = new Size(180, 0x19);
        this.output_PartnerAnswer.TabIndex = 5;
        this.output_PartnerAnswer.Text = "No Question Active";
        base.AutoScaleDimensions = new SizeF(6f, 13f);
        base.AutoScaleMode = AutoScaleMode.Font;
        base.ClientSize = new Size(0x25a, 130);
        base.Controls.Add(this.output_PartnerAnswer);
        base.Controls.Add(this.label4);
        base.Controls.Add(this.output_YourAnswer);
        base.Controls.Add(this.label2);
        base.Controls.Add(this.output_Question);
        base.Controls.Add(this.txt_Question);
        base.FormBorderStyle = FormBorderStyle.FixedToolWindow;
        base.Icon = (Icon) manager.GetObject("$this.Icon");
        base.MaximizeBox = false;
        this.MaximumSize = new Size(0x260, 0x9a);
        base.MinimizeBox = false;
        this.MinimumSize = new Size(0x260, 0x9a);
        base.Name = "LoveMatchCompanion";
        base.ShowInTaskbar = false;
        this.Text = "Love Match Companion";
        base.TopMost = true;
        base.ResumeLayout(false);
        base.PerformLayout();
    }

    public void Thread_Answers()
    {
        while (true)
        {
            int baseAddress = BitConverter.ToInt32(Hacking.Process_ReadMemory(this.bot.Handle, pQuiz_Question, 4), 0);
            if (baseAddress != 0)
            {
                string section = Hacking.Process_ReadStringFromMemory(this.bot.Handle, baseAddress, false);
                if (section != this.LastQuestion)
                {
                    this.IniFile.IniWriteValue(section, "Question Type", "Love Match");
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_YourAnswer.Text = this.IniFile.IniReadValue(section, "Your Answer");
                    this.output_PartnerAnswer.Text = this.IniFile.IniReadValue(section, "Partner Answer");
                }
                Thread.Sleep(100);
            }
        }
    }
}
Warning of Wisdom:
Code:
public class Warning : Form
{
    // Fields
    private Thread AnswerThread;
    private QuizHelper.QuizHelper.ProcData bot;
    private IContainer components;
    private IniFile IniFile = new IniFile(Application.StartupPath + @"\Warning of Wisdom.ini");
    private Label label_Answer;
    private Label label_Question;
    public string LastQuestion;
    private QuizHelper.QuizHelper masterWindow;
    private Label output_Answer;
    private Label output_Question;
    public static int pQuiz_Question = 0x13c1a1c;

    // Methods
    public Warning(QuizHelper.QuizHelper frm1)
    {
        this.InitializeComponent();
        this.masterWindow = frm1;
        if (this.masterWindow.lstbx_CharNames.SelectedItems.Count > 0)
        {
            foreach (QuizHelper.QuizHelper.ProcData data in this.masterWindow.botSessions)
            {
                if (data.Name == this.masterWindow.lstbx_CharNames.SelectedItem.ToString())
                {
                    this.bot = data;
                }
            }
        }
        else
        {
            return;
        }
        this.AnswerThread = new Thread(new ThreadStart(this.Thread_Answers));
        this.AnswerThread.Start();
    }

    protected override void Dispose(bool disposing)
    {
        this.AnswerThread.Abort();
        this.masterWindow.WarningWindow = null;
        if (disposing && (this.components != null))
        {
            this.components.Dispose();
        }
        base.Dispose(disposing);
    }

    private void InitializeComponent()
    {
        ComponentResourceManager manager = new ComponentResourceManager(typeof(Warning));
        this.label_Question = new Label();
        this.output_Question = new Label();
        this.label_Answer = new Label();
        this.output_Answer = new Label();
        base.SuspendLayout();
        this.label_Question.AutoSize = true;
        this.label_Question.Location = new Point(13, 13);
        this.label_Question.Name = "label_Question";
        this.label_Question.Size = new Size(0x31, 13);
        this.label_Question.TabIndex = 0;
        this.label_Question.Text = "Question";
        this.output_Question.AutoSize = true;
        this.output_Question.Font = new Font("Microsoft Sans Serif", 16f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_Question.Location = new Point(0x1a, 30);
        this.output_Question.Name = "output_Question";
        this.output_Question.Size = new Size(0xb1, 0x1a);
        this.output_Question.TabIndex = 1;
        this.output_Question.Text = "Current Question";
        this.label_Answer.AutoSize = true;
        this.label_Answer.Location = new Point(0x10, 60);
        this.label_Answer.Name = "label_Answer";
        this.label_Answer.Size = new Size(0x2d, 13);
        this.label_Answer.TabIndex = 2;
        this.label_Answer.Text = "Answer:";
        this.output_Answer.AutoSize = true;
        this.output_Answer.Font = new Font("Microsoft Sans Serif", 16f, FontStyle.Regular, GraphicsUnit.Point, 0);
        this.output_Answer.Location = new Point(0x1f, 0x4d);
        this.output_Answer.Name = "output_Answer";
        this.output_Answer.Size = new Size(0xa3, 0x1a);
        this.output_Answer.TabIndex = 3;
        this.output_Answer.Text = "Current Answer";
        base.AutoScaleDimensions = new SizeF(6f, 13f);
        base.AutoScaleMode = AutoScaleMode.Font;
        base.ClientSize = new Size(0x203, 0x73);
        base.Controls.Add(this.output_Answer);
        base.Controls.Add(this.label_Answer);
        base.Controls.Add(this.output_Question);
        base.Controls.Add(this.label_Question);
        base.FormBorderStyle = FormBorderStyle.FixedToolWindow;
        base.Icon = (Icon) manager.GetObject("$this.Icon");
        base.MaximizeBox = false;
        this.MaximumSize = new Size(0x209, 0x8b);
        base.MinimizeBox = false;
        this.MinimumSize = new Size(0x209, 0x8b);
        base.Name = "Warning";
        base.ShowInTaskbar = false;
        base.SizeGripStyle = SizeGripStyle.Hide;
        this.Text = "Warning of Wisdom Guide";
        base.TopMost = true;
        base.ResumeLayout(false);
        base.PerformLayout();
    }

    public void Thread_Answers()
    {
        while (true)
        {
            int baseAddress = BitConverter.ToInt32(Hacking.Process_ReadMemory(this.bot.Handle, pQuiz_Question, 4), 0);
            if (baseAddress != 0)
            {
                string section = Hacking.Process_ReadStringFromMemory(this.bot.Handle, baseAddress, false);
                if (section.Contains("Which incorrectly describes Starword [Silence]?"))
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = "Silence Resistance +2%";
                }
                else if (section.Contains("Which is the league name in [Ancient Ruins]?"))
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = "Gramr (or Chaosflame)";
                }
                else if (section.Contains("How many sources are there in [Ancient Ruins]?"))
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = "3";
                }
                else if (section.Contains("The level requirement for [Ancient Ruins] is ( )?"))
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = "45";
                }
                else if (section != this.LastQuestion)
                {
                    this.output_Question.Text = section;
                    this.LastQuestion = section;
                    this.output_Answer.Text = this.IniFile.IniReadValue(section, "Answer");
                    this.IniFile.IniWriteValue(section, "Answer", this.output_Answer.Text);
                }
                Thread.Sleep(100);
            }
        }
    }
}
Quiz Helper Main Program:
Code:
public class QuizHelper : Form
{
    // Fields
    public string AppPath = Application.StartupPath;
    public Process[] BIO_Proccesses;
    public BOIQuiz BOIQuizWindow;
    public List<ProcData> botSessions = new List<ProcData>();
    public Button btn_Bot_RefreshCharList;
    private Button btn_BQ_Launch;
    private Button btn_LM_Launch;
    private Button btn_WoW_Launch;
    public string charlist_PreviousSelected = "";
    private IContainer components;
    public Button DeleteLog;
    public Label EditingLabel;
    public Label label1;
    public LoveMatchCompanion LoveMatchWindow;
    public ListBox lstbx_CharNames;
    public Button OutputFill;
    public static int pCharacter_Name = 0xef7bbc;
    public int UniIDCount;
    public Warning WarningWindow;

    // Methods
    public QuizHelper()
    {
        this.InitializeComponent();
    }

    private void btn_Bot_RefreshCharList_Click(object sender, EventArgs e)
    {
        this.Form_Load_CharList();
    }

    private void btn_BQ_Launch_Click(object sender, EventArgs e)
    {
        this.ShowBOIQuiz();
    }

    private void btn_LM_Launch_Click(object sender, EventArgs e)
    {
        this.ShowLoveMatch();
    }

    private void btn_WoW_Launch_Click(object sender, EventArgs e)
    {
        this.ShowWarning();
    }

    protected override void Dispose(bool disposing)
    {
        if (this.LoveMatchWindow != null)
        {
            this.LoveMatchWindow.Close();
        }
        if (this.BOIQuizWindow != null)
        {
            this.BOIQuizWindow.Close();
        }
        if (this.WarningWindow != null)
        {
            this.WarningWindow.Close();
        }
        if (disposing && (this.components != null))
        {
            this.components.Dispose();
        }
        base.Dispose(disposing);
    }

    public bool FileExists(string file)
    {
        return File.Exists(file);
    }

    public void Form_Load_CharList()
    {
        this.lstbx_CharNames.Items.Clear();
        this.BIO_Proccesses = Process.GetProcessesByName("game");
        for (int i = 0; i < this.BIO_Proccesses.Length; i++)
        {
            if (!this.BIO_Proccesses[i].MainWindowTitle.Contains("Immortals"))
            {
                continue;
            }
            IntPtr hProcess = Hacking.OpenProcess(Hacking.ProcessAccessFlags.VMWrite | Hacking.ProcessAccessFlags.VMRead | Hacking.ProcessAccessFlags.VMOperation, true, this.BIO_Proccesses[i].Id);
            string item = Hacking.Process_ReadStringFromMemory(hProcess, pCharacter_Name, false);
            if (item != "")
            {
                bool flag = false;
                foreach (ProcData data in this.botSessions)
                {
                    if (data.Name == item)
                    {
                        flag = true;
                        break;
                    }
                }
                if (!flag)
                {
                    ProcData data2 = new ProcData {
                        Process = this.BIO_Proccesses[i],
                        Handle = hProcess,
                        Name = item
                    };
                    this.botSessions.Add(data2);
                }
                this.lstbx_CharNames.Items.Add(item);
            }
        }
    }

    private void InitializeComponent()
    {
        ComponentResourceManager manager = new ComponentResourceManager(typeof(QuizHelper.QuizHelper));
        this.label1 = new Label();
        this.btn_Bot_RefreshCharList = new Button();
        this.lstbx_CharNames = new ListBox();
        this.EditingLabel = new Label();
        this.DeleteLog = new Button();
        this.btn_WoW_Launch = new Button();
        this.btn_BQ_Launch = new Button();
        this.btn_LM_Launch = new Button();
        base.SuspendLayout();
        this.label1.AutoSize = true;
        this.label1.ImeMode = ImeMode.NoControl;
        this.label1.Location = new Point(0x13, 8);
        this.label1.Name = "label1";
        this.label1.Size = new Size(90, 13);
        this.label1.TabIndex = 0;
        this.label1.Text = "Current Character";
        this.btn_Bot_RefreshCharList.ImeMode = ImeMode.NoControl;
        this.btn_Bot_RefreshCharList.Location = new Point(2, 0x9f);
        this.btn_Bot_RefreshCharList.Name = "btn_Bot_RefreshCharList";
        this.btn_Bot_RefreshCharList.Size = new Size(0x7a, 0x17);
        this.btn_Bot_RefreshCharList.TabIndex = 3;
        this.btn_Bot_RefreshCharList.Text = "Refresh List";
        this.btn_Bot_RefreshCharList.UseVisualStyleBackColor = true;
        this.btn_Bot_RefreshCharList.Click += new EventHandler(this.btn_Bot_RefreshCharList_Click);
        this.lstbx_CharNames.FormattingEnabled = true;
        this.lstbx_CharNames.Location = new Point(4, 0x31);
        this.lstbx_CharNames.Name = "lstbx_CharNames";
        this.lstbx_CharNames.RightToLeft = RightToLeft.No;
        this.lstbx_CharNames.Size = new Size(120, 0x6c);
        this.lstbx_CharNames.TabIndex = 5;
        this.lstbx_CharNames.SelectedIndexChanged += new EventHandler(this.lstbx_CharNames_SelectedIndexChanged);
        this.EditingLabel.Font = new Font("Arial", 11.25f, FontStyle.Bold);
        this.EditingLabel.ForeColor = Color.FromArgb(0xc0, 0, 0);
        this.EditingLabel.ImeMode = ImeMode.NoControl;
        this.EditingLabel.Location = new Point(6, 0x17);
        this.EditingLabel.Name = "EditingLabel";
        this.EditingLabel.Size = new Size(0x76, 0x18);
        this.EditingLabel.TabIndex = 11;
        this.EditingLabel.TextAlign = ContentAlignment.MiddleCenter;
        this.DeleteLog.Location = new Point(0, 0);
        this.DeleteLog.Name = "DeleteLog";
        this.DeleteLog.Size = new Size(0x4b, 0x17);
        this.DeleteLog.TabIndex = 80;
        this.btn_WoW_Launch.Location = new Point(0x83, 0x31);
        this.btn_WoW_Launch.Name = "btn_WoW_Launch";
        this.btn_WoW_Launch.Size = new Size(110, 0x17);
        this.btn_WoW_Launch.TabIndex = 0x5c;
        this.btn_WoW_Launch.Text = "Warning of Wisdom";
        this.btn_WoW_Launch.UseVisualStyleBackColor = true;
        this.btn_WoW_Launch.Click += new EventHandler(this.btn_WoW_Launch_Click);
        this.btn_BQ_Launch.Location = new Point(0x83, 0x85);
        this.btn_BQ_Launch.Name = "btn_BQ_Launch";
        this.btn_BQ_Launch.Size = new Size(110, 0x17);
        this.btn_BQ_Launch.TabIndex = 0x5d;
        this.btn_BQ_Launch.Text = "BoI Quiz";
        this.btn_BQ_Launch.UseVisualStyleBackColor = true;
        this.btn_BQ_Launch.Click += new EventHandler(this.btn_BQ_Launch_Click);
        this.btn_LM_Launch.Location = new Point(0x83, 90);
        this.btn_LM_Launch.Name = "btn_LM_Launch";
        this.btn_LM_Launch.Size = new Size(110, 0x17);
        this.btn_LM_Launch.TabIndex = 0x5e;
        this.btn_LM_Launch.Text = "Love Match";
        this.btn_LM_Launch.UseVisualStyleBackColor = true;
        this.btn_LM_Launch.Click += new EventHandler(this.btn_LM_Launch_Click);
        base.AutoScaleDimensions = new SizeF(6f, 13f);
        base.AutoScaleMode = AutoScaleMode.Font;
        base.ClientSize = new Size(0xfb, 0xc1);
        base.Controls.Add(this.btn_LM_Launch);
        base.Controls.Add(this.btn_BQ_Launch);
        base.Controls.Add(this.btn_WoW_Launch);
        base.Controls.Add(this.EditingLabel);
        base.Controls.Add(this.lstbx_CharNames);
        base.Controls.Add(this.btn_Bot_RefreshCharList);
        base.Controls.Add(this.label1);
        base.FormBorderStyle = FormBorderStyle.FixedToolWindow;
        base.Icon = (Icon) manager.GetObject("$this.Icon");
        base.MaximizeBox = false;
        this.MaximumSize = new Size(0x101, 0xd9);
        base.MinimizeBox = false;
        this.MinimumSize = new Size(0x101, 0xd9);
        base.Name = "QuizHelper";
        base.SizeGripStyle = SizeGripStyle.Hide;
        base.StartPosition = FormStartPosition.WindowsDefaultBounds;
        this.Text = "Quiz Helper";
        base.TopMost = true;
        base.Load += new EventHandler(this.QuizBot_Load);
        base.ResumeLayout(false);
        base.PerformLayout();
    }

    public void lstbx_CharNames_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (this.lstbx_CharNames.SelectedItems.Count > 0)
        {
            this.EditingLabel.Text = this.lstbx_CharNames.SelectedItem.ToString();
            if (this.LoveMatchWindow != null)
            {
                this.LoveMatchWindow.Close();
            }
            if (this.BOIQuizWindow != null)
            {
                this.BOIQuizWindow.Close();
            }
            if (this.WarningWindow != null)
            {
                this.WarningWindow.Close();
            }
            this.charlist_PreviousSelected = this.lstbx_CharNames.SelectedItem.ToString();
        }
    }

    public void QuizBot_Load(object sender, EventArgs e)
    {
        this.Form_Load_CharList();
    }

    public void ShowBOIQuiz()
    {
        if (this.BOIQuizWindow != null)
        {
            this.BOIQuizWindow.Activate();
        }
        else
        {
            if (this.lstbx_CharNames.SelectedItems.Count == 0)
            {
                if (this.lstbx_CharNames.Items.Count <= 0)
                {
                    return;
                }
                this.lstbx_CharNames.SetSelected(0, true);
            }
            this.BOIQuizWindow = new BOIQuiz(this);
            this.BOIQuizWindow.Show();
        }
    }

    public void ShowLoveMatch()
    {
        if (this.LoveMatchWindow != null)
        {
            this.LoveMatchWindow.Activate();
        }
        else if (this.lstbx_CharNames.SelectedItems.Count != 0)
        {
            this.LoveMatchWindow = new LoveMatchCompanion(this);
            this.LoveMatchWindow.Show();
        }
    }

    public void ShowWarning()
    {
        if (this.WarningWindow != null)
        {
            this.WarningWindow.Activate();
        }
        else
        {
            if (this.lstbx_CharNames.SelectedItems.Count == 0)
            {
                if (this.lstbx_CharNames.Items.Count <= 0)
                {
                    return;
                }
                this.lstbx_CharNames.SetSelected(0, true);
            }
            this.WarningWindow = new Warning(this);
            this.WarningWindow.Show();
        }
    }

    // Nested Types
    [StructLayout(LayoutKind.Sequential)]
    public struct ProcData
    {
        public Process Process;
        public IntPtr Handle;
        public string Name;
    }
}

We need to change 3 lines of code for LM and WW to work.. that is excluding BOI Quiz, if I were to add BOI Quiz, it would take an additional of 7 lines of codes to work.. for now lets talk about those 3 lines of code :)

First one is in the Quiz Helper Main Program code line 15 which is this code:
Code:
public static int pCharacter_Name = 0xef7bbc;
When you first run the program, you will notice the box at the left supposedly containing the characters names are empty, that is because the memory address(see code above) for the character name is wrong.

Second one is for the Love Match to work, located in the Love Match source code at line 15 also:
Code:
public static int pQuiz_Question = 0x13d7b78;
Third one is for the Warning of Wisdom to work, located in the Warning of Wisdom source code at line 14:
Code:
public static int pQuiz_Question = 0x13c1a1c;
Now, the next problem is how do we find the right memory address? Well, that's also my problem :D I'm stuck in this process also.. This is where reverse engineering comes to play, a good tool to reverse engineer is Ollydbg ofcourse.. Once you find the right memory address, edit the source code and compile it..

I'll be posting more soon, so everyone is welcome to help me in updating this program :)
No, I am not back. No I won't likely write any code for BoI again. I just don't have the time for it currently.

@dlnqt: What you want is a program called Cheat Engine.

Using this, go through its short tuturial real quick and learn how to attach to a process, and to search for a string.

Then load up BoI and find your character's name (easiest thing you can do). Once you search for that, swap to another character and check if the value you found changes appropriately. That indicates you actually found it (as a hint that I learned far later, green fields are static addresses, you ALWAYS want a static if available). As I recall, you will get 3 static fields for the name, you can use any of them you want.

Now for the other 2 values, you just have to go and start Love Match or Warning of Wisdom (start on WoW since that one has no timer). Search for the text in the question itself and you'll get very few results. Note that none is green. That means you need what is called a pointer.

Now you run a pointer scan (they tell you about this in the tutorial, but it is slightly confusing to watch, and easy to do). Find a pointer for the address with the quiz question and advance through a few questions to see that it updates properly.


To verify that your pointer is valid, you want to close BoI completely, and start it back up, go start WoW with another character (or on another day) and see if the questions show up at the addresses you found previously (Cheat Engine displays them for you).


That is all you need to get the Quiz Guru up and running for LM and WoW. Once you understand Cheat Engine, the rest takes less than an hour easily.