All Posts

The LIST command shows the events and global vars. If anything , curprocname would be a global var (second list), but I think it is user defined and not part of the default variables... Wh... See more...
The LIST command shows the events and global vars. If anything , curprocname would be a global var (second list), but I think it is user defined and not part of the default variables... What is your plan for Vprobes?
UPDATE Well, I tried this out on another Linux box I have around running Ubuntu 8.10. I have no problems on that machine at all. I'm guessing there is something missing from the Red Hat ... See more...
UPDATE Well, I tried this out on another Linux box I have around running Ubuntu 8.10. I have no problems on that machine at all. I'm guessing there is something missing from the Red Hat system, but I have no idea what it is. I am going to reload my main system as Ubuntu to continue testing VProbes instead of fighting with Red Hat. Thanks
Thanks for the reply. I am running this on Redhat ES Linux. I'm not seeing a command for vProbeList, but I ran vmrun vprobeListProbes and got a list of items.... I do not have internet acce... See more...
Thanks for the reply. I am running this on Redhat ES Linux. I'm not seeing a command for vProbeList, but I ran vmrun vprobeListProbes and got a list of items.... I do not have internet access from the system in question so I'll just summarize. Total probes: 42 In HW_Exit SMM_RSMPost ... .. VMXUnload VMM10Hz I do not see curprocname in the list.
Are you running this code on Windows or Linux? What does vProbeList show?
I tried to use the sample code and am getting an error. I tried to run: vmrun vprobeLoad Windows\ XP\ Professional.vmx "'cat vptop.vp'" vprobeLoad: error: illegal variable refe... See more...
I tried to use the sample code and am getting an error. I tried to run: vmrun vprobeLoad Windows\ XP\ Professional.vmx "'cat vptop.vp'" vprobeLoad: error: illegal variable reference in top-level context I thought it might be a bug in the example, but I tried going back to a simple Hello! type script and I get the same error. If I type it out on the command line, the Hello! script works, but in a file it does not. If I put the vptop.vp example on the command line, I get another error. vprobeLoad: error: unknown callee cpuprocname Any ideas? I am running Redhat ES 4.7 on this machine, with VMWorkstation 6.5. Thanks! Cameron Liner Cameron.Liner@arnold.af.mil
So cool... now what parameter do I need to adjust for more as 24 hours in a day? :smileygrin: -- Wil _____________________________________________________ Visit the new VMware developers... See more...
So cool... now what parameter do I need to adjust for more as 24 hours in a day? :smileygrin: -- Wil _____________________________________________________ Visit the new VMware developers wiki at http://www.vi-toolkit.com
Folks - If you have any interesting, and useful VProbes sample code you would like to share with our community please consider using our Community Sample Code repository: http://communities.vmwar... See more...
Folks - If you have any interesting, and useful VProbes sample code you would like to share with our community please consider using our Community Sample Code repository: http://communities.vmware.com/community/developer/utilities?view=documents If you do contribute please tag it by language and product so it makes it easier to search.. Many thanks Pablo
The processor manuals, of course, are for reference, not for reading cover-to-cover, though perhaps the protected mode memory management chapters of Intel vol. 3 are worth a thorough read. ... See more...
The processor manuals, of course, are for reference, not for reading cover-to-cover, though perhaps the protected mode memory management chapters of Intel vol. 3 are worth a thorough read. I think books about concrete operating systems are more useful than the academic texts, which tend to spend too much real estate on ideas that turned out to be dead ends. Solomon and Russinovich's Inside Windows 200X series are excellent, providing broad, deep, well-written insight into the most commercially important operating system out there. I haven't seen anything quite as great in the Linux world, but Love's Linux Kernel Development is just fine.
Can you elaborate on the extensibility and limitations of the various parameters? In particular, I am interested on using IO-streams with vpFile and outFile. Table 3-2. VProbes-Relates Confi... See more...
Can you elaborate on the extensibility and limitations of the various parameters? In particular, I am interested on using IO-streams with vpFile and outFile. Table 3-2. VProbes-Relates Configuration Parameters Parameter Description vprobe.allow Site‐wide flag globally allowing or disallowing VProbes usage. vprobe.enable Per‐VM flag enabling VProbes. vprobe.vpFile An alternate method to specify a VP source file. vprobe.outFile Use a different file for Vprobes output. vprobe.guestSyms File containing guest symbols. vprobe.syscalls File containing a list equating syscall numbers with names.
What documentation do you recommend to become a Vprobe expert? besides:
Doing this stuff from outside the VM has some big pluses, and some big minuses. On the pro side: Most importantly, VProbes is safe. Using a kernel debugger or something from within a guest... See more...
Doing this stuff from outside the VM has some big pluses, and some big minuses. On the pro side: Most importantly, VProbes is safe. Using a kernel debugger or something from within a guest provides some very dangerous opportunities: e.g., you could poke a hole in a critical guest memory structure. Also, kernel debuggers usually stop the target program to allow inspection. VProbes keeps things moving along while data is harvested, so it can be used even on mission-critical, highly available systems. VProbes doesn't rely on any in-guest tools. If the target is, for instance, an appliance that doesn't even have a login shell, let alone /usr/bin/top, VProbes works no better or worse. It doesn't care what state the guest is in. If the guest is hard hung, or is swapping too hard for a shell to come up, or whatever, VProbes can be a "tool of last resort" to try to harvest information. VProbes is also immune to guest attempts to fool it. For instance, malware often tries to change in-guest instrumentation tools to make itself undetectable. Since the VM/hypervisor trust boundary protects vprobes, it is immune to this weirdness. VProbes is neutral as to the identity of the guest; since it's machine-level, you can use the same tools for Windows, Linux, Solaris, FreeBSD, MacOS, etc. To the extent the preload scripts work, even some common, but OS-specific, notions, like processes, can be captured. The big negatives all boil down to the same fundamental problem: the machine abstraction level is sometimes very far away from the application abstraction level. If it's a java application running, for instance, VProbes will sit there telling you: "java.exe is running!" Well, no kidding; you probably wanted to know, e.g., which method invocation it was in. We're thinking about ways to bridge that gap, but alas, have very little to offer for serious discussion at this time.
Keith, I guess looking over my post I did not really have a question... The above works ok for loading Emmett Vprobes on Windows so far. I do have a question though... What are we probing?... See more...
Keith, I guess looking over my post I did not really have a question... The above works ok for loading Emmett Vprobes on Windows so far. I do have a question though... What are we probing? The hypervisor? The VM? Why not just debug the VM from the inside? What is the theory behind this magical madness? PS. Post more videos!
The reason was because loading a Vprobe with double quotes did not work from the command line. I thought that maybe .NET Framework would handle it a little differently.
User-level is a bit rough, but still possible. dwarffrob.py is, tragically, a work in progress, but it's more aimed at finding structure offsets than symbol names. If you are looking for a pa... See more...
User-level is a bit rough, but still possible. dwarffrob.py is, tragically, a work in progress, but it's more aimed at finding structure offsets than symbol names. If you are looking for a particular user-level binary, you can harvest symbols in the guest (either via windbg.exe or /usr/bin/nm), and append the symbols in the binary to the file specified in vprobe.guestSyms. Next, you need to make sure that you're hitting the right process. This is best achieved by setting up one of the preloads for your guest and manually checking curprocname; e.g.: GUEST:UserLevelSym if (!strcmp(curprocname(), "targetBinary")) {...} You can also test curpid() if you like, etc. Unfortunately, this is all very manual. It would be nice both to automate the symbol harvesting, and to provide nicer notation for probing particular processes. There is also some difficulty with accessing linear addresses that the guest happens to have paged out: since VProbes is nervous about perturbing the state of the guest, we don't inject page faults on such accesses. So the probe fire will simply fail, leaving a warning in your vmware.log. Thanks, Keith
Chris, Sorry, what exactly was the question? Which of the above steps are broken for you? Keith
> $startinfo = new-object System.Diagnostics.ProcessStartInfo > $startinfo.FileName = $execBinary > $startinfo.Arguments = $connectParams + $commandParam + $vmxParam + $vpParam > $startinfo.Us... See more...
> $startinfo = new-object System.Diagnostics.ProcessStartInfo > $startinfo.FileName = $execBinary > $startinfo.Arguments = $connectParams + $commandParam + $vmxParam + $vpParam > $startinfo.UseShellExecute = $false > $startinfo.RedirectStandardOutput = $true > $process = [http://System.Diagnostics.Process|http://System.Diagnostics.Process]::Start($startinfo) > $process.WaitForExit() > $process.StandardOutput.ReadToEnd() > I'm not sure based on that, but this style of running vmrun seems a bit over the top. You can run it directly like you would from a command prompt. Is there a reason you didn't do that? I assume it's because of the path. Still you could run it sort of like this: $vmrun = Get-Command "C:\Program Files\VMware\VMware Server\vmrun.exe" . $vmrun $arg1 $arg2 $arg3 And this might be a bit easier to diagnose.
It is not possible with ESX 3.5. Regarding ESX 4 I'd ask your colleagues as those who know are bound by a NDA.
Is this possible today with ESX 3.5? I think the answer is no but I'm honestly not sure. How about with ESX 4?
I would like to use vprobes to perform some user-level probing. I'd be shocked if someone hasn't aready done the legwork required to make this happen (aka making finding the linear address easie... See more...
I would like to use vprobes to perform some user-level probing. I'd be shocked if someone hasn't aready done the legwork required to make this happen (aka making finding the linear address easier), but I'm having trouble finding such a thing. The closest thing I have found is dwarffrob.py in vprobe-toolkit's bin dir... it's not what's required, but it's in the same city as the ballpark.
I would love to see more real life examples too... Think about this, when you re debugging C# code using Visual Studio, you re only stepping through your code. What if your code is good, but ... See more...
I would love to see more real life examples too... Think about this, when you re debugging C# code using Visual Studio, you re only stepping through your code. What if your code is good, but the CLR is JITTING it all wrong! In this case you will need to go lower and debug the CLRs interaction with the operating system. The way I understand it, is that you could launch a debugger like softIce in the guest and everything might look OK, but until you launch a debugger a lower layer and point it at the hypervisor , you will never find out that the way the hypervisor is handling Intels and AMDs virtual helper instructions differently, possibly causing the awry behavior.