|
OK good glad I could help
--PerspX
|
|
|
|
|
I am doing everything for allocating and freeing sid structure but it always gives leakages please check the code :
BOOL GetAll (char* sFileOrFolderName )
{
DWORD dwRtnCode = 0;
PSID ownerSid = NULL;
HANDLE hFile;
hFile = CreateFile(
sFileOrFolderName,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
dwRtnCode = GetSecurityInfo(
hFile,
SE_FILE_OBJECT,
OWNER_SECURITY_INFORMATION,
(&ownerSid),
NULL,
NULL,
NULL,
NULL);
if( !ownerSid )
{
CloseHandle(hFile);
return FALSE;
}
LocalFree((HLOCAL)ownerSid);
CloseHandle(hFile);
return TRUE ;
}
int _tmain(int argc, _TCHAR* argv[])
{
while(1)
{
if(!GetAll("d:\\aa.txt"))
{
printf("\nFailed");
}
Sleep(1000);
}
return 0;
}
|
|
|
|
|
Akin Ocal wrote: ...but it always gives leakages...
How are you verifying these "leakages?"
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Hi! Here's the problem:
I have an exe (no source code) wish for it to run only when it finds a valid license on the pc. Therefore I wish to modify it somehow (wrap,modify, etc) so that it will check for certain criterii such as hardware id before launching itself.
What I've found out so far:
I know I can create another exe that embeds the exe using Visual Studio. However, running the exe from memory only applies to .Net exe. I wish to cover non .Net too. And I know that running non .Net exe from memory is very hard.
Question:
How do i do this? Is there a way to modify the exe so that I can insert checking codes before the exe launches normally?
Thanks!
"Long is the way, and hard, that out of hell leads up to light."
|
|
|
|
|
|
Offcourse you can.
You can add the exe as a resource of another exe. So Only if you find a valid licences for a coputer, extract the exe from the resorce, write it as a file and then use ShellExecute or CreateProcess to run the original exe.
In this case there is a change that the user can extract the exe from the resource and save it as another exe. To prevent this, add some encrytption to the file before you add it to the resource.
|
|
|
|
|
Naveen.R wrote: To prevent this, add some encrytption to the file before you add it to the resource.
How does that prevent it?
|
|
|
|
|
A simple example. Suppose I cut first 10 bytes of exe and put at the end of the file. Then the exe will not be executable isnt't it? So after extracting I should roll back this changes, means i copy the last 10 bytes and put it in the begining. then execute the exe.
|
|
|
|
|
Well but in executing it, unless we run in from memory straight, the user could still copy the correct exe while it's running. Doesnt solve the problem?
|
|
|
|
|
I have foudn some applications like ie creates some temp file while browsing some sites( for ex if you took a video in the youtube, you can see a "temp" file created in the temporary internet folder.I noticed that that file cannot be renamed or copied or deleted. If we kill the IE, that files get deleted automatically. May be you implement the same technique. I dont know how IE does this. If you got any information, tell me also.
Other option is to make a loader by your self.May be very difficult.I shall inform you if i got any other solutions.
|
|
|
|
|
Ok man cool.
I'll look into that option.
Ya loader is very hard to do.. I wonder how the commercial exe protecter do it.
|
|
|
|
|
Rationalise wrote: I wonder how the commercial exe protecter do it.
hmm..a matter to investigate..
|
|
|
|
|
Got the way. Create the file using the flag FILE_FLAG_DELETE_ON_CLOSE
|
|
|
|
|
Hmm interesting. Only I'm using c# so cannot use CreateFile. File.Create does not offer such an option.
I'm looking into other methods of limiting access rights, so the file cannot be copied.
|
|
|
|
|
Rationalise wrote: other methods of limiting access rights
Limiting access will not do. Because under such cases, if your application is terminated using the taskmanger, all the access limits will be removed.
|
|
|
|
|
What we need is to prevent copying of the exe. But it seems that it cannot be done from what i read.
I've changed to researching on modifying the PE itself and injecting my own license checking codes. Shall get back to you if I have anything.
|
|
|
|
|
Naveen.R wrote: Suppose I cut first 10 bytes of exe and put at the end of the file.
that's what you call encryption?
Naveen.R wrote: add some encrytption
|
|
|
|
|
led mike wrote: that's what you call encryption?
At the Simplest.Also we just an example. Unless u know that i had moved the first 10 bytes, Will you be able to make it correct again?
|
|
|
|
|
Naveen.R wrote: At the Simplest
That's just "wrong". What you are prescribing is called "obfuscation" it is NOT "encryption".
|
|
|
|
|
led mike wrote: obfuscation
Thats some thing new for me. Thanks for pointing. Let me learn about it....
|
|
|
|
|
hi
do u know how can i make VC6 compiler not to include full paths of source files when compiling them generates errors or warnings? if so, i've not to scroll the output window each time i want to see the errors or warnings generated.
thx
|
|
|
|
|
ilostmyid2 wrote: not to include full paths
I don't think that's possible. What you can do is Ctrl-A/Ctrl-C the output window into your text editor for easier reading.
|
|
|
|
|
Try calling the directories shorter names?
Or even create a new drive letter that points deep into your directory tree, and use that instead.
eg: z:\ = \\iain\c\source\articles
just worked for me!
Iain.
|
|
|
|
|
[System::Web::Services::WebMethod]
BYTE PythagoreanTheorem(BYTE Num1, int Num2);
or
[System::Web::Services::WebMethod]
char* PythagoreanTheorem(char* Num1, int Num2);
how on types BYTE or char* error under :
"SByte cannot be serialized because it dose not have a parameterless constructor"
|
|
|
|
|