xCal Injector v2.2 (Bug Fixes Update)
================================================== =============
By ImWhacky
================================================== =============
Features:
Process Selector
Write-in Process
Multiple-dll Injection
Manual Injection
Auto Injection
Auto Close on Injection
Injection Delay
Millions of color options
================================================== =============
Images:

================================================== =============
Virus Scan:
(it shows results, but the results are because of the way it injects dll's)
(I will put the source code down below as well if you don't believe me)
virustotal -
Click Here!
jotti -
Click Here!
================================================== =============
Change-log:
v1.0
- First Release
v1.1
- Added 64-bit Support
- Added Auto Injection
- Added Close On Injection
v1.2
- Stylized Main GUI
v1.3
- Updated to support windows 10
v1.4
- Added Process Selector
- Added Injection Status
v1.5
- Re-did Entire Injector Design
v1.6
- Removed Select Process Button
- Added Font Options
- Custom Color Options
- Optinal Background color options
- Multi Tab Injector
- Home Tab (Main Injection Page)
- Options (Injector Customization options,) (will be expanded upon in future, just colors for this release)
v2.0 (Big Update, skipped 1.7, 1.8, and 1.9)
- Expanded custom color spectrum
- Removed "Clear Process Name" button
- Removed force process loading
- Removed Processes loading bar
- Removed Process loading status
- Removed Color Demo window in appearance options
- Re-Sized "Custom Color" and "Font Options" buttons
- Re-Sized font demo box
- Added Opacity Slider (adjust transparency of injector)
- Added optional injection delay
- Added Spanish and French Languages
- Added CPU Monitor (Make sure your game isn't running too hot)
- Added "Save List" option (Saves your currently loaded dll's to be used for later)
- Added "Open List" option (Loads your pre-saved list for fast injection abilities, only 2 buttons now.
- Added Game Selector
- Added Automatic Process Loading
- Added "Refresh Processes" button
v2.1
- Made Information Window Look Nicer
- Removed Process Selection Square
- Removed Refresh Processes button
- Added Select Process Window
- Added Select Window Process Window
- Changed Default Color To Match Logo
- Condensed Injector so it now takes up less space on your screen.
- Re-Arranged Injector Layout, Flows better now
v2.2 (Bug Fix Update)
- Fixed Process Not Found bug when using window selector
Cause: Window Selector added space to end of process name
- Fixed Window Selector and Process Selector color change after first
time opening windows
Cause: messed up variables
- Fixed Unhandled Exception Error when you are adding a dll and press
cancle.
Cause: I did not declare what would happen if you pressed cancle.
- If you inject without a process name or a dll, a dialog will pop up telling you that you need them.
================================================== =============
Next Version features (possibilities)
- New Injection Library
This will be the last update for a while
If you find any bugs, report them in this forum so I can fix them
Thanks!
-
ImWhacky
================================================== =============
Source (v2.1):
I will be releasing the source code of the last release on every new release.
Code:
[Form1]
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Drawing.Drawing2D
Imports System.Globalization
Imports System.Threading
Public Class Form1
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private TargetProcessHandle As Integer
Private pfnStartAddr As Integer
Private pszLibFileRemote As String
Private TargetBufferSize As Integer
Dim proc As Process
Public Const PROCESS_VM_READ = &H10
Public Const TH32CS_SNAPPROCESS = &H2
Public Const MEM_COMMIT = 4096
Public Const PAGE_READWRITE = 4
Public Const PROCESS_CREATE_THREAD = (&H2)
Public Const PROCESS_VM_OPERATION = (&H8)
Public Const PROCESS_VM_WRITE = (&H20)
Dim DLLFileName As String
Public Declare Function ReadProcessMemory Lib "kernel32" (
ByVal hProcess As Integer,
ByVal lpBaseAddress As Integer,
ByVal lpBuffer As String,
ByVal nSize As Integer,
ByRef lpNumberOfBytesWritten As Integer) As Integer
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (
ByVal lpLibFileName As String) As Integer
Public Declare Function VirtualAllocEx Lib "kernel32" (
ByVal hProcess As Integer,
ByVal lpAddress As Integer,
ByVal dwSize As Integer,
ByVal flAllocationType As Integer,
ByVal flProtect As Integer) As Integer
Public Declare Function WriteProcessMemory Lib "kernel32" (
ByVal hProcess As Integer,
ByVal lpBaseAddress As Integer,
ByVal lpBuffer As String,
ByVal nSize As Integer,
ByRef lpNumberOfBytesWritten As Integer) As Integer
Public Declare Function GetProcAddress Lib "kernel32" (
ByVal hModule As Integer, ByVal lpProcName As String) As Integer
Private Declare Function GetModuleHandle Lib "Kernel32" Alias "GetModuleHandleA" (
ByVal lpModuleName As String) As Integer
Public Declare Function CreateRemoteThread Lib "kernel32" (
ByVal hProcess As Integer,
ByVal lpThreadAttributes As Integer,
ByVal dwStackSize As Integer,
ByVal lpStartAddress As Integer,
ByVal lpParameter As Integer,
ByVal dwCreationFlags As Integer,
ByRef lpThreadId As Integer) As Integer
Public Declare Function OpenProcess Lib "kernel32" (
ByVal dwDesiredAccess As Integer,
ByVal bInheritHandle As Integer,
ByVal dwProcessId As Integer) As Integer
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (
ByVal lpClassName As String,
ByVal lpWindowName As String) As Integer
Private Declare Function CloseHandle Lib "kernel32" Alias "CloseHandleA" (
ByVal hObject As Integer) As Integer
Dim ExeName As String = IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)
Private Sub Inject()
On Error GoTo 1 ' If error occurs, app will close without any error messages
Timer1.Stop()
Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text)
TargetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, False, TargetProcess(0).Id)
pszLibFileRemote = OpenFileDialog1.FileName
pfnStartAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA")
TargetBufferSize = 1 + Len(pszLibFileRemote)
Dim Rtn As Integer
Dim LoadLibParamAdr As Integer
LoadLibParamAdr = VirtualAllocEx(TargetProcessHandle, 0, TargetBufferSize, MEM_COMMIT, PAGE_READWRITE)
Rtn = WriteProcessMemory(TargetProcessHandle, LoadLibParamAdr, pszLibFileRemote, TargetBufferSize, 0)
CreateRemoteThread(TargetProcessHandle, 0, 0, pfnStartAddr, LoadLibParamAdr, 0, 0)
CloseHandle(TargetProcessHandle)
1: Me.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
TextBox1.Clear()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If CheckBox4.Checked Then
System.Threading.Thread.Sleep(ComboBox2.Text + "000")
End If
If IO.File.Exists(OpenFileDialog1.FileName) Then
End If
Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text)
If TargetProcess.Length = 0 Then
Label3.Text = ("Waiting for " + TextBox1.Text + ".exe...")
Else
Timer1.Stop()
Label3.ForeColor = Color.Green
Label3.Text = "Injection Successful!"
Call Inject()
If CheckBox1.Checked = True Then
Me.Close()
Else
End If
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Close()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
OpenFileDialog1.Filter = "DLL|*.dll"
OpenFileDialog1.ShowDialog()
Dim FileName As String
FileName = OpenFileDialog1.FileName.Substring(OpenFileDialog1.FileName.LastIndexOf("\"))
Dim DllFileName As String = FileName.Replace("\", "")
Me.ListBox2.Items.Add(DllFileName)
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
For i As Integer = (ListBox2.SelectedItems.Count - 1) To 0 Step -1
ListBox2.Items.Remove(ListBox2.SelectedItems(i))
Next
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
ListBox2.Items.Clear()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If IO.File.Exists(OpenFileDialog1.FileName) Then
Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text)
If TargetProcess.Length = 0 Then
Label3.Text = ("Waiting for " + TextBox1.Text + ".exe" + "....")
Else
Timer1.Stop()
Label3.Text = "Injection Successful!"
Call Inject()
If CheckBox1.Checked = True Then
Me.Close()
End If
End If
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Timer1.Interval = 2
Timer1.Start()
End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
Timer1.Start()
End Sub
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
Timer1.Stop()
End Sub
Private Sub Form1_Load_(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer2.Start()
ShowIcon = True
Me.TrackBar1.Value = CInt(Me.Opacity * 100)
Button1.BackColor = Color.FromArgb(0, 210, 255)
Button2.BackColor = Color.FromArgb(0, 210, 255)
Button3.BackColor = Color.FromArgb(0, 210, 255)
Button4.BackColor = Color.FromArgb(0, 210, 255)
Button5.BackColor = Color.FromArgb(0, 210, 255)
Button6.BackColor = Color.FromArgb(0, 210, 255)
Button7.BackColor = Color.FromArgb(0, 210, 255)
Button8.BackColor = Color.FromArgb(0, 210, 255)
Button10.BackColor = Color.FromArgb(0, 210, 255)
Button11.BackColor = Color.FromArgb(0, 210, 255)
Form2.ListBox1.BackColor = Color.FromArgb(0, 210, 255)
ListBox2.BackColor = Color.FromArgb(0, 210, 255)
TrackBar1.BackColor = Color.FromArgb(0, 210, 255)
Form2.Button1.BackColor = Color.FromArgb(0, 210, 255)
Form2.Button7.BackColor = Color.FromArgb(0, 210, 255)
ProgressBar1.BackColor = Color.FromArgb(0, 210, 255)
Form4.Button4.BackColor = Color.FromArgb(0, 210, 255)
Form4.Button1.BackColor = Color.FromArgb(0, 210, 255)
Form4.ListBox1.BackColor = Color.FromArgb(0, 210, 255)
End Sub
Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click
Form3.Show()
End Sub
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
FontDialog1.ShowDialog()
FontDialog1.MaxSize = 8
FontDialog1.MinSize = 8
RichTextBox1.Font = FontDialog1.Font
Button1.Font = FontDialog1.Font
Button2.Font = FontDialog1.Font
Button3.Font = FontDialog1.Font
Button4.Font = FontDialog1.Font
Button5.Font = FontDialog1.Font
Button6.Font = FontDialog1.Font
Button7.Font = FontDialog1.Font
Button8.Font = FontDialog1.Font
Button10.Font = FontDialog1.Font
Button11.Font = FontDialog1.Font
Form2.ListBox1.Font = FontDialog1.Font
Label2.Font = FontDialog1.Font
Label3.Font = FontDialog1.Font
Label4.Font = FontDialog1.Font
GroupBox2.Font = FontDialog1.Font
RadioButton1.Font = FontDialog1.Font
RadioButton2.Font = FontDialog1.Font
ListBox2.Font = FontDialog1.Font
TabControl1.Font = FontDialog1.Font
GroupBox1.Font = FontDialog1.Font
CheckBox4.Font = FontDialog1.Font
ComboBox2.Font = FontDialog1.Font
Label10.Font = FontDialog1.Font
Label5.Font = FontDialog1.Font
CheckBox1.Font = FontDialog1.Font
Form2.Button7.Font = FontDialog1.Font
Form2.Button1.Font = FontDialog1.Font
Form4.Button4.Font = FontDialog1.Font
Form4.Button1.Font = FontDialog1.Font
Form4.ListBox1.Font = FontDialog1.Font
Me.Font = FontDialog1.Font
FontDialog1.MaxSize = 11
Label1.Font = FontDialog1.Font
FontDialog1.MinSize = 11
End Sub
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
ColorDialog1.ShowDialog()
ColorDialog1.SolidColorOnly = True
Button1.BackColor = ColorDialog1.Color
Button2.BackColor = ColorDialog1.Color
Button3.BackColor = ColorDialog1.Color
Button4.BackColor = ColorDialog1.Color
Button5.BackColor = ColorDialog1.Color
Button6.BackColor = ColorDialog1.Color
Button7.BackColor = ColorDialog1.Color
Button8.BackColor = ColorDialog1.Color
Button10.BackColor = ColorDialog1.Color
Button11.BackColor = ColorDialog1.Color
Form2.ListBox1.BackColor = ColorDialog1.Color
ListBox2.BackColor = ColorDialog1.Color
TrackBar1.BackColor = ColorDialog1.Color
Form2.Button1.BackColor = ColorDialog1.Color
Form2.Button7.BackColor = ColorDialog1.Color
Form4.Button4.BackColor = ColorDialog1.Color
Form4.Button1.BackColor = ColorDialog1.Color
Form4.ListBox1.BackColor = ColorDialog1.Color
If CheckBox2.Checked Then
TabPage1.BackColor = ColorDialog1.Color
Else
TabPage1.BackColor = Color.White
End If
If CheckBox3.Checked Then
TabPage2.BackColor = ColorDialog1.Color
Else
TabPage2.BackColor = Color.White
End If
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
If ComboBox1.Text = "Counter-Strike: Global Offensive" Then
TextBox1.Text = "csgo"
End If
If ComboBox1.Text = "Counter-Strike: 1.6" Then
TextBox1.Text = "hl"
End If
If ComboBox1.Text = "Grand Chase" Then
TextBox1.Text = "main"
End If
If ComboBox1.Text = "Crossfire" Then
TextBox1.Text = "crossfire"
End If
If ComboBox1.Text = "Blackshot" Then
TextBox1.Text = "BlackShot"
End If
If ComboBox1.Text = "Combat Arms" Then
TextBox1.Text = "Engine"
End If
End Sub
Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
If CheckBox4.Checked Then
End If
End Sub
Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
Me.Opacity = Me.TrackBar1.Value / 100
End Sub
Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedIndexChanged
If ComboBox3.Text = "Spanish" Then
Label11.Text = "Seleccione idioma"
Button10.Text = "Color personalizado"
Button11.Text = "opciones de fuente"
RichTextBox1.Text = "Opciones de fuente personalizados"
Label10.Text = "opacidad"
CheckBox2.Text = "Inicio Tab Color de fondo"
CheckBox3.Text = "Ficha Opciones de Color de fondo"
CheckBox4.Text = "Retraso inyección (segundos)"
Label1.Text = "Proceso:"
Button1.Text = "Guardar lista"
Button3.Text = "lista abierta"
Button4.Text = "Navega"
Button5.Text = "Borrar seleccionado"
Button6.Text = "Borrar de dlls"
RadioButton1.Text = "automática"
RadioButton2.Text = "manual"
CheckBox1.Text = "cerca después de la inyección"
Button2.Text = "inyectar"
Label4.Text = "estado de la inyección"
Button8.Text = "Seleccione Proceso"
Label2.Text = "información"
GroupBox1.Text = "apariencia"
GroupBox2.Text = "Opciones de inyección"
TabPage1.Text = "casa"
TabPage2.Text = "Opciones"
End If
If ComboBox3.Text = "English" Then
Label11.Text = "Slect Language"
Button10.Text = "Custom Color"
Button11.Text = "Font Options"
RichTextBox1.Text = "Custom Font Options"
Label10.Text = "Opacity"
CheckBox2.Text = "Home tab Background Color"
CheckBox3.Text = "Options tab Background Color"
CheckBox4.Text = "Delay Injection (seconds)"
Label1.Text = "Process:"
Button1.Text = "Save List"
Button3.Text = "Open List"
Button4.Text = "Browse"
Button5.Text = "Clear Selected"
Button6.Text = "Clear DLL's"
RadioButton1.Text = "Automatic"
RadioButton2.Text = "Manual"
CheckBox1.Text = "Close After Injection"
Button2.Text = "INJECT"
Label4.Text = "Injection Status"
Button8.Text = "Select Process"
Label2.Text = "Information"
GroupBox1.Text = "Appearance"
GroupBox2.Text = "Injection Options"
TabPage1.Text = "Home"
TabPage2.Text = "Options"
End If
If ComboBox3.Text = "French" Then
Label11.Text = "Choisir la langue"
Button10.Text = "Couleur personnalisée"
Button11.Text = "options de police"
RichTextBox1.Text = "Personnalisés Options de police"
Label10.Text = "opacité"
CheckBox2.Text = "Accueil onglet Couleur de fond"
CheckBox3.Text = "Onglet Options couleur de fond"
CheckBox4.Text = "Délai injection (secondes)"
Label1.Text = "processus:"
Button1.Text = "Enregistrer la liste"
Button3.Text = "Ouvrir la liste"
Button4.Text = "Parcourir"
Button5.Text = "Effacer la sélection"
Button6.Text = "Effacer DLL"
RadioButton1.Text = "automatique"
RadioButton2.Text = "Manuel"
CheckBox1.Text = "Fermer Après injection"
Button2.Text = "INJECT"
Label4.Text = "injection Etat"
Button8.Text = "Sélectionnez Traiter"
Label2.Text = "Information"
GroupBox1.Text = "apparence"
GroupBox2.Text = "Options d'injection"
TabPage1.Text = "Accueil"
TabPage2.Text = "Options"
End If
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
ProgressBar1.Value = PerformanceCounter1.NextValue
Label7.Text = ProgressBar1.Value.ToString + "%"
End Sub
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
Dim s As New IO.StreamWriter("SavedDlls.dat")
For i As Integer = 0 To ListBox2.Items.Count - 1
s.Write(ListBox2.Items(i) & vbNewLine)
Next
s.Close()
End Sub
Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
If IO.File.Exists("SavedDlls.dat") Then
Dim r As New IO.StreamReader("SavedDlls.dat")
Dim txt As New TextBox
txt.Text = r.ReadToEnd
ListBox2.Items.Clear()
For i As Integer = 0 To txt.Lines.Count - 2
ListBox2.Items.Add(txt.Lines(i))
Next
r.Close()
End If
End Sub
Private Sub Button8_Click_1(sender As Object, e As EventArgs) Handles Button8.Click
Form2.Show()
End Sub
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
Form4.Show()
End Sub
End Class
[Form2]
Public Class Form2
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each proc As Process In Process.GetProcesses
ListBox1.Items.Add(proc.ProcessName)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form1.TextBox1.Text = ListBox1.SelectedItem
Me.Hide()
End Sub
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
ListBox1.Items.Clear()
For Each proc As Process In Process.GetProcesses
ListBox1.Items.Add(proc.ProcessName)
Next
End Sub
End Class
[Form3]
Public Class Form3
Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class
[Form4]
Public Class Form4
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each p As Process In Process.GetProcesses
If p.MainWindowTitle = String.Empty = False Then
ListBox1.Items.Add(p.ProcessName & " [" & p.MainWindowTitle & "]")
End If
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim astring = ListBox1.SelectedItem
astring = astring.Substring(0, astring.IndexOf("["))
Form1.TextBox1.Text = astring
Me.Hide()
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
ListBox1.Items.Clear()
For Each p As Process In Process.GetProcesses
If p.MainWindowTitle = String.Empty = False Then
ListBox1.Items.Add(p.ProcessName & " [" & p.MainWindowTitle & "]")
End If
Next
End Sub
End Class
Credits:
Crazywink's (auto close, auto inject)




