currently, my proudct is...
Product Service(EXE, x86) ------(call)--------> Injector-x86, injector-x64 ------(inject)---------> target process ( x86, x64 )
btw, DLL Injection approval callback feature's function called to injector not service exe.
so, I want to set approval callback on service to madshi driver.
- Start Injection, Stop Injection on product service, seprately with injector
- register / unregister dll approval callback on product service, seprately with injector
sorry my english,...
http://help.madshi.net/DllInjecting.htm ... ackRoutine
so, i want to change work flow.
service ---------> injector ( immediately injection )
service --------> injector ( load driver, set injection info, not start injection )
service -> set dll approval callback
service -> start injection
service <--- driver approval callback
Hmmmm... Doing this with IPC would be possible, but I can't really recommend it, because Microsoft already strongly advises against letting driver land wait on a user land callback. So the whole concept of "DLL injection approval callback" is already against the rules to some extent. Now involving even 2 different user processes, which wait on each other, to delay the driver, doesn't sound like a good concept. We should try our best to keep the overhead of the approval callback as small as possible.
@jgh0721, why does your service not do the injection itself? Why do you start a secondary injector tool?
because of do not direct injection in service, my service is x86(32bit) process. but, i need to control x86, x64 process(and dll) both.
so, i decided that i make injector( x86, x64 both ) and i use it.
or i make service x86 and service x64. very unhappy. besides, my clients dont like many process consist of product.
finally, i want,
driver control -> service ( driver start, stop, dll approval callback, and etc.. )
dll injection -> injector
Would it be very hard to make your service 64bit capable?
hmm,... Even if I make the service 64-bit version, I still need an injector because I need to control both 32-bit and 64-bit processes( and dll ).
service( x86 ) : injecting x86 process, receiving ipc message from x86 dll
service( x64 ) : injecting x64 process, receiving ipc message from x64 dll, and ipc message from injector-x86,
injector-x86 : injecting x86 process, receiving ipc message from x86 dll, and send/receive ipc message to service
service(x86) : injecting x86 process, receiving ipc message from x86 dll
service(x64) : injecting x64 process, receiving ipc message from x64 dll
but, currently service process has network connection to server, dbms connection, and so on. so i need information exchange between service.
sorry for such a request.
first, for a while, i attempt to build 64bit service... but, i coudln't make because of using custom qt framework. - i using custom made qt framework 4.8.7 ( backport from qt 5.x )
code : https://gitlab.com/JungGyuHo/QtForWin
second, my company's auto update system don't support seperate installer for os configuration( x86, x64 )
last, Company customers (mainly financial and other security-conscious companies) do not like the installer to include files that are not installed on their PCs.
south korea's IT is very old..
I'd bite the bullet and write a small x64 service (not using any Qt anything) that is only responsible for injecting and receiving DLL injection approvals, it can do the injection into both 32/64 bit targets alone without any further assistance from other remote processes. Even if it means your x86 service and this skeleton x64 service are running concurrently it's a much lower price to pay as opposed to what you're currently doing. Besides, you've already created a lot more work for yourself by having a 32-bit service on an x64 environment communicating with separate 32-bit and 64-bit injectors, which would be more processes than needed here even given your dilemma.