1

I have been fuzzing Adobe Reader for a while now.

One of the issue that I face is running multiple instances of same application. If I'm able to run multiple instances of same application, I will be utilizing my CPU cycles efficiently.

But, the issue is, applications like Adobe Reader, does not allow multiple instances.

Is there any way by which I can run multiple instances of application that does not support multiple instance and fuzz them efficiently.

Actually, I'm trying to find ways by which I can achieve my goals.

One of the idea is to hook functions.

Please share your views and opinions.

  • For fuzzing or vulnerability analysis it might taint your envoirment and thus your fuzzing surface. I'd recommend you'd use vargrant or something like that to spawn a fuzzing farm quickly and painlessly. – Stolas Aug 27 '14 at 10:04
  • The simplest way is to run each instance under a separate user account. – QAZ Aug 27 '14 at 10:07
  • Virtual machines will help you. – w s Aug 27 '14 at 10:09
  • Actually, I'm fuzzing using VMs'. I'm trying to find a way to develop application containers that can run multiple instance of same application. So, that I can fuzz multiple instances of software (Adobe) in same virtual machine. – john4tech Aug 27 '14 at 10:18
3

Adobe Reader uses the following two methods to determine if another instance is running:

  • CreateSemaphoreW(NULL, 0, 1, L"Acrobat Viewer") followed by GetLastError() == ERROR_ALREADY_EXISTS
  • FindWindowW(L"Acrobat Viewer", NULL) != NULL

So as long as you hook those two functions appropriately or patch the code that performs those checks, you will be able to run multiple instances of Adobe Reader.

  • thank you. But I'm looking for a generic way of doing this. I want to make a container which can run multiple instances of most of the apps. Just like application virtualization (do you think that this will be a good approach for fuzzing?). – john4tech Aug 28 '14 at 7:07
  • Also CreateMutex(W/A) may be used in the same manner as CreateSemaphore(W/A) – ST3 Aug 28 '14 at 13:36
  • @john4tech: The approach I described above will be more performant than a generic solution, which as I'm sure you know is very important when fuzzing. Unless you're looking to fuzz dozens of different applications (for which manual analysis might be too time-consuming), I'd recommend using application-specific hooks/patches. – Jason Geffner Aug 28 '14 at 14:31
  • @jason-geffner yes, my aim is to fuzz dozens of applications which run in single instance mode. It's time consuming to look into each application and make patch for it. That's why I'm looking for a generic solution. – john4tech Sep 1 '14 at 6:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.