#1
|
|||
|
|||
OllyDbg + Registry question
Hi all,
I'm trying to create a loader that starts a process, execute what needs to be done, close the process and then start OllyDbg. Everything works fine when I would only need to do that. Now the other part: Olly has an option when you right click on a exe in Windows Explorer to debug that exe in Olly. I've found the key in the Registry and I changed the right click "Open with Ollydbg" context menu to point to my Ollyloader.exe instead of OLLYDBG.exe For example when you right click on notepad.exe; Olly starts with notepad.exe as command line parameter. ---> "OLLYDBG c:\windows\system32\notepad.exe" Now my question: how can I get the path and name of the exe I right click on so that I can use it in my loader and use it as a command line parameter? Any help would be appreciated Thanks in advance, sTfN0X |
#2
|
|||
|
|||
In registry(talking about context menu) command line(paramter) is presented as '%1'..
So, if you make your command for conetext menu as ollyloader "%1" command line parameter will be passed to your ollyloader.exe. Now, all you need to do is call ollydbg with that same paramater... |
#3
|
|||
|
|||
Quote:
For example: when I right click on notepad.exe and select Open with Ollydbg (after I changed the Registry key to point to my Ollyloader of course) it is the same as typing in command line: "Drive:\Path\Ollyloader.exe notepad.exe"? If so, how can I retrieve the name of that parameter to use it in my loader? Regards, sTfN0X |
#4
|
|||
|
|||
Quote:
about retreiveing that parameter... it's allready passed to your loader. you just need to call olly with that same param. in case you don't know how to read it... should be something like this C like Code:
int main(int argc, char *argv[]) { int i; for (i = 1; i < argc; i++) printf("%s ", argv[i]); printf("\n"); return 0; } Code:
procedure TForm1.FormCreate(Sender: TObject); Var I : Integer; begin Memo1.Lines.Clear; Memo1.Lines.Add('Parameters Count : '+IntToStr(ParamCount)); { ParamCount - Returns the number of parameters passed on the command line. } If ParamCount>0 Then For I:=1 To ParamCount Do { ParamStr - Returns a specified parameter from the command-line. } Memo1.Lines.Add('Parameter '+IntToStr(I)+' : '+ParamStr(I)) end; Code:
Sub Main() Debug.Print Command$ End Sub |
#5
|
|||
|
|||
babar0ga,
Thanks for your help. The C code works perfect Best regards, sTfN0X |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Ollydbg v1 to v2 porting question | sendersu | General Discussion | 0 | 09-02-2014 13:29 |
Another Ollydbg question DLL loading in Program | hobferret | General Discussion | 9 | 06-19-2005 23:32 |
Quick OllyDbg Question | lilmeanman | General Discussion | 8 | 06-06-2005 08:13 |
PELOCK Question again--.w.--Ollydbg | boya | General Discussion | 0 | 06-10-2004 12:38 |
OllyDbg question | butter | General Discussion | 2 | 05-07-2004 10:30 |