Solved

Creating a TSR in Delphi

Posted on 2003-11-12
15
735 Views
Last Modified: 2010-04-05
Hello. I have been trying for quite some time now to create a TSR (Termiante and Stay Resident) program in Delphi, without using ASM.

I assume HeapCreate and HeapAlloc are required; however, I am not sure how to implement them correctly and keep my program in memory even after my exe has exited.

Any help would be greately appreciated [Just a simple example of a Delphi TSR would suffice, so I understand how it works], and I will be sure to award the points accordingly.

Thank you,

-unfunf
0
Comment
Question by:unfunf
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 5
  • 2
  • +1
15 Comments
 
LVL 26

Accepted Solution

by:
EddieShipman earned 63 total points
ID: 9737115
Is this for Windows? wndows does not run TSR's. Use a service instead.
0
 

Author Comment

by:unfunf
ID: 9737198
Yes tis for windows... I want to simply make a process Memory resident so it does not have to rely on the exe being running. Maybe I was being confusing by calling it a TSR.
0
 
LVL 26

Expert Comment

by:EddieShipman
ID: 9737294
well if it is memory resident in windows, it is running...<bg>
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 6

Expert Comment

by:GloomyFriar
ID: 9738546
I can't understand what you want to make.
TSRs was used in DOS for making "pseudo multitasking"
Windows have native multitasking.
As EddieShipman said, use a service or explain more detailed, what do you want.
0
 
LVL 6

Assisted Solution

by:GloomyFriar
GloomyFriar earned 62 total points
ID: 9738611
0
 

Author Comment

by:unfunf
ID: 9743609
I mean more along the lines of allocating actual functions in memory.

For example... To inject code into a process (in WinNT, for win9x stuff I need to use x functions by EliRt) you can use VirtualAllocEx and CreateRemoteThread to execute @ address, and such. I want to do that same thing; however, I want to do it in windows memory itself.. not the private memory of a process. Could I use the hGlobal handle from GlobalAlloc?
0
 
LVL 6

Expert Comment

by:GloomyFriar
ID: 9746864
Memory is allocated (by means of an operating system) in a process context.
GlobalAlloc is obsolete
0
 

Author Comment

by:unfunf
ID: 9747234
So it's just not possible in up to date versions of windows anymore?
0
 
LVL 3

Expert Comment

by:JDuncan
ID: 9749515
How about running a dos tsr in a delphi Console application
0
 
LVL 6

Expert Comment

by:GloomyFriar
ID: 9749999
>So it's just not possible in up to date versions of windows anymore?
Yes. Any process have it's own heap. And GlobalAlloc == LocalAlloc.

Nevertheless could you explain your purposes and may be I'll can help you.
0
 

Author Comment

by:unfunf
ID: 9752087
I wanted to make a type of "test" antivirus for myself, that does not rely on definitions, but on actions to stop that I specify. I wanted to figure out a way to globally hook some apis without having to inject a dll system wide. I also wanted to make it harder for a virus to just end my process (some viruses attempt to end processes by other means, not exe name), since my process is residing in memory and not shown by any process list (it would have to be taken out of memory). Asm programs can do these things pretty easily (not sure if that is true in the more current versions of windows); however, it would take wayyyy to long to code a good asm program. I use delphi because i simply dont have the patience to sit down and figure out asm (which I do not understand very well) then write 30kb of source just to do something that would take maybe 5-7kb in delphi .dpr. Plus I can keep the delphi exe size pretty low (at least under 30 kb).

I just need an alternative to having my actual exe stay up, and keeping my code out of a DLL file.
0
 
LVL 6

Expert Comment

by:GloomyFriar
ID: 9753893
It's rather difficult to make all you've described.
And Delphi is not the best tool to such tasks.
How about MSVC?
0
 

Author Comment

by:unfunf
ID: 9755188
The only language I have a lot of experience in is delphi. So, I would probably not be able to do it (unless someone helped me a lot I suppose) with msvc.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
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…
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…

691 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