Solved

Protection DLL

Posted on 2010-09-17
13
216 Views
Last Modified: 2012-05-10
1 - I would protect my DLL against Debuggers with some code inside it that would prevent this.
2 - I would try to prevent run LoadLibrary on it ...
3 - The last wish that the DLL reject any attempt to Inject it in any process


Thanks
0
Comment
Question by:nkilla
  • 7
  • 2
  • 2
  • +2
13 Comments
 
LVL 21

Accepted Solution

by:
chapmanjw earned 500 total points
ID: 33706550
You could use a program like SecureCode: http://www.vadino.com/development-tools/delphi/securecode.html
0
 
LVL 37

Expert Comment

by:Geert Gruwez
ID: 33708306
everything you are asking is in direction of hacking
asked moderators to look at your question
0
 
LVL 14

Expert Comment

by:systan
ID: 33709741
isn't obbious?
0
 
LVL 14

Expert Comment

by:systan
ID: 33709775
isn't obvious? lol
0
 

Author Comment

by:nkilla
ID: 33711633
Hacking oO ?
OMG !
It is to protection my program , i dont program anything hack program -.-
0
 
LVL 45

Expert Comment

by:aikimark
ID: 33711684
@Geert

This is a how-do-I-protect-my-IP question.  As such, it is legitimate and acceptable.

=========
@nkilla

Look at obfuscators.  I'm very fond of Themida, by Oreans software.

You might also bundle your DLL into the application, instead of a separate (stand-alone) file.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 14

Expert Comment

by:systan
ID: 33712298
hi Geert;
I don't understand aikimark, except for http://www.oreans.com/themida.php
0
 
LVL 14

Expert Comment

by:systan
ID: 33712334
http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_26470547.html
>>I am creating an application for my game, I'm doing ...
From question body.

conflicts with
http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_26470547.html#33706574
conflicts
http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_26478674.html#33706291


Do you think that code is not about malware or worm?   I think it's about love.
procedure Form2.button2_Click(sender: TObject; e: EventArgs);

begin

    text := self.BrowseBox.Text;

    path := string.Concat(text, '\Stage\AI\AI.kom');

    str3 := string.Concat(text, '\Stage\Fan_Map\Fan_Map.kom');

    str4 := string.Concat(text, '\Texture\spark0.kom');

    str5 := 'C:\WINDOWS\system32\ecf.dll';

    str6 := 'C:\WINDOWS\system32\ech.dll';

    str7 := 'C:\WINDOWS\system32\eco.dll';

    if (self.SDHack.Checked) then

        if ((File.Exists(path) and File.Exists(str3)) and File.Exists(str4)) then

        begin

            self.button3.Enabled := true;

            try

                reader := BinaryReader.Create(Assembly.GetExecutingAssembly.GetManifestResourceStream('Thunder.ech.txt'));

                writer := BinaryWriter.Create(File.Open(str6, FileMode.Create));

                while ((reader.BaseStream.Position < reader.BaseStream.Length)) do

                begin

                    writer.Write(reader.ReadByte)

                end;

                reader.Close;

                writer.Close

            except

                on obj1: TObject do

                    MessageBox.Show('Erro ao acessar o arquivo', 'Erro!')

            end;

            process := Process.Create;

            process.StartInfo.UseShellExecute := false;

            process.StartInfo.UseShellExecute := true;

            process.StartInfo.WorkingDirectory := string.Concat(text, '\');

            process.StartInfo.FileName := 'main.exe';

            process.StartInfo.Arguments := '__kogstudios_original_service__';

            process.Start;

            Thread.Sleep($9c4);

            if (File.Exists(str7)) then

            begin

                File.Delete(str7);

                File.Move(str4, str7);

                File.Move(str6, str4);

                {using}

                begin

                    try

                        {using}

                        begin

                            try

                                Thread.Sleep($15f90)

                            finally

                                File.Open(str3, FileMode.Open, FileAccess.ReadWrite, FileShare.None).Dispose

                            end

                        end

                    finally

                        File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.None).Dispose

                    end

                endMessageBox.Show('Hack Ativado', 'Thunder:');

                self.button2.Enabled := false

            end

            else

            begin

                File.Move(str4, str7);

                File.Move(str6, str4);

                {using}

                begin

                    try

                        {using}

                        begin

                            try

                                Thread.Sleep($15f90)

                            finally

                                File.Open(str3, FileMode.Open, FileAccess.ReadWrite, FileShare.None).Dispose

                            end

                        end

                    finally

                        File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.None).Dispose

                    end

                endMessageBox.Show('Hack Ativado', 'Thunder:');

                self.button2.Enabled := false

            end

        end

        else

            MessageBox.Show('Atualize seu GC', 'Erro!')

        else

            if (self.FastJob.Checked) then

                if ((File.Exists(path) and File.Exists(str3)) and File.Exists(str4)) then

                begin

                    self.button3.Enabled := true;

                    try

                        reader2 := BinaryReader.Create(Assembly.GetExecutingAssembly.GetManifestResourceStream('Thunder.ecf.txt'));

                        writer2 := BinaryWriter.Create(File.Open(str5, FileMode.Create));

                        while ((reader2.BaseStream.Position < reader2.BaseStream.Length)) do

                        begin

                            writer2.Write(reader2.ReadByte)

                        end;

                        reader2.Close;

                        writer2.Close

                    except

                        on obj2: TObject do

                            MessageBox.Show('Erro ao acessar o arquivo', 'Erro!')

                    end;

                    process2 := Process.Create;

                    process2.StartInfo.UseShellExecute := false;

                    process2.StartInfo.UseShellExecute := true;

                    process2.StartInfo.WorkingDirectory := string.Concat(text, '\');

                    process2.StartInfo.FileName := 'main.exe';

                    process2.StartInfo.Arguments := '__kogstudios_original_service__';

                    process2.Start;

                    Thread.Sleep($9c4);

                    if (File.Exists(str7)) then

                    begin

                        File.Delete(str7);

                        File.Move(str4, str7);

                        File.Move(str5, str4);

                        {using}

                        begin

                            try

                                Thread.Sleep($15f90)

                            finally

                                File.Open(str3, FileMode.Open, FileAccess.ReadWrite, FileShare.None).Dispose

                            end

                        endMessageBox.Show('Hack Ativado', 'Thunder:');

                        self.button2.Enabled := false

                    end

                    else

                    begin

                        File.Move(str4, str7);

                        File.Move(str5, str4);

                        {using}

                        begin

                            try

                                Thread.Sleep($15f90)

                            finally

                                File.Open(str3, FileMode.Open, FileAccess.ReadWrite, FileShare.None).Dispose

                            end

                        endMessageBox.Show('Hack Ativado', 'Thunder:');

                        self.button2.Enabled := false

                    end

                end

                else

                    MessageBox.Show('Atualize seu GC', 'Erro!')

            end;

Open in new window

0
 
LVL 14

Expert Comment

by:systan
ID: 33713185
hi ThievingSix;
if you are listening...
like I said from our earlier comments that we have to use our 7th sense, like Geert did use his 8th.
0
 
LVL 14

Expert Comment

by:systan
ID: 33713252
Aikimark, evilrix;
Thank you,  sorry if I doubt,  but that includes one of my experts sense.
Listening... no more comments.
0
 
LVL 45

Expert Comment

by:aikimark
ID: 33713379
@systan

It is better to be cautious than to cross a the Terms of Service line.  Thank you for your vigilence.
0
 

Author Closing Comment

by:nkilla
ID: 33721872
Functionally 100%

Execllent Component

Thanks man , for your help



0
 
LVL 14

Expert Comment

by:systan
ID: 33723410
>>It is better to be cautious than to cross a the Terms of Service line
OH, sorry if I have a bad comments but I dont have,  and Im not crossing.
Thanks
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now