 |
10-08-2011, 08:14 PM
|
#1
|
|
Registered Member
Join Date: May 2010
Location: Hillsboro, Oregon
Posts: 142
OS: Xp
|
Fatal error
Every time i compile this thing i got this
fatal error LNK1169: one or more multiply defined symbols found
is the problem is the header .h? or just me trying to re-code this code
Code:
// Test v1.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
//includes all nessecary files to this source
#include <windows.h>
//End of includes
//This is what you call globals.
int TestOn = 0;
//Define HackOn as a number, and that numebr is zero.
int TestMax = 10;
//Define HackMax as a number, and that number is ten.
bool test = false;
//Define test as a true/false. "Boolean"
#define ADDR_SBULLLETS 0x374BBF16
//The definition of ADDR_SBULLETS
//End of Globals
void Main (void)
{
while(1)
//Makes an infinite loop. One that doesn't end.
{
if(GetAsyncKeyState(VK_NUMPAD1)&1)
//When Numpad1 Gets Pressed
{
test = (!test);
//if test = false, turn to true and vice versa
}
if(GetAsyncKeyState(VK_NUMPAD2)&1)
//When Numpad2 Gets Pressed.
{
TestOn ++;
//Adds +1 to the variable, "HackOn"
if(TestOn == TestMax) TestOn = 0;
//When Hackon Reaches the number HackMax, it resets HackOn to 0
}
if(test)
//if test is true
{
memcpy( (PBYTE)ADDR_SBULLLETS, (PBYTE)"\x33\xC0\x90", 3 );
//look in globals for the definition of ADDR_SBULLETS
//Basically, it edits the bytes of the memory to "\x33\xC0\x90".
//The number at the end, tells you how many bytes you are editing.
//The first part, ADDR_SBULLETS Shows the code which part of the memory we are editing.
}else{
//if test is not true
memcpy( (PBYTE)ADDR_SBULLLETS, (PBYTE)"\x0F\x94\xC0", 3 );
//look in globals for the definition of ADDR_SBULLETS
//Basically, it edits the bytes of the memory to "\x0F\x94\xC0".
//The number at the end, tells you how many bytes you are editing.
//The first part, ADDR_SBULLETS Shows the code which part of the memory we are editing.
}
}
}
DWORD WINAPI Lesson (LPVOID)
// This is just a dummy function that will be the code activate the main thread
{
Main();
//Call the thread called Main
return 1;
//Finish of the thread.
}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
// DllMain is an optional function for you to declare.
// It serves as the entry point for any DLL
{
DisableThreadLibraryCalls(hDll);
// Make a call to DisableThreadLibraryCalls with the hModule variable
// as its argument; Doing this is an optimization trick to prevent
// needless thread attach/detach messages from triggering further calls
// to our DllMain function.
if ( dwReason == DLL_PROCESS_ATTACH )
{
//When this dll is injected into the process. this is what the dll is supposed to do.
// Null, in C Plus Plus, nothing. It is defined as 0
CreateThread(NULL, NULL, Lesson, NULL, NULL, NULL);
//It creates the thread called "Lesson" which is defined a few lines up. DWORD WINAPI Lesson (LPVOID)
}
return TRUE;
// Although the return value doesn't actually matter. You return the value TRUE or FALSE indicatinng success or failure.
}
__________________
|
|
|
10-09-2011, 02:01 PM
|
#2
|
|
TSF-Emeritus
Join Date: Dec 2010
Location: U.S.A., Texas
Posts: 2,047
OS: Windows XP SP3, Ubuntu 10
|
Re: Fatal error
You shouldn't have main set to not return ( void ). Instead, you should try to make it return 'int'. You also capitalized 'main' in both your declaration of the function, as well as in DWORD WINAPI Lesson(). Lower-casing the declaration in line 18 as well as line 58, and making main return an integer, should fix your problem.
Hope that works  .
EDIT: If that doesn't work, you should try commenting out line 4 ( as I did that when I was working with your code as well ).
|
|
|
10-09-2011, 02:51 PM
|
#3
|
|
Registered Member
Join Date: May 2010
Location: Hillsboro, Oregon
Posts: 142
OS: Xp
|
Re: Fatal error
Quote:
Originally Posted by Ninjaboi
You shouldn't have main set to not return ( void ). Instead, you should try to make it return 'int'. You also capitalized 'main' in both your declaration of the function, as well as in DWORD WINAPI Lesson(). Lower-casing the declaration in line 18 as well as line 58, and making main return an integer, should fix your problem.
Hope that works  .
EDIT: If that doesn't work, you should try commenting out line 4 ( as I did that when I was working with your code as well ).
|
Ok i'm using Microsoft c++ Express 2010
and theres no numbers in the lines. how can i find numer 18 and 58
is there a config or something so i can see the numbers
__________________
|
|
|
10-09-2011, 04:59 PM
|
#4
|
|
TSF-Emeritus
Join Date: Dec 2010
Location: U.S.A., Texas
Posts: 2,047
OS: Windows XP SP3, Ubuntu 10
|
Re: Fatal error
There is a way to see the line numbers. Start up Visual Studio Express.
Tools >> Options... >> Text Editor >> C/C++. Under 'Display', check mark "Line numbers". Click "OK" when finished.
|
|
|
10-09-2011, 05:11 PM
|
#5
|
|
Registered Member
Join Date: May 2010
Location: Hillsboro, Oregon
Posts: 142
OS: Xp
|
Re: Fatal error
Quote:
Originally Posted by Ninjaboi
There is a way to see the line numbers. Start up Visual Studio Express.
Tools >> Options... >> Text Editor >> C/C++. Under 'Display', check mark "Line numbers". Click "OK" when finished.
|
Ok let me try this base i made if its works then cool
i didnt just made this my self some people help me
people like you good at coding.
Ok 1st you want to me Lower-casing the letter you mean like this
HELLO = hello?
Code:
DWORD WINAPI Lesson (lpvoid)
__________________
|
|
|
10-10-2011, 09:18 AM
|
#6
|
|
TSF-Emeritus
Join Date: Dec 2010
Location: U.S.A., Texas
Posts: 2,047
OS: Windows XP SP3, Ubuntu 10
|
Re: Fatal error
Code:
// Test v1.cpp : Defines the exported functions for the DLL application.
//
//#include "stdafx.h"
//includes all nessecary files to this source
#include <windows.h>
//End of includes
//This is what you call globals.
int TestOn = 0;
//Define HackOn as a number, and that numebr is zero.
int TestMax = 10;
//Define HackMax as a number, and that number is ten.
bool test = false;
//Define test as a true/false. "Boolean"
#define ADDR_SBULLLETS 0x374BBF16
//The definition of ADDR_SBULLETS
//End of Globals
int main()
{
while(1)
//Makes an infinite loop. One that doesn't end.
{
if(GetAsyncKeyState(VK_NUMPAD1)&1)
//When Numpad1 Gets Pressed
{
test = (!test);
//if test = false, turn to true and vice versa
}
if(GetAsyncKeyState(VK_NUMPAD2)&1)
//When Numpad2 Gets Pressed.
{
TestOn ++;
//Adds +1 to the variable, "HackOn"
if(TestOn == TestMax) TestOn = 0;
//When Hackon Reaches the number HackMax, it resets HackOn to 0
}
if(test)
//if test is true
{
memcpy( (PBYTE)ADDR_SBULLLETS, (PBYTE)"\x33\xC0\x90", 3 );
//look in globals for the definition of ADDR_SBULLETS
//Basically, it edits the bytes of the memory to "\x33\xC0\x90".
//The number at the end, tells you how many bytes you are editing.
//The first part, ADDR_SBULLETS Shows the code which part of the memory we are editing.
}else{
//if test is not true
memcpy( (PBYTE)ADDR_SBULLLETS, (PBYTE)"\x0F\x94\xC0", 3 );
//look in globals for the definition of ADDR_SBULLETS
//Basically, it edits the bytes of the memory to "\x0F\x94\xC0".
//The number at the end, tells you how many bytes you are editing.
//The first part, ADDR_SBULLETS Shows the code which part of the memory we are editing.
}
}
}
DWORD WINAPI Lesson (LPVOID)
// This is just a dummy function that will be the code activate the main thread
{
main();
//Call the thread called Main
return 1;
//Finish of the thread.
}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
// DllMain is an optional function for you to declare.
// It serves as the entry point for any DLL
{
DisableThreadLibraryCalls(hDll);
// Make a call to DisableThreadLibraryCalls with the hModule variable
// as its argument; Doing this is an optimization trick to prevent
// needless thread attach/detach messages from triggering further calls
// to our DllMain function.
if ( dwReason == DLL_PROCESS_ATTACH )
{
//When this dll is injected into the process. this is what the dll is supposed to do.
// Null, in C Plus Plus, nothing. It is defined as 0
CreateThread(NULL, NULL, Lesson, NULL, NULL, NULL);
//It creates the thread called "Lesson" which is defined a few lines up. DWORD WINAPI Lesson (LPVOID)
}
return TRUE;
// Although the return value doesn't actually matter. You return the value TRUE or FALSE indicatinng success or failure.
}
That's actually what I meant  .
|
|
|
10-10-2011, 11:52 AM
|
#7
|
|
Registered Member
Join Date: May 2010
Location: Hillsboro, Oregon
Posts: 142
OS: Xp
|
Re: Fatal error
Quote:
Originally Posted by Ninjaboi
Code:
// Test v1.cpp : Defines the exported functions for the DLL application.
//
//#include "stdafx.h"
//includes all nessecary files to this source
#include <windows.h>
//End of includes
//This is what you call globals.
int TestOn = 0;
//Define HackOn as a number, and that numebr is zero.
int TestMax = 10;
//Define HackMax as a number, and that number is ten.
bool test = false;
//Define test as a true/false. "Boolean"
#define ADDR_SBULLLETS 0x374BBF16
//The definition of ADDR_SBULLETS
//End of Globals
int main()
{
while(1)
//Makes an infinite loop. One that doesn't end.
{
if(GetAsyncKeyState(VK_NUMPAD1)&1)
//When Numpad1 Gets Pressed
{
test = (!test);
//if test = false, turn to true and vice versa
}
if(GetAsyncKeyState(VK_NUMPAD2)&1)
//When Numpad2 Gets Pressed.
{
TestOn ++;
//Adds +1 to the variable, "HackOn"
if(TestOn == TestMax) TestOn = 0;
//When Hackon Reaches the number HackMax, it resets HackOn to 0
}
if(test)
//if test is true
{
memcpy( (PBYTE)ADDR_SBULLLETS, (PBYTE)"\x33\xC0\x90", 3 );
//look in globals for the definition of ADDR_SBULLETS
//Basically, it edits the bytes of the memory to "\x33\xC0\x90".
//The number at the end, tells you how many bytes you are editing.
//The first part, ADDR_SBULLETS Shows the code which part of the memory we are editing.
}else{
//if test is not true
memcpy( (PBYTE)ADDR_SBULLLETS, (PBYTE)"\x0F\x94\xC0", 3 );
//look in globals for the definition of ADDR_SBULLETS
//Basically, it edits the bytes of the memory to "\x0F\x94\xC0".
//The number at the end, tells you how many bytes you are editing.
//The first part, ADDR_SBULLETS Shows the code which part of the memory we are editing.
}
}
}
DWORD WINAPI Lesson (LPVOID)
// This is just a dummy function that will be the code activate the main thread
{
main();
//Call the thread called Main
return 1;
//Finish of the thread.
}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
// DllMain is an optional function for you to declare.
// It serves as the entry point for any DLL
{
DisableThreadLibraryCalls(hDll);
// Make a call to DisableThreadLibraryCalls with the hModule variable
// as its argument; Doing this is an optimization trick to prevent
// needless thread attach/detach messages from triggering further calls
// to our DllMain function.
if ( dwReason == DLL_PROCESS_ATTACH )
{
//When this dll is injected into the process. this is what the dll is supposed to do.
// Null, in C Plus Plus, nothing. It is defined as 0
CreateThread(NULL, NULL, Lesson, NULL, NULL, NULL);
//It creates the thread called "Lesson" which is defined a few lines up. DWORD WINAPI Lesson (LPVOID)
}
return TRUE;
// Although the return value doesn't actually matter. You return the value TRUE or FALSE indicatinng success or failure.
}
That's actually what I meant  .
|
Hahaha i did that. like you said let me try and re-compile it
Edit: I got the same error
Code:
1>Test v1.obj : error LNK2005: _DllMain@12 already defined in dllmain.obj
1>C:\Documents and Settings\Intel\My Documents\Visual Studio 2010\Projects\Test v1\Debug\Test v1.dll : fatal error LNK1169: one or more multiply defined symbols found
__________________
|
|
|
10-11-2011, 01:22 AM
|
#8
|
|
TSF-Emeritus
Join Date: Dec 2010
Location: U.S.A., Texas
Posts: 2,047
OS: Windows XP SP3, Ubuntu 10
|
Re: Fatal error
It seems your defining DLLMain() in your Test v1 file, when it's already defined in dllmain. This means that MFC already defines this for you, and that you should either remove DLLMain() from your source entirely, or that you should remove MFC from your project.
Don't worry if you choose the latter though, as since it's already defined in MFC you can still call and use it just like normal. If your wanting to edit the function itself though, possibly just renaming the custom function would prevent conflicting with the original.
|
|
|
 |
| Thread Tools |
Search this Thread |
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|