<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title><![CDATA[GameKiller - Bringing The Pain To Each And Every Game - Tutorials & Guides]]></title>
		<link>http://www.gamekiller.net/</link>
		<description>Learn from some of the greatest hackers on the net and check out the Tutorials and Guides they have posted. Feel free to share your contributions.</description>
		<language>en</language>
		<lastBuildDate>Thu, 23 May 2013 05:55:17 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>http://www.gamekiller.net/images/gamekiller/misc/rss.png</url>
			<title><![CDATA[GameKiller - Bringing The Pain To Each And Every Game - Tutorials & Guides]]></title>
			<link>http://www.gamekiller.net/</link>
		</image>
		<item>
			<title><![CDATA[C++ |  How to write a "Multi-Key Sending" Bot! | Written By Kernel]]></title>
			<link>http://www.gamekiller.net/tutorials-guides/3190915-c-how-write-multi-key-sending-bot-written-kernel.html</link>
			<pubDate>Mon, 20 May 2013 15:34:55 GMT</pubDate>
			<description>Hello World, my name is Kernel and I am back with another awesome tutorial. In this tutorial, we...</description>
			<content:encoded><![CDATA[<!-- BEGIN TEMPLATE: postbit_external -->
<div><!-- google_ad_section_start -->Hello World, my name is Kernel and I am back with another awesome tutorial. In this tutorial, we shall hopefully learn how to write a basic bot that can that can send one key after another - on a single thread, which is called, &quot;Multi-Key Sending Bot&quot;. Before we begin, I would like to ask for some PayPal donations. My goal is at least $120.00. The reason why I am seeking some PayPal donation is because, I am trying to launch a website for people to learn how to write their own game trainers, bots, tools, and etc, in different computer languages, such as C++ and C#. So, if you are interested in doing so, please click <a href="https://www.paypal.com/us/cgi-bin/webscr?cmd=_flow&amp;SESSION=2tF_hbQpWPmSy3_JeQiPVqdBtICC52NQykWAUJVYHuw2enQnhhfNBkh3LKq&amp;dispatch=5885d80a13c0db1f8e263663d3faee8d14f86393d55a810282b64afed84968ec" target="_blank" rel="nofollow">this</a> link (my PayPal email is <a href="mailto:Kernel.Win@aol.com">Kernel.Win@aol.com</a>). Thanks in advance!<br />
<br />
Lets continue. Again, the Multi-Key Sending Bot only operates on a single thread and it can send multiple keys at different time. However, it can't send all keys or a set of keys at the same time, it simply can not. Instead, it sends on key after another.<br />
<br />
Now, I've wrote a Multi-Key Sending Bot straight off of Notepad++ (sorry, I don't have any C++ compiler installed on my temporary computer...). Which means, I could have some errors or typos within my codes. So keep that in your mind. If you've spot anything wrong, please let me know. Thanks.<br />
<br />
I might be over complicating stuff, so feel free to give me some advice and suggestions, go ahead and write a review. Also, I will write a short documentation on these codes and I will explain how it works. Anyways, here you go (remember, I wrote in Notepad++ - such an awesome tool).<br />
<br />
MultiKeySender.h<br />
<!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">#ifndef KERNELS_MULTIKEYSENDER_H<br />
#define KERNELS_MULTIKEYSENDER_H<br />
<br />
<br />
// Written by Kernel.Win@AOL.com for educational purposes!<br />
<br />
<br />
#define MKS_VERSION&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1<br />
<br />
<br />
#define MKS_ESTAT_ENABLED&nbsp; &nbsp; &nbsp; &nbsp; 0<br />
#define MKS_ESTAT_DISABLED&nbsp; &nbsp; &nbsp;  1<br />
<br />
<br />
#include &lt;windows.h&gt;<br />
#include &lt;vector&gt;<br />
<br />
<br />
class MultiKeySender<br />
{<br />
&nbsp; &nbsp; //////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&nbsp; &nbsp; //@ Here are some class members.<br />
<br />
<br />
&nbsp; &nbsp; //# This is the structure of an element, which are the data of the keys that will be sent.<br />
&nbsp; &nbsp; struct ELEMENT<br />
&nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; UINT&nbsp; &nbsp; &nbsp; &nbsp; ID;<br />
&nbsp; &nbsp; &nbsp; &nbsp; UINT&nbsp; &nbsp; &nbsp; &nbsp; VKeyCode;<br />
&nbsp; &nbsp; &nbsp; &nbsp; UINT&nbsp; &nbsp; &nbsp; &nbsp; Hit;<br />
&nbsp; &nbsp; &nbsp; &nbsp; UINT&nbsp; &nbsp; &nbsp; &nbsp; Stat;<br />
&nbsp; &nbsp; };<br />
<br />
<br />
&nbsp; &nbsp; HWND m_WndHandle;<br />
&nbsp; &nbsp; std::vector&lt; ELEMENT &gt; m_Elements;<br />
<br />
<br />
&nbsp; &nbsp; bool m_Enabled;<br />
&nbsp; &nbsp; UINT m_CurElementIndex;<br />
&nbsp; &nbsp; UINT m_CurElementID;<br />
&nbsp; &nbsp; UINT m_CycleCounter;<br />
&nbsp; &nbsp; UINT m_TickCounter;<br />
<br />
<br />
&nbsp; &nbsp; HANDLE m_ThreadHandle;<br />
&nbsp; &nbsp; static DWORD WINAPI Thread( LPVOID Param );<br />
<br />
<br />
public:<br />
&nbsp; &nbsp; //////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&nbsp; &nbsp; //@ Class constructor(s) and a class destructor.<br />
<br />
<br />
&nbsp; &nbsp; MultiKeySender( HWND in_WndHandle, const bool in_opt_Enabled = false );<br />
&nbsp; &nbsp; ~MultiKeySender();<br />
<br />
<br />
<br />
<br />
public:<br />
&nbsp; &nbsp; DWORD Enabled( bool in_Enabled );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool IsEnabled();<br />
<br />
<br />
public:<br />
&nbsp; &nbsp; //////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&nbsp; &nbsp; //@ These functions can either add a new element or remove an existing element from m_Elements.<br />
<br />
<br />
&nbsp; &nbsp; bool AddElement( UINT in_ID, UINT in_VKeyCode, UINT in_Hit, UINT in_opt_Stat = 0 );<br />
<br />
<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool RemoveElementByIX( const UINT in_Index );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool RemoveElementByID( const UINT in_ID );<br />
<br />
<br />
public:<br />
&nbsp; &nbsp; //////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&nbsp; &nbsp; //@ Here are some functions that are designed to set the values of all or some members of an element<br />
&nbsp; &nbsp; //&nbsp; within m_Elements.<br />
<br />
<br />
&nbsp; &nbsp; //# Set by Index.<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool SetElementByIX( const UINT in_Index, UINT in_VKeyCode, UINT in_Hit, UINT in_opt_Stat = 0 );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; BOOL SetElementIDByIX( const UINT in_Index, UINT in_NewID );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool SetElementVKeyCodeByIX( const UINT in_Index, UINT in_VKeyCode );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool SetElementHitByIX( const UINT in_Index, UINT in_Hit );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; BOOL SetElementStatByIX( const UINT in_Index, UINT in_Stat );<br />
<br />
<br />
&nbsp; &nbsp; //# Set by ID.<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool SetElementByID( const UINT in_ID, UINT in_VKeyCode, UINT in_Hit, UINT in_opt_Stat = 0 );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; BOOL SetElementIDByID( const UINT in_ID, UINT in_NewID );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool SetElementVKeyCodeByID( const UINT in_ID, UINT in_VKeyCode );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool SetElementHitByID( const UINT in_ID, UINT in_Hit );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; BOOL SetElementStatByID( const UINT in_ID, UINT in_Stat );<br />
<br />
<br />
<br />
<br />
public:<br />
&nbsp; &nbsp; //////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&nbsp; &nbsp; //@ These functions are created for the purpose of getting some members of an element within m_Elements.<br />
<br />
<br />
&nbsp; &nbsp; //# Get by Index.<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool GetElementIDByIX( const UINT in_Index, UINT &amp;out_ID );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool GetElementVKeyCodeByIX( const UINT in_Index, UINT &amp;out_VKeyCode );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool GetElementHitByIX( const UINT in_Index, UINT &amp;out_Hit );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool GetElementStatByIX( const UINT in_Index, UINT &amp;out_Stat );<br />
<br />
<br />
&nbsp; &nbsp; //# Get by ID.<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool GetElementIDByID( const UINT in_ID, UINT &amp;out_ID );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool GetElementVKeyCodeByID( const UINT in_ID, UINT &amp;out_VKeyCode );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool GetElementHitByID( const UINT in_ID, UINT &amp;out_Hit );<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; bool GetElementStatByID( const UINT in_ID, UINT &amp;out_Stat );<br />
<br />
<br />
public:<br />
&nbsp; &nbsp; //////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&nbsp; &nbsp; //@ These functions are written to get the values of some members or members of an object within this class.<br />
<br />
<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; UINT GetCurElementIX();<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; UINT GetCurElementID();<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; UINT GetCycleCount();<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; UINT GetTickCount();<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; UINT GetSize();<br />
<br />
<br />
public:<br />
&nbsp; &nbsp; //////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&nbsp; &nbsp; //@ More functions.<br />
<br />
<br />
&nbsp; &nbsp; bool GetElementIXByID( const UINT in_ID, UINT &amp;out_Index );<br />
&nbsp; &nbsp; bool IsElementIDUnique( UINT in_ID );<br />
&nbsp; &nbsp; UINT FindUniqueElementID();<br />
&nbsp; &nbsp; inline&nbsp; &nbsp; BOOL SendKey( UINT in_VKeyCode );<br />
<br />
<br />
public:<br />
&nbsp; &nbsp; inline&nbsp; void Clear();<br />
};<br />
<br />
<br />
bool MultiKeySender::IsEnabled() { return this-&gt;m_Enabled; };<br />
<br />
<br />
bool MultiKeySender::RemoveElementByIX( const UINT in_Index ) {<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
<br />
<br />
&nbsp; &nbsp; this-&gt;m_Elements.erase( this-&gt;m_Elements.begin() + in_Index );<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
bool MultiKeySender::RemoveElementByID( const UINT in_ID ) {<br />
&nbsp; &nbsp; UINT IX = 0;<br />
&nbsp; &nbsp; this-&gt;GetElementIXByID( in_ID, IX );<br />
&nbsp; &nbsp; return this-&gt;RemoveElementByIX( IX );<br />
};<br />
<br />
<br />
bool MultiKeySender::SetElementByIX( const UINT in_Index, UINT in_VKeyCode, UINT in_Hit, UINT in_opt_Stat )<br />
{<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
<br />
<br />
&nbsp; &nbsp; this-&gt;m_Elements[ in_Index ].VKeyCode = in_VKeyCode;<br />
&nbsp; &nbsp; this-&gt;m_Elements[ in_Index ].Hit = in_Hit;<br />
&nbsp; &nbsp; this-&gt;m_Elements[ in_Index ].Stat = in_opt_Stat;<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
BOOL MultiKeySender::SetElementIDByIX( const UINT in_Index, UINT in_NewID ) {<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return FALSE;<br />
<br />
<br />
&nbsp; &nbsp; UINT T = NULL;<br />
&nbsp; &nbsp; if( this-&gt;GetElementIXByID( in_NewID, T ) )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return -1;<br />
<br />
<br />
&nbsp; &nbsp; this-&gt;m_Elements[ in_Index ].ID = in_NewID;<br />
&nbsp; &nbsp; return TRUE;<br />
};<br />
<br />
<br />
<br />
<br />
bool MultiKeySender::SetElementVKeyCodeByIX( const UINT in_Index, UINT in_VKeyCode ) {<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
<br />
<br />
&nbsp; &nbsp; this-&gt;m_Elements[ in_Index ].ID = in_VKeyCode;<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
bool MultiKeySender::SetElementHitByIX( const UINT in_Index, UINT in_Hit ) {<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
<br />
<br />
&nbsp; &nbsp; this-&gt;m_Elements[ in_Index ].ID = in_Hit;<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
BOOL MultiKeySender::SetElementStatByIX( const UINT in_Index, UINT in_Stat ) {<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
<br />
<br />
&nbsp; &nbsp; this-&gt;m_Elements[ in_Index ].ID = in_Stat;<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
bool MultiKeySender::SetElementByID( const UINT in_ID, UINT in_VKeyCode, UINT in_Hit, UINT in_opt_Stat ) {<br />
&nbsp; &nbsp; UINT IX = 0;<br />
&nbsp; &nbsp; this-&gt;GetElementIXByID( in_ID, IX );<br />
&nbsp; &nbsp; return this-&gt;SetElementByIX( IX, in_VKeyCode, in_Hit, in_opt_Stat );<br />
};<br />
<br />
<br />
BOOL MultiKeySender::SetElementIDByID( const UINT in_ID, UINT in_NewID ) {<br />
&nbsp; &nbsp; UINT IX = 0;<br />
&nbsp; &nbsp; this-&gt;GetElementIXByID( in_ID, IX );<br />
&nbsp; &nbsp; return this-&gt;SetElementIDByIX( IX, in_NewID );<br />
};<br />
<br />
<br />
bool MultiKeySender::SetElementVKeyCodeByID( const UINT in_ID, UINT in_VKeyCode ) {<br />
&nbsp; &nbsp; UINT IX = 0;<br />
&nbsp; &nbsp; this-&gt;GetElementIXByID( in_ID, IX );<br />
&nbsp; &nbsp; return this-&gt;SetElementVKeyCodeByIX( IX, in_VKeyCode );<br />
};<br />
<br />
<br />
bool MultiKeySender::SetElementHitByID( const UINT in_ID, UINT in_Hit ) {<br />
&nbsp; &nbsp; UINT IX = 0;<br />
&nbsp; &nbsp; this-&gt;GetElementIXByID( in_ID, IX );<br />
&nbsp; &nbsp; return this-&gt;SetElementHitByIX( IX, in_Hit );<br />
};<br />
<br />
<br />
bool MultiKeySender::GetElementIDByIX( const UINT in_Index, UINT &amp;out_ID ) {<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
<br />
<br />
&nbsp; &nbsp; out_ID = this-&gt;m_Elements[ in_Index ].ID;<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
bool MultiKeySender::GetElementVKeyCodeByIX( const UINT in_Index, UINT &amp;out_VKeyCode ) {<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
<br />
<br />
&nbsp; &nbsp; out_VKeyCode = this-&gt;m_Elements[ in_Index ].VKeyCode;<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
bool MultiKeySender::GetElementHitByIX( const UINT in_Index, UINT &amp;out_Hit ) {<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
<br />
<br />
&nbsp; &nbsp; out_Hit = this-&gt;m_Elements[ in_Index ].Hit;<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
bool MultiKeySender::GetElementStatByIX( const UINT in_Index, UINT &amp;out_Stat ) {<br />
&nbsp; &nbsp; if( in_Index &gt; this-&gt;m_Elements.size() - 1 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
<br />
<br />
&nbsp; &nbsp; out_Stat = this-&gt;m_Elements[ in_Index ].Stat;<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
bool MultiKeySender::GetElementIDByID( const UINT in_ID, UINT &amp;out_ID ) {<br />
&nbsp; &nbsp; UINT IX = 0;<br />
&nbsp; &nbsp; this-&gt;GetElementIXByID( in_ID, IX );<br />
&nbsp; &nbsp; return this-&gt;GetElementIDByIX( IX, out_ID );<br />
};<br />
<br />
<br />
bool MultiKeySender::GetElementVKeyCodeByID( const UINT in_ID, UINT &amp;out_VKeyCode ) {<br />
&nbsp; &nbsp; UINT IX = 0;<br />
&nbsp; &nbsp; this-&gt;GetElementIXByID( in_ID, IX );<br />
&nbsp; &nbsp; return this-&gt;GetElementVKeyCodeByIX( IX, out_VKeyCode );<br />
};<br />
<br />
<br />
bool MultiKeySender::GetElementHitByID( const UINT in_ID, UINT &amp;out_Hit ) {<br />
&nbsp; &nbsp; UINT IX = 0;<br />
&nbsp; &nbsp; this-&gt;GetElementIXByID( in_ID, IX );<br />
&nbsp; &nbsp; return this-&gt;GetElementHitByIX( IX, out_Hit );<br />
};<br />
<br />
<br />
bool MultiKeySender::GetElementStatByID( const UINT in_ID, UINT &amp;out_Stat ) {<br />
&nbsp; &nbsp; UINT IX = 0;<br />
&nbsp; &nbsp; this-&gt;GetElementIXByID( in_ID, IX );<br />
&nbsp; &nbsp; return this-&gt;GetElementStatByIX( IX, out_Stat );<br />
};<br />
<br />
<br />
UINT MultiKeySender::GetCurElementIX() { return this-&gt;m_CurElementIndex; };<br />
<br />
<br />
UINT MultiKeySender::GetCurElementID() { return this-&gt;m_CurElementID; };<br />
<br />
<br />
UINT MultiKeySender::GetCycleCount() { return this-&gt;m_CycleCounter; };<br />
<br />
<br />
UINT MultiKeySender::GetTickCount() {&nbsp; return this-&gt;m_TickCounter; };<br />
<br />
<br />
UINT MultiKeySender::GetSize() { return this-&gt;m_Elements.size(); };<br />
<br />
<br />
BOOL MultiKeySender::SendKey( UINT in_VKeyCode ) {<br />
&nbsp; &nbsp; return PostMessage( this-&gt;m_WndHandle, WM_KEYDOWN, in_VKeyCode, MapVirtualKey( in_VKeyCode, 0 ) &lt;&lt; 16 );<br />
};<br />
<br />
<br />
void MultiKeySender::Clear() { this-&gt;m_Elements.clear(); };<br />
<br />
<br />
#endif // ! KERNELS_MULTIKEYSENDER_H</code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable -->MultiKeySender.cpp<br />
<!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">#include &quot;stdafx.h&quot;<br />
<br />
<br />
#include &quot;MultiKeySender.h&quot;<br />
#include &lt;limits.h&gt;<br />
<br />
<br />
/**<br />
This is the constructor of class MultiKeySender. It initializes class members<br />
and creates a thread for one of its function, which is class function:<br />
DWORD WINAPI MultiKeySender::Thread( LPVOID Param ); If it fails to create the<br />
thread, it will show a message box to notify the user that it failed to<br />
create the thread.<br />
*/<br />
MultiKeySender::MultiKeySender( HWND in_WndHandle, const bool in_opt_Enabled )<br />
&nbsp; &nbsp; : m_WndHandle( in_WndHandle )<br />
&nbsp; &nbsp; , m_Enabled( false )<br />
&nbsp; &nbsp; , m_CurElementIndex( 0 )<br />
&nbsp; &nbsp; , m_CurElementID( 0 )<br />
&nbsp; &nbsp; , m_CycleCounter( 0 )<br />
&nbsp; &nbsp; , m_TickCounter( 0 )<br />
{<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Attempt to create a thread.<br />
&nbsp; &nbsp; this-&gt;m_ThreadHandle = CreateThread( NULL , 0, Thread, ( LPVOID )this, 0, NULL );<br />
&nbsp; &nbsp; if( this-&gt;m_ThreadHandle != NULL ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // If this constructor's last parameter is set to true, we shall set one of the class<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // member to true, which is m_Enabled.<br />
&nbsp; &nbsp; &nbsp; &nbsp; ( in_opt_Enabled == true ) ? this-&gt;m_Enabled = true : SuspendThread( this-&gt;m_ThreadHandle );<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Failed.<br />
&nbsp; &nbsp; &nbsp; &nbsp; MessageBox( NULL, TEXT( &quot;MultiKeySender(...) failed!&quot; ), TEXT( &quot;Error&quot; ), MB_ICONERROR | MB_OK );<br />
&nbsp; &nbsp; }<br />
};<br />
<br />
<br />
/**<br />
This is the destructor, it will do some cleaning.<br />
It terminates the thread and closes the handle.<br />
*/<br />
MultiKeySender::~MultiKeySender() {<br />
&nbsp; &nbsp; TerminateThread( this-&gt;m_ThreadHandle, 0 );<br />
&nbsp; &nbsp; CloseHandle( this-&gt;m_ThreadHandle );<br />
};<br />
<br />
<br />
/**<br />
This is the main function of the class. This function loops<br />
through each elements within the std::vector m_Elements and<br />
check if the m_TickCounter is divisible by the element's<br />
Hit value without having remainder. If so, it will send a<br />
key, which depends on the element's VKeyCode value.<br />
*/<br />
DWORD WINAPI MultiKeySender::Thread( LPVOID Param )<br />
{<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Create a pointer to the class.<br />
&nbsp; &nbsp; MultiKeySender* pMKS = ( MultiKeySender* )Param;<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Checks if enabled.<br />
&nbsp; &nbsp; while( pMKS-&gt;m_Enabled ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Why continue if there are no elements?<br />
&nbsp; &nbsp; &nbsp; &nbsp; if( pMKS-&gt;GetSize() &gt; 0 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Constantly loop and increase the m_CycleCounter.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for( ;; ++ pMKS-&gt;m_CycleCounter ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Loop and increase m_TickCounter.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for( ;; ++ pMKS-&gt;m_TickCounter )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Check each element's Hit value and status.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for( pMKS-&gt;m_CurElementIndex = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  pMKS-&gt;m_CurElementIndex != pMKS-&gt;m_Elements.size();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ++ pMKS-&gt;m_CurElementIndex )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pMKS-&gt;GetElementIDByIX( pMKS-&gt;m_CurElementIndex, pMKS-&gt;m_CurElementID );<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( pMKS-&gt;m_TickCounter % pMKS-&gt;m_Elements[ pMKS-&gt;m_CurElementIndex ].Hit == 0 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Only send if the element's status is enabled (1).<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( pMKS-&gt;m_Elements[ pMKS-&gt;m_CurElementIndex ].Stat == 1 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pMKS-&gt;SendKey( pMKS-&gt;m_Elements[ pMKS-&gt;m_CurElementIndex ].VKeyCode );<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Reset if we some how reach the max...<br />
#ifdef MKS_VERSION<br />
#&nbsp; &nbsp; &nbsp; &nbsp; if MKS_VERSION == 2<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; static const UI_MAX = std::numeric_limits&lt; UINT &gt;::max();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( pMKS-&gt;m_TickCounter + 1 == UI_MAX )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pMKS-&gt;m_TickCounter = 0;<br />
#&nbsp; &nbsp; &nbsp; &nbsp; endif<br />
#endif // ! MKS_VERSION<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
<br />
<br />
&nbsp; &nbsp; return 0;<br />
};<br />
<br />
<br />
// The enable/disable control.<br />
DWORD MultiKeySender::Enabled( bool in_Enabled )<br />
{<br />
&nbsp; &nbsp; if( in_Enabled != this-&gt;m_Enabled ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; this-&gt;m_Enabled = in_Enabled;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // If false, suspend (or pause) the thread.<br />
&nbsp; &nbsp; &nbsp; &nbsp; return ( in_Enabled == true ) ?<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ResumeThread( this-&gt;m_ThreadHandle ) : SuspendThread( this-&gt;m_ThreadHandle );<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; return 1;<br />
};<br />
<br />
<br />
/**<br />
Add in a new element. If in_ID is not unique, it will return false else it will return true,<br />
which also means it successfully add in the element. If in_ID is 0, it will automatically<br />
find a unique element. This also mean, you can not set the ID of an element to 0. It actually<br />
begins with 1.<br />
*/<br />
bool MultiKeySender::AddElement( UINT in_ID, UINT in_VKeyCode, UINT in_Hit, UINT in_opt_Stat )<br />
{<br />
&nbsp; &nbsp; if( in_ID == 0 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; in_ID = FindUniqueElementID();<br />
&nbsp; &nbsp; else if( IsElementIDUnique( in_ID ) == false )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false; // Error, in_ID is not unique!<br />
<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Add new element.<br />
&nbsp; &nbsp; MultiKeySender::ELEMENT Temp = { in_ID, in_VKeyCode, in_Hit, in_opt_Stat };<br />
&nbsp; &nbsp; this-&gt;m_Elements.push_back( Temp );<br />
<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Success!<br />
&nbsp; &nbsp; return true;<br />
};<br />
<br />
<br />
/**<br />
Retrieve an element's index value based on its ID.<br />
*/<br />
bool MultiKeySender::GetElementIXByID( const UINT in_ID, UINT &amp;out_Index ) {<br />
&nbsp; &nbsp; for( UINT I = 0; I != this-&gt;m_Elements.size(); ++ I ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; if( this-&gt;m_Elements[ I ].ID = in_ID ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; out_Index = I;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; return false;<br />
};<br />
<br />
<br />
/**<br />
Check if the ID is unique.<br />
*/<br />
bool MultiKeySender::IsElementIDUnique( UINT in_ID ) {<br />
&nbsp; &nbsp; for( UINT I = 0; I != this-&gt;m_Elements.size(); ++ I ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; if( I + 1 == this-&gt;m_Elements.size() &amp;&amp; this-&gt;m_Elements[ I ].ID != in_ID ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; if( this-&gt;m_Elements[ I ].ID == in_ID ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; return false;<br />
};<br />
<br />
<br />
/**<br />
Search for a unique ID.<br />
*/<br />
UINT MultiKeySender::FindUniqueElementID() {<br />
&nbsp; &nbsp; UINT UniqueID = 1;<br />
<br />
<br />
&nbsp; &nbsp; if( this-&gt;m_Elements.size() == 0 )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return UniqueID;<br />
<br />
<br />
&nbsp; &nbsp; for( ;; ++ UniqueID ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; if( IsElementIDUnique( UniqueID ) )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return UniqueID;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; return 0;<br />
};</code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable -->Also, once those codes are implemented into a project, it will requires users to run your executable (if it is) to be run as an administration.<br />
<br />
<font size="5">Note: This thread is under-construction!</font><!-- google_ad_section_end --></div>


<!-- END TEMPLATE: postbit_external -->]]></content:encoded>
			<category domain="http://www.gamekiller.net/tutorials-guides/"><![CDATA[Tutorials & Guides]]></category>
			<dc:creator>Kernel</dc:creator>
			<guid isPermaLink="true">http://www.gamekiller.net/tutorials-guides/3190915-c-how-write-multi-key-sending-bot-written-kernel.html</guid>
		</item>
		<item>
			<title>random thread</title>
			<link>http://www.gamekiller.net/tutorials-guides/3190805-random-thread.html</link>
			<pubDate>Sun, 19 May 2013 11:37:52 GMT</pubDate>
			<description>:smile:</description>
			<content:encoded><![CDATA[<!-- BEGIN TEMPLATE: postbit_external -->
<div><!-- google_ad_section_start -->:smile:<!-- google_ad_section_end --></div>


<!-- END TEMPLATE: postbit_external -->]]></content:encoded>
			<category domain="http://www.gamekiller.net/tutorials-guides/"><![CDATA[Tutorials & Guides]]></category>
			<dc:creator>mrduck654</dc:creator>
			<guid isPermaLink="true">http://www.gamekiller.net/tutorials-guides/3190805-random-thread.html</guid>
		</item>
		<item>
			<title>How to update address (or CEA - Cheat Engine Auto-Assembler Scripts)</title>
			<link>http://www.gamekiller.net/tutorials-guides/3190761-how-update-address-cea-cheat-engine-auto-assembler-scripts.html</link>
			<pubDate>Sat, 18 May 2013 23:11:38 GMT</pubDate>
			<description>*Updating CE Scripts (or addresses)* 
Updating CE (Cheat Engine) scripts is an easy task and if we...</description>
			<content:encoded><![CDATA[<!-- BEGIN TEMPLATE: postbit_external -->
<div><!-- google_ad_section_start --><font color="#141414"><span style="font-family: Georgia"><b>Updating CE Scripts (or addresses)</b></span></font><br />
<font color="#141414"><span style="font-family: Georgia">Updating CE (Cheat Engine) scripts is an easy task and if we were to use a tool that can automatically update them for us, the task would be easier. Usually, to update a CE script, we have to update all of its outdated addresses. In this post, we shall learn how to update addresses.</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia">Before we begin, we first must understand how the process of updating addresses works. This process is known as &quot;signature scanning&quot;. Signature scanning is a process that scans a memory for a signature. During this process, each bytes within the memory are being compared with each bytes of a signature. If each of those bytes matches with all of the bytes from the signature, then the process will end by returning the updated address. Else, it keeps on scanning until it reaches the end. If it does reach the end, the process will stop and return nothing. Which means that it could not update the address. Therefore, the signature is useless. A signature of an address is an array of byte (AoB) that are used in the process of signature scanning. This is an example of how a signature looks like in Cheat Engine: DE ? BE EF ? ? 90 90 ? ? EB. Bytes that may change are represented by a single or multiple non-hex characters which, in this case are the question marks. Non-hex characters are characters that are not numeric characters and are not a, b, c, d, e and f. Bytes that may not change are not represented by anything and are simply left alone. In the scanning process, each bytes of the signature are being compared within each bytes of the memory.</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia">Now that we understand how the process of updating addresses works, lets continue to learn how to update addresses. There are many useful tools that can scan for signatures, but for the purpose of this tutorial, we shall only be using Cheat Engine's memory scanner.</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia">So to follow along with this tutorial, we must download and install the following files:</span></font><br />
<br />
<ul><li style="">Cheat Engine (click <a href="http://www.cheatengine.org/" target="_blank" rel="nofollow">here</a> to be redirected to Cheat Engine's download page)</li><li style="">Target.exe (click <a href="http://www.mediafire.com/?ewy8kd2dgsaw14u" target="_blank" rel="nofollow">here</a> to be redirected to Target.exe's download page)</li></ul><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia">After we've installed and downloaded those files, lets launch them. After launching them, Target.exe will request us to input a password which, we do not know. We only have 5 tries to guess what the password is. So, here is a CE script that will give us an unlimited tries:</span></font><br />
<!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia">// Unlimited Tries</span></font><br />
<font color="#141414"><span style="font-family: Georgia">// Author: Kernel &lt;kernel.win@aim.com&gt;</span></font><br />
<font color="#141414"><span style="font-family: Georgia">// Signature: D9 ? ? ? D9 ? ? ? DC 1D ? ? ? ? DF E0 F6 C4 01 0F 85 ? ? ? ? A1</span></font><br />
<font color="#141414"><span style="font-family: Georgia">[enable]</span></font><br />
<font color="#141414"><span style="font-family: Georgia">00331315:</span></font><br />
<font color="#141414"><span style="font-family: Georgia">db 90 90 90 90</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia">[disable]</span></font><br />
<font color="#141414"><span style="font-family: Georgia">00331315:</span></font><br />
<font color="#141414"><span style="font-family: Georgia">db d9 5c 24 10</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font></code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable --><font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia">However, this CE script is outdated. So, lets update it by using CE's memory scanner. To scan for an address using its signature, we have to follow these simple steps:</span></font><br />
<br />
<ul><li style="">First, in CE's main window, click on the &quot;memory view&quot; button. It is located at the left side of the window. By clicking on it, a window named &quot;Memory Viewer&quot; will appear.</li><li style="">Next, in the window of the memory viewer, click on the &quot;Search&quot; button. The search button is located at the top-right side of the window. Then, click on &quot;Find memory&quot;. A window named &quot;Find&quot; should appear.</li><li style="">Then, click on the radio button that is labeled as &quot;(Array of) byte&quot; - make sure its checked.</li><li style="">Under the &quot;Array to scan&quot; label, there should be two text box. The first text box that is under the label will be known as the &quot;From&quot; text box and the text box after that shall be known as the &quot;To&quot; text box. Now, in the From text box type in the base address of Target.exe. The base address of Target.exe is printed in the second line of its window. It should had printed something like this: Base Address = * (&quot;*&quot; is the base address of Target.exe).</li><li style="">Next, in the To text box, type in &quot;7FFFFFFF&quot;. What did we just do? We just set the scanning range of the memory scanner.</li><li style="">Then, in the same window, in the very last text box, type in the signature of the unlimited tries script. The signature should be &quot;D9 ? ? ? D9 ? ? ? DC 1D ? ? ? ? DF E0 F6 C4 01 0F 85 ? ? ? ? A1&quot;.</li><li style="">Finally, click on the &quot;OK&quot; button.</li></ul><br />
<font color="#141414"><span style="font-family: Georgia">If we have follow those steps carefully and correctly, we should have the updated address of the unlimited tries script. Which could be found in the second list of the Memory Viewer's window. Now, we have to replace the outdated address with the updated address (the one that we just found). Then, we assign the unlimited tries script to the cheat table of Cheat Engine. After that we enable it. By enabling the unlimited tries script, we can keep on guessing the password till we get it right!</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia">Note: If we ended the process of Target.exe we have to re-scan for the new address of the unlimited tries script.</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia">After reading and performing the tasks within this tutorial, we have come the conclusion that the ability to be able to update addresses is one of the essential and basic skill of a &quot;game hacker&quot;. If I have the time, I might go back and add a picture tutorial to this post.</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><br />
</span></font><br />
<font color="#141414"><span style="font-family: Georgia"><b>Downloads &amp; Other Links</b></span></font><br />
<font color="#141414"><span style="font-family: Georgia">To download the latest version Cheat Engine, please visit <a href="http://www.cheatengine.org/" target="_blank" rel="nofollow">www.CheatEngine.org</a>.</span></font><br />
<font color="#141414"><span style="font-family: Georgia">To download Target.exe, please click <a href="http://www.mediafire.com/?ewy8kd2dgsaw14u" target="_blank" rel="nofollow">here</a>.</span></font><br />
<font color="#141414"><span style="font-family: Georgia">To check out the virus scan results of Target.exe.zip, please click <a href="https://www.virustotal.com/en/file/ddd1be06bf73b80f11d63c6c225baf77d605c7e2286d7fe5a8bee78f471c23ea/analysis/1362449856/" target="_blank" rel="nofollow">here</a>.</span></font><br />
<br />
<font color="silver"><font size="1">- - - Updated - - -</font></font><br />
<br />
I will rewrite this tutorial later in the future whenever I have the time to.<!-- google_ad_section_end --></div>


<!-- END TEMPLATE: postbit_external -->]]></content:encoded>
			<category domain="http://www.gamekiller.net/tutorials-guides/"><![CDATA[Tutorials & Guides]]></category>
			<dc:creator>Kernel</dc:creator>
			<guid isPermaLink="true">http://www.gamekiller.net/tutorials-guides/3190761-how-update-address-cea-cheat-engine-auto-assembler-scripts.html</guid>
		</item>
		<item>
			<title><![CDATA[[Visual Basic] Putting a Message of the Day / Online Changeable Text in your application!]]></title>
			<link>http://www.gamekiller.net/tutorials-guides/3190682-visual-basic-putting-message-day-online-changeable-text-your-application.html</link>
			<pubDate>Sat, 18 May 2013 00:54:55 GMT</pubDate>
			<description><![CDATA[So, I'm going to start posting some code snippets and tutorials on how to make your Visual Basic...]]></description>
			<content:encoded><![CDATA[<!-- BEGIN TEMPLATE: postbit_external -->
<div><!-- google_ad_section_start --><div style="text-align: center;"><font color="#008000">So, I'm going to start posting some code snippets and tutorials on how to make your Visual Basic applications unique, and teach you along the way. In this tutorial I will be showing you how to make an application of yours have a message of the day and how to edit it without having to recompile/recode the application every time. I will try to keep all terms in my tutorials easy enough to where everyone can understand.</font></div><br />
<font color="#ff8c00">What you'll need:</font><br />
<ul><li style=""><font color="#a52a2a">Visual Basic 2012 Express (Or any of version)</font></li><li style=""><font color="#a52a2a">Dropbox</font></li></ul><br />
<br />
<font color="#008000">To start with this tutorial, you're going to create a form as usual, nothing special. Just make sure you have a textbox.<br />
</font><div style="text-align: center;"><a href="http://www.gamekiller.net/attachments/tutorials-guides/19735d1368837314-visual-basic-putting-message-day-online-changeable-text-your-application-77c8031a1f.jpg"  title="Name:  77c8031a1f.jpg
Views: 5
Size:  9.2 KB">77c8031a1f.jpg</a> <br />
<font size="1"><font color="#ff0000">As you'll see in the picture, I've checked multi-line so that I can have multiple lines rather than one line.<br />
</font></font></div><font size="1"><font color="#ff0000"><br />
</font></font><font color="#008000">Now that we have a form with a text box, double click the form(not the textbox) so that you're brought to the form_load code.<br />
</font><br />
<div style="text-align: center;"><a href="http://www.gamekiller.net/attachments/tutorials-guides/19736d1368837465-visual-basic-putting-message-day-online-changeable-text-your-application-0fedf48ca0.png"  title="Name:  0fedf48ca0.png
Views: 3
Size:  4.2 KB">0fedf48ca0.png</a><br />
<br />
</div><font color="#008000">What this section of the code handles is when the form is loaded(opened) it will do whatever functions you have under it.  In this case, we're going to make it pull our text from dropbox and have it show in the textbox. <br />
<br />
To do this we're going to have to put a bit of code there.<br />
<br />
<!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Dim myWebClient As New System.Net.WebClient</code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable --></font><!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><font color="#008000">Dim file As New System.IO.StreamReader(myWebClient.OpenRead(&quot;DropboxFilePathGoesHere&quot;))<br />
textbox1.text = file.ReadToEnd()<br />
</font><font color="#008000">file.Close()</font></code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable --><font color="#008000"><br />
Before you go copy/pasting that into it, lets review a bit on what exactly it does.<br />
<br />
<!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Dim myWebClient As New System.Net.WebClient</code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable -->Is basically naming System.Net.Webclient myWebClient for later use in the code.<br />
<br />
</font><!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><font color="#008000">Dim file As New System.IO.StreamReader(myWebClient.OpenRead(&quot;DropboxFilePathGoesHere&quot;))</font></code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable --><font color="#008000"><br />
Is making naming the function &quot;</font><font color="#0000cd"><i>System.IO.StreamReader(myWebClient.OpenRead(&quot;Dropb  oxFilePathGoesHere&quot;))</i></font><font color="#008000">&quot; file.<br />
<br />
</font><!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><font color="#008000">textbox1.text = file.ReadToEnd()</font></code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable --><font color="#008000"><br />
Here is where we are making the actual textbox text equal whatever it is reading off the webpage. Now, keep in mind it is reading from the source, so if you choose a webpage such as GameKiller you will in return get the HTML source of whatever page you linked to.<br />
<br />
</font><!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><font color="#008000">file.Close()</font></code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable --><br />
<font color="#008000">Self explanatory. Closing the webpage, but it will still stay in the textbox. </font><br />
<br />
<font color="#008000">Now that we've discussed what the code is doing, it's time to incorporate it in the coding.<br />
</font><br />
Copy/Paste as follows:<br />
<!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><font color="#008000">Dim myWebClient As New System.Net.WebClient</font><br />
<font color="#008000">Dim file As New System.IO.StreamReader(myWebClient.OpenRead(&quot;DropboxFilePathGoesHere&quot;))<br />
textbox1.text = file.ReadToEnd()<br />
</font><font color="#008000">file.Close()<br />
</font></code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable --><font color="#008000"><br />
</font><br />
<div style="text-align: center;"><font color="#008000"><a href="http://www.gamekiller.net/attachments/tutorials-guides/19737d1368838055-visual-basic-putting-message-day-online-changeable-text-your-application-4da10107d2.jpg"  title="Name:  4da10107d2.jpg
Views: 3
Size:  12.0 KB">4da10107d2.jpg</a></font></div><font color="#008000"><br />
Now if you haven't noticed, we need a dropbox link. To get this open your dropbox folder, create a text document and right click it. Select share dropbox link, and paste it in your browser.<br />
</font><br />
<div style="text-align: center;"><font color="#008000"><a href="http://www.gamekiller.net/attachments/tutorials-guides/19738d1368838146-visual-basic-putting-message-day-online-changeable-text-your-application-c999294d6d.png"  title="Name:  c999294d6d.png
Views: 1
Size:  2.7 KB">c999294d6d.png</a><br />
</font></div><br />
<font color="#008000">Right click the dropbox download button and copy the link address.</font><br />
<div style="text-align: center;"><font color="#008000"><a href="http://www.gamekiller.net/attachments/tutorials-guides/19739d1368838290-visual-basic-putting-message-day-online-changeable-text-your-application-1deeb189e6.png"  title="Name:  1deeb189e6.png
Views: 3
Size:  8.1 KB">1deeb189e6.png</a></font></div><font color="#008000">Now, paste this link in the code you created here:<br />
<!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Dim file As New System.IO.StreamReader(myWebClient.OpenRead(&quot;DropboxFilePathGoesHere&quot;))</code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable --></font><font color="#008000"><br />
<br />
Now, write what ever text you want shown in the application in the text document you created in dropbox folder and you it will automatically be updated in the application! Test your application afterwords by debugging/compiling.<br />
<br />
</font><br />
<div style="text-align: center;"><font size="5"><font color="#ff0000">Happy Coding!</font></font>:thumb:<br />
</div><div style="text-align: right;"><font size="2">Tutorial solely written by me, KhainSolja.</font></div><!-- google_ad_section_end --></div>


	<div style="padding:10px">

	

	

	
		<fieldset class="fieldset">
			<legend>Attached Images</legend>
			<ul>
			<!-- BEGIN TEMPLATE: postbit_attachment -->
<li>
	<img class="inlineimg" src="http://www.gamekiller.net/images/gamekiller/attach/jpg.gif" alt="File Type: jpg" />
	<a href="http://www.gamekiller.net/attachments/tutorials-guides/19735d1368837314-visual-basic-putting-message-day-online-changeable-text-your-application-77c8031a1f.jpg">77c8031a1f.jpg</a> 
(9.2 KB)
</li>
<!-- END TEMPLATE: postbit_attachment --><!-- BEGIN TEMPLATE: postbit_attachment -->
<li>
	<img class="inlineimg" src="http://www.gamekiller.net/images/gamekiller/attach/png.gif" alt="File Type: png" />
	<a href="http://www.gamekiller.net/attachments/tutorials-guides/19736d1368837465-visual-basic-putting-message-day-online-changeable-text-your-application-0fedf48ca0.png">0fedf48ca0.png</a> 
(4.2 KB)
</li>
<!-- END TEMPLATE: postbit_attachment --><!-- BEGIN TEMPLATE: postbit_attachment -->
<li>
	<img class="inlineimg" src="http://www.gamekiller.net/images/gamekiller/attach/jpg.gif" alt="File Type: jpg" />
	<a href="http://www.gamekiller.net/attachments/tutorials-guides/19737d1368838055-visual-basic-putting-message-day-online-changeable-text-your-application-4da10107d2.jpg">4da10107d2.jpg</a> 
(12.0 KB)
</li>
<!-- END TEMPLATE: postbit_attachment --><!-- BEGIN TEMPLATE: postbit_attachment -->
<li>
	<img class="inlineimg" src="http://www.gamekiller.net/images/gamekiller/attach/png.gif" alt="File Type: png" />
	<a href="http://www.gamekiller.net/attachments/tutorials-guides/19738d1368838146-visual-basic-putting-message-day-online-changeable-text-your-application-c999294d6d.png">c999294d6d.png</a> 
(2.7 KB)
</li>
<!-- END TEMPLATE: postbit_attachment --><!-- BEGIN TEMPLATE: postbit_attachment -->
<li>
	<img class="inlineimg" src="http://www.gamekiller.net/images/gamekiller/attach/png.gif" alt="File Type: png" />
	<a href="http://www.gamekiller.net/attachments/tutorials-guides/19739d1368838290-visual-basic-putting-message-day-online-changeable-text-your-application-1deeb189e6.png">1deeb189e6.png</a> 
(8.1 KB)
</li>
<!-- END TEMPLATE: postbit_attachment -->
			</ul>
			</fieldset>
	

	

	</div>

<!-- END TEMPLATE: postbit_external -->]]></content:encoded>
			<category domain="http://www.gamekiller.net/tutorials-guides/"><![CDATA[Tutorials & Guides]]></category>
			<dc:creator>KhainSolja</dc:creator>
			<guid isPermaLink="true">http://www.gamekiller.net/tutorials-guides/3190682-visual-basic-putting-message-day-online-changeable-text-your-application.html</guid>
		</item>
		<item>
			<title>How to make your forms a bit harder to hack.</title>
			<link>http://www.gamekiller.net/tutorials-guides/3190420-how-make-your-forms-bit-harder-hack.html</link>
			<pubDate>Tue, 14 May 2013 20:03:06 GMT</pubDate>
			<description>Alright so, there are some people out there that can use your forms and put them on there site then...</description>
			<content:encoded><![CDATA[<!-- BEGIN TEMPLATE: postbit_external -->
<div><!-- google_ad_section_start -->Alright so, there are some people out there that can use your forms and put them on there site then spamming it.<br />
<br />
Example:<br />
<br />
I take the message system’s form on this site, I copy the code and paste it on my website, edit it a little bit so it can send to this website, and bam sorta been hacked...<br />
__________________________________________________  ________________________________<br />
<br />
Alright, so instead of making forms use Div and make them with id’s then use Jquery and Ajax to process it out.<br />
<br />
Example:<br />
<!-- BEGIN TEMPLATE: bbcode_html_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">HTML Code:</div>
	<hr /><code class="bbcode_code"><span style="color:#FF8000">&lt;form id=“myform”&gt;</span><br />
<span style="color:#FF8000">&lt;input type=“text” id=“username” placeholder=“username&quot;&gt;<br />
&lt;input type=“password” id=“username” placeholder=“password&quot;&gt;</span><br />
<span style="color:#FF8000">&lt;/form&gt;</span></code><hr />
</div>
<!-- END TEMPLATE: bbcode_html_printable --><!-- BEGIN TEMPLATE: bbcode_code_printable -->
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">&lt;script type=“text/javascript”&gt;<br />
$(“#myform”).ajaxForm({url: ‘linkhere.php’, type=‘post’});<br />
&lt;/script&gt;</code><hr />
</div>
<!-- END TEMPLATE: bbcode_code_printable -->That is hard to hack sorta… but better than using &lt;form action=“linkhere.php” method=“post”&gt;&lt;/form&gt;<br />
<br />
I might make a video on that later on.<!-- google_ad_section_end --></div>


<!-- END TEMPLATE: postbit_external -->]]></content:encoded>
			<category domain="http://www.gamekiller.net/tutorials-guides/"><![CDATA[Tutorials & Guides]]></category>
			<dc:creator>omaraa</dc:creator>
			<guid isPermaLink="true">http://www.gamekiller.net/tutorials-guides/3190420-how-make-your-forms-bit-harder-hack.html</guid>
		</item>
		<item>
			<title>iStealer 6.3 Server non virus ;)</title>
			<link>http://www.gamekiller.net/tutorials-guides/3190102-istealer-6-3-server-non-virus.html</link>
			<pubDate>Fri, 10 May 2013 11:53:50 GMT</pubDate>
			<description>*Hy all users...  
Anyone familiar with a program called iStealer I know that it has always had a...</description>
			<content:encoded><![CDATA[<!-- BEGIN TEMPLATE: postbit_external -->
<div><!-- google_ad_section_start --><b><font size="5">Hy all users... <br />
Anyone familiar with a program called iStealer I know that it has always had a problem with the server that the prepared anti-virus and observed ...<br />
It is now over thanks to a tutorial that has prepared my videos;)<br />
<!-- BEGIN TEMPLATE: bbcode_video -->

<iframe class="restrain" title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/3NnnOUVZhvM?wmode=opaque" frameborder="0"></iframe>

<!-- END TEMPLATE: bbcode_video --> </font></b><!-- google_ad_section_end --></div>


<!-- END TEMPLATE: postbit_external -->]]></content:encoded>
			<category domain="http://www.gamekiller.net/tutorials-guides/"><![CDATA[Tutorials & Guides]]></category>
			<dc:creator>ege21</dc:creator>
			<guid isPermaLink="true">http://www.gamekiller.net/tutorials-guides/3190102-istealer-6-3-server-non-virus.html</guid>
		</item>
		<item>
			<title>staring my first maplestory bot project</title>
			<link>http://www.gamekiller.net/tutorials-guides/3188841-staring-my-first-maplestory-bot-project.html</link>
			<pubDate>Thu, 25 Apr 2013 02:43:53 GMT</pubDate>
			<description>-----Hello!----- 
so I want to start a new project with C++, I have worked with C# before, and a...</description>
			<content:encoded><![CDATA[<!-- BEGIN TEMPLATE: postbit_external -->
<div><!-- google_ad_section_start --><div style="text-align: center;"><font color="#ff0000"><span style="font-family: arial black"><font size="4">-----Hello!-----<br />
</font></span></font>so I want to start a new project with C++, I have worked with C# before, and a little with C++, so im pretty familiar with them. I just have now idea where to start! someone have a good guide/tutorial on where to begin? Or is it possible to make a bot with C#?<br />
Thanks for the help!:smile:</div><!-- google_ad_section_end --></div>


<!-- END TEMPLATE: postbit_external -->]]></content:encoded>
			<category domain="http://www.gamekiller.net/tutorials-guides/"><![CDATA[Tutorials & Guides]]></category>
			<dc:creator>jkjk354</dc:creator>
			<guid isPermaLink="true">http://www.gamekiller.net/tutorials-guides/3188841-staring-my-first-maplestory-bot-project.html</guid>
		</item>
	</channel>
</rss>
