Quote:
anyways why is Inathero is here?this is not his Bot thing..tsk tsk..im just confuse..
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...Quote:
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.Quote:
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.
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);
}
}
}
}
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);
}
}
}
}
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;
}
}
public static int pCharacter_Name = 0xef7bbc;
public static int pQuiz_Question = 0x13d7b78;
public static int pQuiz_Question = 0x13c1a1c;
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 firstQuote:
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:
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.Code:public static int pCharacter_Name = 0xef7bbc;
Second one is for the Love Match to work, located in the Love Match source code at line 15 also:
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 = 0x13d7b78;
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..Code:public static int pQuiz_Question = 0x13c1a1c;
I'll be posting more soon, so everyone is welcome to help me in updating this program :)
hmmm, i must be doing something wrong with strongOD then.Quote:
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 :)
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.Quote:
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:
Warning of Wisdom: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); } } } }
Quiz Helper Main Program: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); } } } }
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:
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.Code:public static int pCharacter_Name = 0xef7bbc;
Second one is for the Love Match to work, located in the Love Match source code at line 15 also:
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 = 0x13d7b78;
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..Code:public static int pQuiz_Question = 0x13c1a1c;
I'll be posting more soon, so everyone is welcome to help me in updating this program :)