Exetools

Exetools (https://forum.exetools.com/index.php)
-   General Discussion (https://forum.exetools.com/forumdisplay.php?f=2)
-   -   Interprocess communication with a third-party DLL (https://forum.exetools.com/showthread.php?t=8409)

aldente 10-30-2005 03:44

Interprocess communication with a third-party DLL
 
Hello!

There is a DLL (ActiveX Plugin for MSIE) which does some nice stuff. I analyzed it, found some places inside where the values I'm interested in are available (e.g. where they are PUSHed). My problem is now to access them not from inside the debugger but with my app.

I thought about putting an invisible edit-box and an invisible button into my app and modify the DLL, so it does a SetWindowText with the interesting value (it's a string) and then sends a clicked-message to the button. The only problem is: I have just very, very little Assembly skills and I'm not able to implement that (and FindWindowEx and everything I would also need).

So is there any EASIER way to send this string to my app, or is there any good tutorial on how to add this message-stuff to a third-party DLL at Assembly-level?

aldente 10-30-2005 07:20

OK, this Delphi line does exactly, what I want:

Code:

SetWindowText(FindWindowEx(FindWindow('TADCPwnd', nil), 0, 'TEdit', 'punkrock'), 'my tiny little value');
Quite a lame solution, but it works quite well. Plus the Edit-Box has an OnChange-event, so there is not even need for a button! Everything is done within this single line.
The values are all constants except "my tiny little value".

I looked in my debugger what this code looks like in Assembly language, result:

http://home.scarlet.be/~il095280/functioncall.gif (only ~ 4KB)

How to insert the function-calls to FindWindowExA and FindWindowA into the other program? Only SetWindowTextA is used on other locations in that program.


Please help me!

searchme 10-30-2005 17:45

Hi,

does the dll include something like LoadLibrary and GetProcAddr then you may bind the functions FindWindowExA and FindWindowA dynamically. Therefor you may need to add a new section to the binary or find enough free space.
Another solution would be to add a little dll of yours to the program's address space - probably using LoadLibrary - and then to use ReadProcessMemory at the particular address. If you load the process yourself using CreateProcess you don't even have to add a dll to the process.

searchme


All times are GMT +8. The time now is 21:45.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX