Coder Social home page Coder Social logo

panda-re / panda Goto Github PK

View Code? Open in Web Editor NEW
2.4K 135.0 466.0 391.19 MB

Platform for Architecture-Neutral Dynamic Analysis

Home Page: https://panda.re

License: Other

Python 6.39% Shell 1.14% Makefile 0.30% C 85.41% C++ 5.10% Haxe 0.47% Objective-C 0.11% Assembly 0.46% Perl 0.30% Batchfile 0.01% GDB 0.01% Emacs Lisp 0.01% NSIS 0.01% GLSL 0.01% HTML 0.02% SmPL 0.01% Smarty 0.01% Dockerfile 0.02% Rust 0.25% Vim Script 0.01%
reverse-engineering dynamic-analysis qemu pandare pypanda

panda's Introduction

PANDA

Test Suite Publish Docker Container and Update Pypanda Docs

PANDA is an open-source Platform for Architecture-Neutral Dynamic Analysis. It is built upon the QEMU whole system emulator, and so analyses have access to all code executing in the guest and all data. PANDA adds the ability to record and replay executions, enabling iterative, deep, whole system analyses. Further, the replay log files are compact and shareable, allowing for repeatable experiments. A nine billion instruction boot of FreeBSD, e.g., is represented by only a few hundred MB. PANDA leverages QEMU's support of thirteen different CPU architectures to make analyses of those diverse instruction sets possible within the LLVM IR. In this way, PANDA can have a single dynamic taint analysis, for example, that precisely supports many CPUs. PANDA analyses are written in a simple plugin architecture which includes a mechanism to share functionality between plugins, increasing analysis code re-use and simplifying complex analysis development.

It is currently being developed in collaboration with MIT Lincoln Laboratory, NYU, and Northeastern University. PANDA is released under the GPLv2 license.


Notable Branches

We have two primary branches of PANDA: dev for development and stable for stable+versioned releases. To learn more about the differences between these branches and version numbers, visit our wiki. In general, PANDA resources (i.e., docker containers and documentation) are based off the dev branch. We recommend using the stable branch if you're going to fork the project and later pull in updates.

Building

Quickstart: Docker

The latest version of PANDA's master branch is automatically built as a two docker images based on Ubuntu 20.04 and published to Docker Hub. Most users will want to use the panda container which has PANDA and PyPANDA installed along with their runtime dependencies, but no build artifacts or source code to reduce the size of the container. Developers interested in using Docker should use the pandadev container which has PANDA and PyPANDA installed, build and runtime dependencies for both, all build artifacts and source code and the contents of this repository in the /panda directory.

To use the panda container you can pull it from Docker Hub:

$ docker pull pandare/panda
$ docker run --rm pandare/panda panda-system-i386 --help

Or build from this repository:

$ DOCKER_BUILDKIT=1 docker build --target=panda -t panda .
$ docker run --rm panda panda-system-i386 --help

To use the pandadev container, you can pull it from Docker Hub:

$ docker pull pandare/pandadev
$ docker run --rm pandare/pandadev /panda/build/panda-system-i386 --help

Or build from this repository:

$ DOCKER_BUILDKIT=1 docker build --target=developer -t pandadev .
$ docker run --rm pandadev panda-system-i386 --help

Quickstart: Python pip

The Python interface to PANDA (also known as pypanda) can be installed from PIP by running pip3 install pandare. This will install everything you need for python-based PANDA analyses, but not stand-alone PANDA binaries. This package is not automatically updated so it may fall behind the master branch of PANDA. The distributed binaries are only tested on 64-bit Ubuntu 18.04 and other architectures/versions are unlikely to work. You can also install pypanda by building PANDA and then running python3 setup.py install from the directory panda/panda/python/core.

Debian, Ubuntu

Because PANDA has a few dependencies, we've encoded the build instructions into the install_ubuntu.sh. The script should work on the latest Debian stable/Ubuntu LTS versions. If you wish to build PANDA manually, you can also check the step-by-step instructions in the documentation directory.

We currently only vouch for buildability on the latest Debian stable/Ubuntu LTS, but we welcome pull requests to fix issues with other distros. For other distributions, it should be straightforward to translate the apt-get commands into whatever package manager your distribution uses.

Note that if you want to use our LLVM features (mainly the dynamic taint system), you will need to install LLVM 11 from OS packages or compiled from source. On Ubuntu this should happen automatically via install_ubuntu.sh. Additionally, it is strongly recommended that you only build PANDA as 64bit binary. Creating a 32bit build should be possible, but best avoided. See the limitations section for details.

Arch Linux

The install_arch.sh has been contributed for building PANDA on Arch Linux. Currently, the script has only been tested on Arch Linux 4.17.5-1-MANJARO. You can also find step-by-step instructions for building on Arch in the documentation directory.

MacOS

Building on Mac is less well-tested, but has been known to work. There is a script, install_osx.sh to build under OS X. The script uses homebrew to install the PANDA dependencies. As homebrew is known to be very fast in deprecating support for older versions of OS X and supported packages, expect this to be broken.

Installation

After successfully building PANDA, you can copy the build to a system-wide location by running make install. The default installation path is /usr/local. You can specify an alternate installation path through the prefix configuration option. E.g. --prefix=/opt/panda. Note that your system must have chrpath installed in order for make install to succeed.

If the bin directory containing the PANDA binaries is in your PATH environment variable, then you can run PANDA similarly to QEMU:

panda-system-i386 -m 2G -hda guest.img -monitor stdio

Limitations

LLVM Support

PANDA uses the LLVM architecture from the S2E project. This allows translating the TCG intermediate code representation used by QEMU, to LLVM IR. The latter has the advantages of being easier to work with, as well as platform independent. This enables the implementation of complex analyses like the taint2 plugin. The S2E files used by PANDA to support taint analysis have been updated to work with LLVM 11.

Cross-architecture record/replay

Great effort is put to maintain the PANDA trace format stable so that existing traces remain replayable in the future. Changes that will break existing traces are avoided. However, currently, record/replay is only guaranteed between PANDA builds of the same address length. E.g. you can't replay a trace captured on a 32bit build of PANDA on a 64bit of PANDA. The reason for this is that some raw pointers managed to creep into the trace format (see headers in panda/rr).

Given the memory limitations of 32bit builds, almost all PANDA users use 64bit. As a result, this issue should affect only a tiny minority of users. This is also supported by the fact that the issue remained unreported for a long time (>3 years). Therefore, when a fix is to be implemented, it may be assessed that migrating existing recordings captured by 32bit builds is not worth the effort.

For this, it is strongly recommended that you only create and use 64bit builds of PANDA. If you happen to already have a dataset of traces captured by a 32bit build of PANDA, you should contact the community ASAP to discuss possible options.


Documentation and Support

PANDA manual

PANDA currently supports whole-system record/replay execution, as well as time-travel debugging, of x86, x86_64, and ARM guests. Other architectures (mips, mipsel, ppc) may be run under PANDA without record/replay support. Details about the implementation and use of PANDA can be found in the PANDA manual. Some of the topics covered are:

Documentation for individual plugins is provided by the README.md file in the plugin directory. See panda/plugins directory.

Support

If you need help with PANDA, or want to discuss the project, you can request an invite to our Slack channel here or join the PANDA mailing list.


Publications

  • [1] B. Dolan-Gavitt, T. Leek, J. Hodosh, W. Lee. Tappan Zee (North) Bridge: Mining Memory Accesses for Introspection. 20th ACM Conference on Computer and Communications Security (CCS), Berlin, Germany, November 2013.

  • [2] R. Whelan, T. Leek, D. Kaeli. Architecture-Independent Dynamic Information Flow Tracking. 22nd International Conference on Compiler Construction (CC), Rome, Italy, March 2013.

  • [3] B. Dolan-Gavitt, J. Hodosh, P. Hulin, T. Leek, R. Whelan. Repeatable Reverse Engineering with PANDA. 5th Program Protection and Reverse Engineering Workshop, Los Angeles, California, December 2015.

  • [4] M. Stamatogiannakis, P. Groth, H. Bos. Decoupling Provenance Capture and Analysis from Execution. 7th USENIX Workshop on the Theory and Practice of Provenance, Edinburgh, Scotland, July 2015.

  • [5] B. Dolan-Gavitt, P. Hulin, T. Leek, E. Kirda, A. Mambretti, W. Robertson, F. Ulrich, R. Whelan. LAVA: Large-scale Automated Vulnerability Addition. 37th IEEE Symposium on Security and Privacy, San Jose, California, May 2016.


Acknowledgements

This material is based upon work supported under Air Force Contract No. FA8721-05-C-0002 and/or FA8702-15-D-0001. Any opinions, findings, conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the U.S. Air Force.

panda's People

Contributors

afaerber avatar agraf avatar aik avatar aliguori avatar andrewfasano avatar aurel32 avatar avikivity avatar balrog-kun avatar berrange avatar blueswirl avatar bonzini avatar dgibson avatar ebblake avatar edgarigl avatar ehabkost avatar elmarco avatar gongleiarei avatar jan-kiszka avatar jnsnow avatar jwrdegoede avatar kevmw avatar kraxel avatar mstsirkin avatar pete128 avatar phulin avatar pm215 avatar rth7680 avatar stefanharh avatar stweil avatar xanclic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

panda's Issues

android taint support

Hi,
I find PANDA is a great analysis platform since it supports many archs, so I want to do some Android taint analysis experiments with PANDA's taint analysis plugin-PIRATE. But I found that in taint.cpp there was a function called "guest_hypercall_callback()", which invoked the "enable_taint()" function. But in guest_hypercall_callback(), code seems to not support ARM as follows:
int guest_hypercall_callback(CPUState *env){

ifdef TARGET_I386

target_ulong buf_start = env->regs[R_EBX];
target_ulong buf_len = env->regs[R_ECX];
if (env->regs[R_EAX] == 7 || env->regs[R_EAX] == 8){
    if (!taintEnabled){
        printf("Taint plugin: Label operation detected\n");
        printf("Enabling taint processing\n");
        taintJustEnabled = true;
        taintEnabled = true;
        enable_taint();
    }

endif // TARGET_I386

return 1;

}

So, it seems that this taint plugin doesn't support ARM platform, or on ARM, there is anthor way to start analysis?

Best regards.
B. Zhang

libdwarf: no such file or directory

So it seems like I'm already too dump for a simple build...
I'm trying to build panda on my kali linux and had several issues with installing, all in all I did a lot self-fixing with more or less working results and now when I try to build panda I get this message 3 times. If someone is interested in the complete log, I will add it.
What is libdwarf? I don't seem to find anything matching in the list of panda's prerequisites...

Install Panda on CentOS 7(glib2.0 required)

When I tried to install panda on CentOS 7, I encountered error, the following is output :

$ ./build.sh 
Building API for plugin sample ... Done!
Building API for plugin taint ... Done!
Building API for plugin taint2 ... Done!
Building API for plugin callstack_instr ... Done!
Building API for plugin bir ... Done!
Building API for plugin osi ... Done!
Building API for plugin osi_linux ... Done!
Building API for plugin pri ... Done!
Building API for plugin pri_dwarf ... Done!
Building API for plugin wintrospection ... Done!
panda_plugins/dead_data/dead_data.proto
panda_plugins/taint2/taint2.proto
panda_plugins/callstack_instr/callstack_instr.proto
panda_plugins/bir/bir.proto
panda_plugins/tainted_branch/tainted_branch.proto
panda_plugins/asidstory/asidstory.proto
panda_plugins/file_taint/file_taint.proto
panda_plugins/win7proc/win7proc.proto
panda_plugins/ida_taint2/ida_taint2.proto
panda_plugins/tainted_instr/tainted_instr.proto
panda_plugins/pri_dwarf/pri_dwarf.proto
panda_plugins/pri_taint/pri_taint.proto
generating protobuf code with protoc-c
No suitable LLVM found -- LLVM SUPPORT IS DISABLED
glib-2.0 required to compile QEMU

However, I have installed glib on my CentOS 7.

rpm -qa | grep glib
glibc-common-2.17-106.el7_2.6.x86_64
glibc-devel-2.17-106.el7_2.6.x86_64
glibc-2.17-106.el7_2.6.x86_64
dbus-glib-0.100-7.el7.x86_64
glib2-2.42.2-5.el7.x86_64
glib-networking-2.42.0-1.el7.x86_64
glibc-headers-2.17-106.el7_2.6.x86_64

And I use the following "yum" commands to replace apt-get commands.

sudo yum groupinstall 'Development Tools'
(http://unix.stackexchange.com/questions/16422/cant-install-build-essential-on-centos)

sudo yum install nasm openssl-devel libpcap-devel subversion curl autoconf libtool \
  python-pip git protobuf-compiler protobuf-c-compiler  protobuf-c-devel protobuf-devel \
  glibc-devel elfutils-libelf-devel

qemu build fails on wheezy x86_64

I've built LLVM 3.3 according to the documentation (but not with the debug option). When I attempt to compile Panda I get the following:

  • nproc
  • make -j 1
    GEN config-host.h
    GEN trace.h
    GEN trace.c
    GEN config-target.h
    LINK x86_64-softmmu/qemu-system-x86_64
    ../slirp/misc.o: In function memset': /usr/include/x86_64-linux-gnu/bits/string3.h:82: warning: memset used with constant zero length parameter; this could be due to transposed parameters panda/panda_dynval_inst.o:(.data.rel.ro._ZTIN4llvm22PandaInstrFunctionPassE[_ZTIN4llvm22PandaInstrFunctionPassE]+0x10): undefined reference totypeinfo for llvm::FunctionPass'
    panda/panda_helper_call_morph.o:(.data.rel.ro._ZTIN4llvm26PandaCallMorphFunctionPassE[_ZTIN4llvm26PandaCallMorphFunctionPassE]+0x10): undefined reference to typeinfo for llvm::FunctionPass' tcg/tcg-llvm.o:(.data.rel.ro._ZTI17TJITMemoryManager[_ZTI17TJITMemoryManager]+0x10): undefined reference totypeinfo for llvm::SectionMemoryManager'
    collect2: error: ld returned 1 exit status
    make[1]: *** [qemu-system-x86_64] Error 1
    make: *** [subdir-x86_64-softmmu] Error 2

Suggestions?

Replay failure (rr_log.c:1027 assertion failed error, FOUND DISAGREEMENT! error)

Hi, I am learning how to use Panda's replay feature. After about 1/8 of instructions is replayed, repay stops with an error:

RR rr_assertion `0' failed at /home/panda/panda/qemu/rr_log.c:1027
Current log point:
{guest_instr_count=1440464191 pc=0x806e73c2, secondary=0x000000ff}
Next log entry type: RR_INPUT_4
Current replay point:
{guest_instr_count=1440464175 pc=0x806e7f2d, secondary=0x00000000}

Host: PANDA VM October 2015 (Debian)
Guest: Windows XP 2002 SP3 (qcow2 format created by qemu-img with -o compat=0.10)

Run qemu terminal command: /home/panda/panda/qemu/x86_64-softmmu/qemu-system-x86_64 -drive file=/home/panda/qcow/winXp-compat.qcow2,if=ide,cache=writeback -m 1024M -spice port=5001,disable-ticketing -vga qxl -monitor stdio

(then begin_record test2 to terminal, and end_record)

Replay qemu terminal command: home/panda/panda/qemu/x86_64-softmmu/qemu-system-x86_64 -drive file=/home/panda/qcow/winXp-compat.qcow2,if=ide,cache=writeback -m 1024M -vga qxl -monitor stdio -replay test2

I can start Windows XP with panda, problem is only with replay. Could you help me?

Record:
http://www.filedropper.com/test2-rr-snp
http://www.filedropper.com/test2-rr-nondet

I tried record new record and replay it. After 7% of record I got another error:

Ahead of log while looking for log entry of type RR_INPUT_4
{guest_instr_count=892953525 pc=0x806e79f0, secondary=0x8671d414}
RR_INPUT_4 from RR_CALLSITE_IO_READ_2
FOUND DISAGREEMENT!
Replay program point:
{guest_instr_count=892953530 pc=0x806e79f0, secondary=0x8658d14c}

Record program point:
{guest_instr_count=892953525 pc=0x806e79f0, secondary=0x8671d414}

guest instruction counts disagree
guest secondary info disagrees
ERROR: replay failed!

panda_install_bash.sh on 32bit Ubuntu 14.04: pycparser error

I tried to install panda on my Ubuntu 14.04 32bit system. I used the "panda_install_bash" script as recommended.
The Installation went well up to the point where it said:

Building API for plugin taint
Traceback (most recent call last):
File "../scripts/apigen.py", line 198, in
generate_api(plugin, plugin_dir)
File "../scripts/apigen.py", line 164, in generate_api
arglist = get_arglists(pf)
File "../scripts/apigen.py", line 24, in get_arglists
p = pyc.parse(pf)
File "/usr/local/lib/python2.7/dist-packages/pycparser/c_parser.py", line 146, in parse
debug=debuglevel)
File "/usr/local/lib/python2.7/dist-packages/pycparser/ply/yacc.py", line 265, in parse
return self.parseopt_notrack(input,lexer,debug,tracking,tokenfunc)
File "/usr/local/lib/python2.7/dist-packages/pycparser/ply/yacc.py", line 1047, in parseopt_notrack
tok = self.errorfunc(errtoken)
File "/usr/local/lib/python2.7/dist-packages/pycparser/c_parser.py", line 1680, in p_error
column=self.clex.find_tok_column(p)))
File "/usr/local/lib/python2.7/dist-packages/pycparser/plyparser.py", line 55, in parse_error
raise ParseError("%s: %s" % (coord, msg))
pycparser.plyparser.ParseError: /usr/include/stdint.h:57:1: before: _extension

In the /usr/include/stdint.h I have:

47 /* Unsigned. */
48 typedef unsigned char uint8_t;
49 typedef unsigned short int uint16_t;
50 #ifndef uint32_t_defined
51 typedef unsigned int uint32_t;
52 # define __uint32_t_defined
53 #endif
54 #if __WORDSIZE == 64
55 typedef unsigned long int uint64_t;
56 #else
57 __extension
58 typedef unsigned long long int uint64_t;
59 #endif

Any idea what this error is about?
Thanks for any hints!

Replays fail if VMWare Tools is installed

@rjwhelan noticed that if VMWare Tools is installed in the guest when a recording is taken, replays will fail. The point of failure is at RR_CALLSITE_IOPORT_READ, which leads me to suspect that it's caused by the VMWare backdoor, but we should still be able to handle this case.

Until then, note that the workaround is to just uninstall the VMWare tools (they don't do anything in PANDA anyway).

How can I go into qemu monitor model under nographic model

under the kvm desktop,I enter the command "#./qemu-system-x86_64 -hda /mnt/sdb/virtualmachines/debain-7_tut.qcow2 -m 512 -monitor stdio -net nic -net user ",and then enter into the (qemu) command line . but under nographic model,I ssh connect to host and enter the command "#./qemu-system-x86_64 -hda /mnt/sdb/virtualmachines/debain-7_tut.qcow2 -m 512 -monitor stdio -net nic -net user -nographic" and then the error has occurred,the error message as follow:
root@ubuntu:/home/software/panda/qemu/x86_64-softmmu# ./qemu-system-x86_64 -enable-kvm -hda /mnt/sdb/virtualmachines/debain-7_tut.qcow2 -m 512 -monitor stdio -net nic -net user -nographic
chardev: opening backend "stdio" failed: Device or resource busy
qemu: could not open serial device 'stdio': Success

some problems in runpandroid.py

i try it instead the long command,it is very simple.
but when i use it at api level 16,it seems has some problems.

line103:
if args.api_level > 18: # higher than 4.3
# have the NAND pretend to be a block device for ext4
fake_block_device = True 

whenapi_levelis 16 but it still worked.


and the -S maybe removed or in some args.

about begin_record : vm will resume

Hi,
Thanks for your guys work first!
Now my question is: when I tried process described in the docs/panda_ssltut.md,I was confused about "Taking the snapshot can take a long time.once the snapshot is made, the vm will resume." Is it means that I must wait till the vm resume?and then i can take the next step?
But I have stayed this step for a long time,it seems not to resume.it just shows"opening nondet log for write:.****.log"
Thanks for checking!
Any suggestions?
Thanks a lot!

Make syscalls plugin use PPP instead of implementing VMI callbacks

PANDA shouldn't have AFTER_FORK, AFTER_EXEC, or AFTER_CLONE callbacks.
Make them exported from the syscalls plugin using PPP.

Since the DroidScope Linux introspection code uses those callbacks, it must be ported to its own plugin.
The DroidScope code does invasive things like "get memory using PGD value" which switches out the PGD in env, does its memory access, and switches it back.

Scissors plugin trying to open wrong file

Scissors plugin is trying to open a nondet log file in order to copy it, but it passes only the base of the filename to fopen() without the "-rr-nondet.log" suffix. The result is a failed assert on fopen and therefore an early abort.
The bug is on the line 344 in scissors.c . It's a simple enough fix, but I wasn't sure if it should be applied in the plugin , or in the panda replay loader.

panda_disas: How to determine size of opcode ?

The doc says:

void panda_disas(FILE *out, void *code, unsigned long size);

Writes a textual representation of disassembly of the guest code at virtual address code of size bytes.

Ho do I determine the correct size of the instruction?

As PANDA_CB_INSN_EXEC and PANDA_CB_INSN_TRANSLATE do not provide the size of the instruction, I figured it must be in CPUState.

I looked into cpu.h and cpu-all.h but couldn't find anything.

Is there another approach or am I missing something?

How to taint a memory address and check its propagation in the guest machine

Hi,
I download the Panda and be able to install and run VM successfully. What I'm trying to do is taint a memory address in the guest machine, and check its propagation during the process running. For example, a simple function call of program, and there is a temp array defined in it, if I taint the address of the temp array, how could I check the propagate of this tainted data during the function call executing? I checked the doc and the description in the taint folder, but I can't find related explanations of how to do it. I wonder if someone could help? It would be better if could list detail command. Thanks!

Best,
michael chen

Segmentation Fault When Using file_taint

Hi!
I am trying file_taint plug-in, but I get some errors. I am not sure whether I am using the flags correctly.

I used TinyCore Linux, and use the following command to record:
~/panda/qemu/x86_64-softmmu/qemu-system-x86_64 ./vdisk.qcow2 -m 1024 -cdrom ~/Downloads/TinyCore-current.iso -vga std -monitor stdio
I begin_record tiny in panda, and I created a file named "foo123.txt" within the TinyCore OS, then end_record.
Then, I use the following command to replay with file_taint plug-in:
~/panda/qemu/x86_64-softmmu/qemu-system-x86_64 -replay tiny -m 1024 -vga std -monitor stdio -panda osi -panda osi_linux:kconf_group=lava32,kconf_file=~/panda/qemu/panda_plugins/osi_linux/kernelinfo.conf -panda syscalls2:profile=linux_x86 -panda file_taint:filename=foo123.txt,notaint

(I use lava32 because it is a relatively complete configuration. Missing attributes in the configuration will lead to osi_linux crash)

Then I get the following error message:
......
Success
QEMU 1.0,1 monitor - type 'help' for more information
(qemu) loading snapshot
... done.
opening nondet log for read : ./tiny-rr-nondet.log
Segmentation fault (core dumped)

Anyone has idea about what's wrong? Thanks!

Segfault accessing memory read buffer

Hi there,

I'm getting a segfault when accessing the buffer passed to mem_read_callback() function, e.g. using the panda_syscalls plugin.

This is the command I used:
x86_64-softmmu/qemu-system-x86_64 ~/vmi/vms/xp.qcow2 -monitor stdio -loadvm booted -panda-plugin x86_64-softmmu/panda_plugins/panda_syscalls.so

This is the error message in syslog:
kernel: [22643.333306] qemu-system-x86[29152]: segfault at 7fc0616231e0 ip 00007fc0616231e0 sp 00007fc05e420608 error 15

The host os is ubuntu 12.04. The guest os is windows xp sp2.

OT: Thanks for developing PANDA, it's exactly what I was looking for for my project.

about android taint on arm

Hi,
I have a question about taint:
in the paper——Repeatable Reverse Engineering for the Greater Good with PANDA the "Taint analysis" part, you have used it to analysis ARM replays.
But when I build PANDA successfully, I have not find panda_taint.so(which is necessary in tainting) in /qemu/arm-softmmu/panda_plugins as well in /i386-softmmu/panda_plugins.And README.md which is included in taint directory says that "hard device and network taint is now supported for x86/64 systems".
How do you use taint plugin to analysis arm system?
Thanks a lot!

Memory callbacks interfere with other callbacks

I noticed that if in a plugin I use PANDA_CB_VIRT_MEM_WRITE and PANDA_CB_VIRT_MEM_READ alone they work fine. However if I add another callback like PANDA_CB_BEFORE_BLOCK_TRANSLATE either the memory callbacks work or the before_block_translate one, but not all of them together. The final behavior is determined by the order in which I call panda_register_callback().

Is this due to the fact that panda_enable_memcb() adds some callbacks? My final goal is just to get the address of the basic block that is being executed when a memory operation is performed, so if there is another way that does not involve adding other callbacks, apart from memory read/write, it is ok for me.

Thank you

New QEMU savevm version

The current version of the snapshot format does not include a length field for its sections. This is logical for loadvm where any missing device is fatal but not for replay where only core devices and devices tracked by plug-ins are needed. It would also be nice to be able to include plug in state information in a snapshot, eg the FD tracker's state or DroidScope's state, without requiring them to be active on loading the snapshot.

plugin-specific code included by pandalog.c

Some plugin-specific code has slipped into pandalog_print.c and pandalog_print.h. This makes enabling specific plugins in config.panda mandatory. Some kind of refactoring is required to remove this artificial requirement.

Steps to reproduce.

Disable the following plugins in config.panda:

  • taint
  • taint2
  • tainted_branch
  • file_taint
  • ida_taint
  • ida_taint2
  • tainted_instr

Run make distclean && ./build.sh from the qemu directory.

Compilation of pandalog.c fails:

In file included from /home/user/panda/qemu/panda/pandalog.c:10:0:
/home/user/panda/qemu/panda/pandalog_print.h:17:22: error: unknown type name ‘Panda__SrcInfo’
 void pprint_src_info(Panda__SrcInfo *si);
                      ^
/home/user/panda/qemu/panda/pandalog_print.h:18:42: error: unknown type name ‘Panda__TaintQueryUniqueLabelSet’
 void pprint_taint_query_unique_label_set(Panda__TaintQueryUniqueLabelSet *tquls);
                                          ^
/home/user/panda/qemu/panda/pandalog_print.h:19:25: error: unknown type name ‘Panda__TaintQuery’
 void pprint_taint_query(Panda__TaintQuery *tq);
                         ^
/home/user/panda/qemu/panda/pandalog_print.h:20:35: error: unknown type name ‘Panda__TaintQueryHypercall’
 void pprint_taint_query_hypercall(Panda__TaintQueryHypercall *tqh);
                                   ^
/home/user/panda/qemu/panda/pandalog_print.h:21:28: error: unknown type name ‘Panda__TaintedBranch’
 void pprint_tainted_branch(Panda__TaintedBranch *tb);
                            ^
/home/user/panda/qemu/panda/pandalog_print.h:22:27: error: unknown type name ‘Panda__TaintedInstr’
 void pprint_tainted_instr(Panda__TaintedInstr *tb);
                           ^
/home/user/panda/qemu/rules.mak:24: recipe for target 'panda/pandalog.o' failed

build.sh fails with an AttributeError for ArrayDecl

I followed the directions on how to build Panda and got everything built. When I run build.sh however, I get the following error:

skerr@gravel:~/panda/qemu$ ./build.sh 
Building API for plugin sample
Traceback (most recent call last):
  File "../scripts/apigen.py", line 198, in <module>
    generate_api(plugin, plugin_dir)
  File "../scripts/apigen.py", line 164, in generate_api
    arglist = get_arglists(pf)
  File "../scripts/apigen.py", line 33, in get_arglists
    for arg in fundec.args.params:
AttributeError: 'ArrayDecl' object has no attribute 'args'
skerr@gravel:~/panda/qemu$ 

Could this be from Pycparser being updated since the directions were written or some other script updated? The function it is struggling to process is 'sample_function'.

qemu-system-x86_64: Could not open VM state file

Hello, every time I try to replay the recording moyix used to show PANDA's abilities in his post on Push the Red Button, I get the following error message:

loading snapshot
qemu-system-x86_64: Could not open VM state file
... done.
opening nondet log for read : ./spotify-rr-nondet.log
RR rr_assertion `rr_nondet_log->fp != NULL' failed at /home/frank/Downloads/panda-master/qemu/rr_log.c:1323
Current log point:

Current replay point:
{guest_instr_count=0 pc=0x00000000, secondary=0x00000000}

don't really get what the problem is, would appreciate help!

Update SSL tutorial

Since PANDA moved to detached snapshots, a few things about the SSL tutorial don't make sense any more, and should be updated. In particular, the procedure should change so that an additional snapshot is taken before execution, so we have something to go back to when we want to look up function names.

While I'm at it, I should extract the ssltut replay and put it on www.rrshare.org.

qemu-system-x86_64: -replay: invalid option

Hey, having a dumb issue here, every time I try to replay a recording, I get this error (and it is the only feedback I get from qemu):
qemu-system-x86_64: -replay: invalid option
I built it properly with build.sh without any errors so I don't really get whats going on now huh

Request taint analysis test case

Hi,

I find panda is an amazing project. I just download the panda code and install it. It runs very well. I can load some plugins, such as taint plugin. The problem is that when I load taint plugin, and the I run some program, I cannot see any change or output. So I want to ask you how to use the taint plugin? Can you give me some test case?

Thank you very much!

Best Regards,
Pengfei Sun

asidstory on debian wheezey - Segmentation fault

Hi!

When I run asidstory on replay from debian wheezey x86, it started to print asid, pc and proc entries, but after few thousands of instructions ends with Segmentation fault.

I run asidstory with this command:
panda/qemu/i386-softmmu/qemu-system-i386 -m 512 -replay rec_taint -panda 'osi;osi_linux:kconf_file=kernelinfo.conf,kconf_group=wheezy;asidstory'

On this replay I successfully run osi_test or tainted_instr plugins:

panda/qemu/i386-softmmu/qemu-system-i386 -m 512 -replay rec_taint -panda 'osi;osi_linux:kconf_file=kernelinfo.conf,kconf_group=wheezy;osi_test'

panda/qemu/i386-softmmu/qemu-system-i386 -hda wheezy.qcow2 -m 512 -replay rec_taint -panda 'osi;osi_linux:kconf_file=kernelinfo.conf,kconf_group=wheezy;syscalls2:profile=linux_x86;file_taint:filename=/home/user/license.txt,pos,first_instr=3854039;tainted_instr:summary=true' -pandalog taint_instr_summary_true.plog

I also created another replay to make me sure, that the problem is not in replay itself.

My kernelinfo.conf was created based on tutorial here

Asidstory works on replays from Windows7 32bit without any issue.

Here is replay , if you want to reproduce this issue.

Could you please fix this?

Thanks,
Richard

linux_osi: kernelinfo cannot be build on Debian 8 Jessie: error: ‘struct vfsmount’ has no member named ‘mnt_parent’

When following the step from qemu/panda_plugins/osi_linux/USAGE.md I get:

Makefile:10: *** mixed implicit and normal rules: deprecated syntax
/home/asdf/panda/qemu/panda_plugins/osi_linux/utils/kernelinfo/kernelinfo.c: In function ‘init_module’:
/home/asdf/panda/qemu/panda_plugins/osi_linux/utils/kernelinfo/kernelinfo.c:56:132: error: ‘struct vfsmount’ has no member named ‘mnt_parent’
 #define PRINT_OFFSET(structp, memb, cfgname) printk(KERN_INFO "%s.%s_offset = %d", cfgname, cp_memb(#memb), (int)((void *)&(structp->memb) - (void *)structp))
                                                                                                                                    ^
/home/asdf/panda/qemu/panda_plugins/osi_linux/utils/kernelinfo/kernelinfo.c:138:2: note: in expansion of macro ‘PRINT_OFFSET’
  PRINT_OFFSET(vfsmnt_p, mnt_parent,  "fs");
  ^
/home/asdf/panda/qemu/panda_plugins/osi_linux/utils/kernelinfo/kernelinfo.c:56:132: error: ‘struct vfsmount’ has no member named ‘mnt_mountpoint’
 #define PRINT_OFFSET(structp, memb, cfgname) printk(KERN_INFO "%s.%s_offset = %d", cfgname, cp_memb(#memb), (int)((void *)&(structp->memb) - (void *)structp))
                                                                                                                                    ^
/home/asdf/panda/qemu/panda_plugins/osi_linux/utils/kernelinfo/kernelinfo.c:139:2: note: in expansion of macro ‘PRINT_OFFSET’
  PRINT_OFFSET(vfsmnt_p, mnt_mountpoint, "fs");
  ^
make[4]: *** [/home/asdf/panda/qemu/panda_plugins/osi_linux/utils/kernelinfo/kernelinfo.o] Error 1
make[3]: *** [_module_/home/asdf/panda/qemu/panda_plugins/osi_linux/utils/kernelinfo] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2

The guest is a Debian 8 32bit.

scissors plugin exits with "ERROR: replay failed"

Using the April PANDA VM published in the PANDA blog (pandavm-20150413.tar.bz2) I have made a recording of an android target approx. 2.3 billion instructions long (the recording files are ~450 MB snapshot and a ~5 MB log).

The issue scenario is as follows:

  1. I verify that the captured replay is correct by running it again and again and watching it complete without errors.
  2. Using the "stringsearch" plugin on the replay, I identify an interesting region in the recording that is approx. its last 10% (from ~2.1 G instructions to ~2.28 G instructions)
  3. I copy the start and end GIC values from the stringsearch output, and then run the replay with various start and end values.
    • if start ~2.1G and end ~2.28 G (the range I really need) I always get "ERROR: replay failed" at the precise moment the execution reaches the GIC specified in the 'start' parameter.
    • Then I try to narrow down the problematic GIC range.
      • if start == 1000000 and end == 2000000, the scissors work
      • if start == 10000000 and end == 20000000, it crashes with a segfault
      • if start == 100000000 and end == 200000000, it reports "ERROR: replay failed" when the GIC = 99999998
      • if start == 0 and end ~2.1G, the scissors work
      • if start == 0 and end ~2.2G, the scissors work
      • if start == 100000000 and end ~2.2G, the scissors work
      • if start ~1G and end ~2.2G, it reports "ERROR: replay failed" when the GIC is slightly less than 1G

Please advise on how to debug and resolve such an issue.

debug code don't compile

OS - Debian 7
code version - last commit

  1. download, extract and run panda_install.bash - ok
  2. qemu/configure --enabled-debug - ok
  3. make - error

.....
CC i386-softmmu/kvmclock.o
LINK i386-softmmu/qemu-system-i386
/usr/bin/ld: panda/tubtf.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
panda/tubtf.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make[1]: *** [qemu-system-i386] Error 1
make: *** [subdir-i386-softmmu] Error 2

Required android image creation options

I am wondering if you can provide the command line options that you use to create android images. It seems like the qemu ini files created for my images are not compatible with scripts/pandroidConverter.py causing the script to fail.

Thanks!

64-bit Windows guest support

QEMU 1.0.1 supports Windows 7 32-bit, but doesn't support Windows 7 64-bit. As of today, I'm not aware of this support in the current version of QEMU either. If 64-bit support is missing for Windows 7, is it likely missing for Windows 8 also. We need to track this bug down, or merge a fix in once someone else in the community does.

Relevant links:
https://bugs.launchpad.net/qemu/+bug/921208
http://lists.nongnu.org/archive/html/qemu-devel/2012-10/msg02350.html
http://lists.nongnu.org/archive/html/qemu-devel/2012-09/msg05066.html

don't compile panda/qemu/panda/tainted_instr.cpp

I do command
g++ -g -o tainted_instr tainted_instr.cpp pandalog.c pandalog.pb-c.c -L/usr/local/lib -lprotobuf-c -I .. -lz -D PANDALOG_READER -std=c++11

and see

/qemu/panda$ g++ -g -o tainted_instr tainted_instr.cpp pandalog.c pandalog.pb-c.c -L/usr/local/lib -lprotobuf-c -I .. -lz -D PANDALOG_READER -std=c++11
tainted_instr.cpp: In function 'int main(int, char**)':
tainted_instr.cpp:54:36: error: 'Panda__LogEntry' has no member named 'n_callstack'
tainted_instr.cpp:55:22: error: 'Panda__LogEntry' has no member named 'taint_query_unique_label_set'
tainted_instr.cpp:56:22: error: 'Panda__LogEntry' has no member named 'taint_query'
tainted_instr.cpp:70:22: error: 'Panda__LogEntry' has no member named 'n_callstack'
tainted_instr.cpp:71:61: error: 'Panda__LogEntry' has no member named 'n_callstack'
tainted_instr.cpp:73:34: error: 'Panda__LogEntry' has no member named 'n_callstack'
tainted_instr.cpp:74:50: error: 'Panda__LogEntry' has no member named 'callstack'
tainted_instr.cpp:75:36: error: 'Panda__LogEntry' has no member named 'n_callstack'
tainted_instr.cpp:84:22: error: 'Panda__LogEntry' has no member named 'taint_query_unique_label_set'
tainted_instr.cpp:85:88: error: 'Panda__LogEntry' has no member named 'taint_query_unique_label_set'
tainted_instr.cpp:87:34: error: 'Panda__LogEntry' has no member named 'taint_query_unique_label_set'
tainted_instr.cpp:88:41: error: 'Panda__LogEntry' has no member named 'taint_query_unique_label_set'
tainted_instr.cpp:93:18: error: 'Panda__LogEntry' has no member named 'taint_query'
tainted_instr.cpp:94:42: error: 'Panda__LogEntry' has no member named 'taint_query'

May be I something do wrong but I think it is because of the lack of initialization in panda/qemu/panda_plugins/tainted_instr/tainted_instr.proto.

Make PANDA changes to QEMU patchfiles instead of source

Moving the PANDA changes to QEMU to patchfiles would make it easier to update QEMU used by PANDA when needed, which will allow for more and better functionality in analysis.

Examples of new functionality that has been added to QEMU that isn't in PANDA includes things such as USB and PCI Passthrough support. Both of these things can be very useful when analyzing more advanced applications.

Don't force GCC 4.7

The build.sh script is forcing gcc/g++ 4.7. There is no need of doing that. Instead, use $(CC) and $(CXX)

tainted_instructions tutorial is broken

I tried to do some experiments with the taint plugin with my own recordings. I encountered some issues so I went back to the tainted_instructions tutorial. I tried to reproduce it with the current version of PANDA but it's failing (see error).
Is the tainting plugin broken or am I missing something?

$ ~/git/panda/qemu/x86_64-softmmu/qemu-system-x86_64 -m 128 -replay sshksci -display none -panda callstack_instr -panda stringsearch -panda taint:tainted_instructions=1 -panda tstringsearch

adding /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_callstack_instr.so to panda_plugin_files 0
adding /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_stringsearch.so to panda_plugin_files 1
Adding PANDA arg taint:tainted_instructions=1.
adding /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_taint.so to panda_plugin_files 2
adding /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_tstringsearch.so to panda_plugin_files 3
loading /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_callstack_instr.so
Initializing plugin callstack_instr
Success
loading /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_stringsearch.so
Initializing plugin stringsearch
panda_require: callstack_instr
panda_load_plugin: /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_callstack_instr.so already loaded
stringsearch: added string of length 44 to search set
Success
loading /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_taint.so
Initializing taint plugin
taint_label_mode=1
Taint: running in byte labeling mode.
max_taintset_card = 0
max_taintset_compute_number = 0
compute_is_delete = 0
taint_label_incoming_network_traffic = 0
taint_query_outgoing_network_traffic = 0
tainted_pointer = 1
tainted_instructions = 1
done initializing taint plugin
Success
loading /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_tstringsearch.so
Initializing tstringsearch
panda_require: stringsearch
panda_load_plugin: /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_stringsearch.so already loaded
panda_require: taint
panda_load_plugin: /home/federico/git/panda/qemu/x86_64-softmmu/panda_plugins/panda_taint.so already loaded
Success
loading snapshot
... done.

Logging all cpu states
CPU #0:
EAX=ffffffff EBX=00000003 ECX=0000001c EDX=0000001e
ESI=b886baf0 EDI=b886baf0 EBP=b886a030 ESP=bfcd0080
EIP=b75846a4 EFL=00200202 [-------] CPL=3 II=0 A20=1 SMM=0 HLT=0
ES =007b 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
CS =0073 00000000 ffffffff 00cffa00 DPL=3 CS32 [-R-]
SS =007b 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
DS =007b 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
FS =0000 00000000 00000000 00000000
GS =0033 b737a940 ffffffff 00dff300 DPL=3 DS   [-WA]
LDT=0000 00000000 00000000 00008200 DPL=0 LDT
TR =0080 c7ef0780 0000206b 00008900 DPL=0 TSS32-avl
GDT=     c7eeb000 000000ff
IDT=     c13de000 000007ff
CR0=80050033 CR2=b757cee0 CR3=05234000 CR4=000006f0
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 
DR6=0000000000000000 DR7=0000000000000000
EFER=0000000000000800
FCW=037f FSW=0000 [ST=0] FTW=ff MXCSR=00001f80
FPR0=00000000d9e108d0 0000 FPR1=00000000453ff1ef 0000
FPR2=00000000817f3523 0000 FPR3=000000001474d45b 0000
FPR4=0000000030f3c130 0000 FPR5=6c1794c02cc234ac 0000
FPR6=000000006d26dadf 4004 FPR7=00000000ffffffff 4004
XMM00=00000000000000000000000000000000 XMM01=504f0074696e695f4c53534e45504f00
XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000
XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000
XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000
opening nondet log for read :   ./sshksci-rr-nondet.log
./sshksci-rr-nondet.log:  382 of 270906 (0.14%) bytes, 665907 of 18334409 (3.63%) instructions processed.
./sshksci-rr-nondet.log:  712 of 270906 (0.26%) bytes, 1487981 of 18334409 (8.12%) instructions processed.
./sshksci-rr-nondet.log:  1042 of 270906 (0.38%) bytes, 2298502 of 18334409 (12.54%) instructions processed.
./sshksci-rr-nondet.log:  1372 of 270906 (0.51%) bytes, 3205021 of 18334409 (17.48%) instructions processed.
./sshksci-rr-nondet.log:  1702 of 270906 (0.63%) bytes, 4010912 of 18334409 (21.88%) instructions processed.
./sshksci-rr-nondet.log:  2032 of 270906 (0.75%) bytes, 4809044 of 18334409 (26.23%) instructions processed.
./sshksci-rr-nondet.log:  2362 of 270906 (0.87%) bytes, 5620639 of 18334409 (30.66%) instructions processed.
./sshksci-rr-nondet.log:  2692 of 270906 (0.99%) bytes, 6336562 of 18334409 (34.56%) instructions processed.
./sshksci-rr-nondet.log:  3022 of 270906 (1.12%) bytes, 7151372 of 18334409 (39.01%) instructions processed.
./sshksci-rr-nondet.log:  3148 of 270906 (1.16%) bytes, 7413446 of 18334409 (40.43%) instructions processed.
./sshksci-rr-nondet.log:  3478 of 270906 (1.28%) bytes, 7948714 of 18334409 (43.35%) instructions processed.
./sshksci-rr-nondet.log:  3808 of 270906 (1.41%) bytes, 8757322 of 18334409 (47.76%) instructions processed.
./sshksci-rr-nondet.log:  4138 of 270906 (1.53%) bytes, 9671622 of 18334409 (52.75%) instructions processed.
./sshksci-rr-nondet.log:  4468 of 270906 (1.65%) bytes, 10411454 of 18334409 (56.79%) instructions processed.
./sshksci-rr-nondet.log:  4798 of 270906 (1.77%) bytes, 11132953 of 18334409 (60.72%) instructions processed.
./sshksci-rr-nondet.log:  5128 of 270906 (1.89%) bytes, 11959282 of 18334409 (65.23%) instructions processed.
./sshksci-rr-nondet.log:  5458 of 270906 (2.01%) bytes, 12169113 of 18334409 (66.37%) instructions processed.
./sshksci-rr-nondet.log:  5788 of 270906 (2.14%) bytes, 12783693 of 18334409 (69.73%) instructions processed.
./sshksci-rr-nondet.log:  6118 of 270906 (2.26%) bytes, 13349361 of 18334409 (72.81%) instructions processed.
./sshksci-rr-nondet.log:  6851 of 270906 (2.53%) bytes, 13867726 of 18334409 (75.64%) instructions processed.
./sshksci-rr-nondet.log:  7165 of 270906 (2.64%) bytes, 14054150 of 18334409 (76.65%) instructions processed.
./sshksci-rr-nondet.log:  7193 of 270906 (2.66%) bytes, 14064154 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7221 of 270906 (2.67%) bytes, 14064172 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7249 of 270906 (2.68%) bytes, 14064172 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7277 of 270906 (2.69%) bytes, 14064184 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7305 of 270906 (2.70%) bytes, 14064184 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7333 of 270906 (2.71%) bytes, 14064196 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7361 of 270906 (2.72%) bytes, 14064196 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7389 of 270906 (2.73%) bytes, 14064222 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7417 of 270906 (2.74%) bytes, 14064222 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7445 of 270906 (2.75%) bytes, 14064237 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7473 of 270906 (2.76%) bytes, 14064237 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7501 of 270906 (2.77%) bytes, 14064265 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7529 of 270906 (2.78%) bytes, 14064265 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7557 of 270906 (2.79%) bytes, 14064317 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7585 of 270906 (2.80%) bytes, 14064317 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7613 of 270906 (2.81%) bytes, 14064334 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7641 of 270906 (2.82%) bytes, 14064334 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7669 of 270906 (2.83%) bytes, 14064367 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7697 of 270906 (2.84%) bytes, 14064367 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7725 of 270906 (2.85%) bytes, 14064384 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7753 of 270906 (2.86%) bytes, 14064384 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7781 of 270906 (2.87%) bytes, 14064387 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7809 of 270906 (2.88%) bytes, 14064387 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7837 of 270906 (2.89%) bytes, 14064398 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7865 of 270906 (2.90%) bytes, 14064398 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7893 of 270906 (2.91%) bytes, 14064404 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7921 of 270906 (2.92%) bytes, 14064404 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7949 of 270906 (2.93%) bytes, 14064421 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  7977 of 270906 (2.94%) bytes, 14064421 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8005 of 270906 (2.95%) bytes, 14064424 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8033 of 270906 (2.97%) bytes, 14064424 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8061 of 270906 (2.98%) bytes, 14064450 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8089 of 270906 (2.99%) bytes, 14064450 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8117 of 270906 (3.00%) bytes, 14064454 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8145 of 270906 (3.01%) bytes, 14064454 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8173 of 270906 (3.02%) bytes, 14064506 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8201 of 270906 (3.03%) bytes, 14064506 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8229 of 270906 (3.04%) bytes, 14064508 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8257 of 270906 (3.05%) bytes, 14064508 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8285 of 270906 (3.06%) bytes, 14064522 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8313 of 270906 (3.07%) bytes, 14064522 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8341 of 270906 (3.08%) bytes, 14064571 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8369 of 270906 (3.09%) bytes, 14064571 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8397 of 270906 (3.10%) bytes, 14064577 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8425 of 270906 (3.11%) bytes, 14064577 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8453 of 270906 (3.12%) bytes, 14064596 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8481 of 270906 (3.13%) bytes, 14064596 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8509 of 270906 (3.14%) bytes, 14064614 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8537 of 270906 (3.15%) bytes, 14064614 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8565 of 270906 (3.16%) bytes, 14064616 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8593 of 270906 (3.17%) bytes, 14064616 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8621 of 270906 (3.18%) bytes, 14064652 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8649 of 270906 (3.19%) bytes, 14064652 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8677 of 270906 (3.20%) bytes, 14064663 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  8705 of 270906 (3.21%) bytes, 14064663 of 18334409 (76.71%) instructions processed.
./sshksci-rr-nondet.log:  15681 of 270906 (5.79%) bytes, 14117883 of 18334409 (77.00%) instructions processed.
./sshksci-rr-nondet.log:  37478 of 270906 (13.83%) bytes, 14305470 of 18334409 (78.03%) instructions processed.
./sshksci-rr-nondet.log:  48349 of 270906 (17.85%) bytes, 14485400 of 18334409 (79.01%) instructions processed.
./sshksci-rr-nondet.log:  69939 of 270906 (25.82%) bytes, 14673070 of 18334409 (80.03%) instructions processed.
WRITE Match of str 0 at: instr_count=14856968 :  00000000b7551cd7 00000000b76dc0c0 000000000503d000
thestring = [tygertygerburningbrightintheforestofthenigh.]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 00 
search string is sitting in memory starting at 0xb897c136
READ Match of str 0 at: instr_count=14857702 :  00000000b74cb385 00000000b722c9b6 000000000503d000
thestring = [,tygertygerburningbrightintheforestofthenigh]
2c 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 
WRITE Match of str 0 at: instr_count=14857702 :  00000000b74cb385 00000000b722c9b6 000000000503d000
thestring = [,tygertygerburningbrightintheforestofthenig.]
2c 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 00 
READ Match of str 0 at: instr_count=14861371 :  00000000b76d1fee 00000000b722c9d1 000000000503d000
thestring = [..,tygertygerburningbrightintheforestoftheni]
00 00 2c 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 
WRITE Match of str 0 at: instr_count=14861371 :  00000000b76d1fee 00000000b722c9d1 000000000503d000
thestring = [...tygertygerburningbrightintheforestofthen.]
10 00 00 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 00 
READ Match of str 0 at: instr_count=14866608 :  00000000c11ce65e 00000000c11660ac 0000000000000000
thestring = [...tygertygerburningbrightintheforestoftheni]
10 00 00 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 
WRITE Match of str 0 at: instr_count=14866608 :  00000000c11ce65e 00000000c11660ac 0000000000000000
thestring = [...tygertygerburningbrightintheforestofthen.]
00 00 00 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 00 
READ Match of str 0 at: instr_count=14866904 :  00000000c11d4ee2 00000000c11d43b6 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xc53be000
WRITE Match of str 0 at: instr_count=14866904 :  00000000c11d4ee2 00000000c11d43b6 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenigh.]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 00 
search string is sitting in memory starting at 0xc53bec50
./sshksci-rr-nondet.log:  93511 of 270906 (34.52%) bytes, 14891627 of 18334409 (81.22%) instructions processed.
READ Match of str 0 at: instr_count=14911492 :  00000000c11d40d0 00000000c11d1288 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xc53bec50
WRITE Match of str 0 at: instr_count=14911573 :  00000000c11d1b7e 00000000c11d0274 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xc6e5f000
./sshksci-rr-nondet.log:  102065 of 270906 (37.68%) bytes, 15089706 of 18334409 (82.30%) instructions processed.
READ Match of str 0 at: instr_count=15098575 :  00000000c11ce1a1 00000000c11d2279 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xc6e5f000
WRITE Match of str 0 at: instr_count=15098625 :  00000000c11ce1a1 00000000c11d22d0 0000000000000000
thestring = [./......./.\./..6<......6<.~"..../.../......]
1c 2f c5 f5 da 05 c1 cc 1f 2f c5 5c 1d 2f c5 a0 36 3c c5 00 00 00 00 a0 36 3c c5 7e 22 03 c1 f4 1c 2f c5 f4 1c 2f c5 1b 01 cd bf 00 
READ Match of str 0 at: instr_count=15098711 :  00000000c11ce1a1 00000000c11d22f0 0000000000000000
thestring = [./......./.\./..6<......6<.~"..../.../.....t]
1c 2f c5 1b 01 cd bf cc 1f 2f c5 5c 1d 2f c5 a0 36 3c c5 00 00 00 00 a0 36 3c c5 7e 22 03 c1 f4 1c 2f c5 f4 1c 2f c5 1c 01 cd bf 74 
WRITE Match of str 0 at: instr_count=15098718 :  00000000c11d22fd 00000000c1165944 0000000000000000
thestring = [4...................\.....q.j.q.........\..h]
34 02 cd bf a8 01 cd bf 03 00 00 00 00 00 00 00 00 00 00 00 5c 07 cd bf c4 9f 71 b7 6a e4 71 b7 00 00 00 00 00 00 00 00 5c 07 cd 68 
READ Match of str 0 at: instr_count=15099353 :  00000000b77095e1 00000000b7717621 0000000005234000
thestring = [4...................\.....q.j.q.........\..t]
34 02 cd bf a8 01 cd bf 03 00 00 00 00 00 00 00 00 00 00 00 5c 07 cd bf c4 9f 71 b7 6a e4 71 b7 00 00 00 00 00 00 00 00 5c 07 cd 74 
WRITE Match of str 0 at: instr_count=15099363 :  00000000b77095e1 00000000b771764d 0000000005234000
thestring = [...........#.E..Zr..vq.....................h]
07 cd bf 01 00 00 00 1b 01 cd bf 23 ba 45 b7 f8 5a 72 b7 18 76 71 b7 03 00 00 00 1b 01 cd bf 01 00 00 00 ff ff ff ff ff ff ff ff 68 
READ Match of str 0 at: instr_count=15099379 :  00000000b77095e1 00000000b7717656 0000000005234000
thestring = [...........#.E.....Vvq.....................t]
07 cd bf 01 00 00 00 1b 01 cd bf 23 ba 45 b7 87 07 cd bf 56 76 71 b7 03 00 00 00 1b 01 cd bf 01 00 00 00 ff ff ff ff ff ff ff ff 74 
WRITE Match of str 0 at: instr_count=15099388 :  00000000b77095e1 00000000b77176a4 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenigh.]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 b7 
search string is sitting in memory starting at 0xbfcd075c
READ Match of str 0 at: instr_count=15117767 :  00000000b770a107 00000000b7717cdc 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xbfcd075c
WRITE Match of str 0 at: instr_count=15117767 :  00000000b770a107 00000000b7717ce2 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenigh.]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 00 
search string is sitting in memory starting at 0xb8869ad8
./sshksci-rr-nondet.log:  107564 of 270906 (39.71%) bytes, 15222397 of 18334409 (83.03%) instructions processed.
./sshksci-rr-nondet.log:  132398 of 270906 (48.87%) bytes, 15404149 of 18334409 (84.02%) instructions processed.
WRITE Match of str 0 at: instr_count=15469751 :  00000000b7551cd7 00000000b76dc0c0 000000000503d000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xb897c136
READ Match of str 0 at: instr_count=15470485 :  00000000b74cb385 00000000b722c9b6 000000000503d000
thestring = [,tygertygerburningbrightintheforestofthenigh]
2c 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 
WRITE Match of str 0 at: instr_count=15470485 :  00000000b74cb385 00000000b722c9b6 000000000503d000
thestring = [,tygertygerburningbrightintheforestofthenig.]
2c 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 00 
READ Match of str 0 at: instr_count=15474154 :  00000000b76d1fee 00000000b722c9d1 000000000503d000
thestring = [..,tygertygerburningbrightintheforestoftheni]
00 00 2c 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 
WRITE Match of str 0 at: instr_count=15474154 :  00000000b76d1fee 00000000b722c9d1 000000000503d000
thestring = [...tygertygerburningbrightintheforestoftheni]
10 00 00 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 
READ Match of str 0 at: instr_count=15479391 :  00000000c11ce65e 00000000c11660ac 0000000000000000
thestring = [...tygertygerburningbrightintheforestoftheni]
10 00 00 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 
WRITE Match of str 0 at: instr_count=15479391 :  00000000c11ce65e 00000000c11660ac 0000000000000000
thestring = [...tygertygerburningbrightintheforestoftheni]
00 00 00 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 
READ Match of str 0 at: instr_count=15479687 :  00000000c11d4ee2 00000000c11d43b6 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xc53be000
WRITE Match of str 0 at: instr_count=15479687 :  00000000c11d4ee2 00000000c11d43b6 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenigh.]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 00 
search string is sitting in memory starting at 0xc53bec7d
READ Match of str 0 at: instr_count=15488204 :  00000000c11d40d0 00000000c11d1288 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xc53bec7d
WRITE Match of str 0 at: instr_count=15488285 :  00000000c11d1b7e 00000000c11d0274 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xc6e5f000
./sshksci-rr-nondet.log:  143456 of 270906 (52.95%) bytes, 15587531 of 18334409 (85.02%) instructions processed.
READ Match of str 0 at: instr_count=15733830 :  00000000c11ce1a1 00000000c11d2279 0000000000000000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xc6e5f000
WRITE Match of str 0 at: instr_count=15733880 :  00000000c11ce1a1 00000000c11d22d0 0000000000000000
thestring = [./......./.\./..6<......6<.~"..../.../......]
1c 2f c5 f5 da 05 c1 cc 1f 2f c5 5c 1d 2f c5 a0 36 3c c5 00 00 00 00 a0 36 3c c5 7e 22 03 c1 f4 1c 2f c5 f4 1c 2f c5 1b 01 cd bf 00 
READ Match of str 0 at: instr_count=15733966 :  00000000c11ce1a1 00000000c11d22f0 0000000000000000
thestring = [./......./.\./..6<......6<.~"..../.../.....t]
1c 2f c5 1b 01 cd bf cc 1f 2f c5 5c 1d 2f c5 a0 36 3c c5 00 00 00 00 a0 36 3c c5 7e 22 03 c1 f4 1c 2f c5 f4 1c 2f c5 1c 01 cd bf 74 
WRITE Match of str 0 at: instr_count=15733973 :  00000000c11d22fd 00000000c1165944 0000000000000000
thestring = [4...................\.....q.j.q.........\..h]
34 02 cd bf a8 01 cd bf 03 00 00 00 00 00 00 00 00 00 00 00 5c 07 cd bf fc a8 71 b7 6a e4 71 b7 00 00 00 00 00 00 00 00 5c 07 cd 68 
READ Match of str 0 at: instr_count=15734608 :  00000000b77095e1 00000000b7717621 0000000005234000
thestring = [4...................\.....q.j.q.........\..t]
34 02 cd bf a8 01 cd bf 03 00 00 00 00 00 00 00 00 00 00 00 5c 07 cd bf fc a8 71 b7 6a e4 71 b7 00 00 00 00 00 00 00 00 5c 07 cd 74 
WRITE Match of str 0 at: instr_count=15734618 :  00000000b77095e1 00000000b771764d 0000000005234000
thestring = [...........#.E..Zr..vq.....................h]
07 cd bf 01 00 00 00 1b 01 cd bf 23 ba 45 b7 f8 5a 72 b7 18 76 71 b7 03 00 00 00 1b 01 cd bf 01 00 00 00 ff ff ff ff ff ff ff ff 68 
READ Match of str 0 at: instr_count=15734634 :  00000000b77095e1 00000000b7717656 0000000005234000
thestring = [...........#.E.....Vvq.....................t]
07 cd bf 01 00 00 00 1b 01 cd bf 23 ba 45 b7 87 07 cd bf 56 76 71 b7 03 00 00 00 1b 01 cd bf 01 00 00 00 ff ff ff ff ff ff ff ff 74 
WRITE Match of str 0 at: instr_count=15734643 :  00000000b77095e1 00000000b77176a4 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenighx]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 78 
search string is sitting in memory starting at 0xbfcd075c
READ Match of str 0 at: instr_count=15751902 :  00000000b770a107 00000000b7717cdc 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xbfcd075c
WRITE Match of str 0 at: instr_count=15751902 :  00000000b770a107 00000000b7717ce2 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenigh.]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 00 
search string is sitting in memory starting at 0xb8869b10
READ Match of str 0 at: instr_count=15752506 :  00000000b76ff8ec 00000000b740cbf8 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xb8869ad8
READ Match of str 0 at: instr_count=15752506 :  00000000b76ff8ec 00000000b740cbfa 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xb8869b10
READ Match of str 0 at: instr_count=15752570 :  00000000b73aae46 00000000b76ff900 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xb8869b10
./sshksci-rr-nondet.log:  145001 of 270906 (53.52%) bytes, 15778528 of 18334409 (86.06%) instructions processed.
READ Match of str 0 at: instr_count=16052276 :  00000000b754d331 00000000b740e9b6 0000000005234000
thestring = [...tygertygerburningbrightintheforestoftheni]
00 00 00 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 
WRITE Match of str 0 at: instr_count=16052276 :  00000000b754d331 00000000b740e9b6 0000000005234000
thestring = [...tygertygerburningbrightintheforestofthen.]
00 00 00 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 00 
./sshksci-rr-nondet.log:  145488 of 270906 (53.70%) bytes, 16053340 of 18334409 (87.56%) instructions processed.
READ Match of str 0 at: instr_count=16088462 :  00000000b754d446 00000000b740e9b6 0000000005234000
thestring = [...tygertygerburningbrightintheforestoftheni]
00 00 00 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 
WRITE Match of str 0 at: instr_count=16088462 :  00000000b754d446 00000000b740e9b6 0000000005234000
thestring = [).`tygertygerburningbrightintheforestofthen.]
29 b9 60 74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 00 
./sshksci-rr-nondet.log:  146214 of 270906 (53.97%) bytes, 16171434 of 18334409 (88.20%) instructions processed.
READ Match of str 0 at: instr_count=16296193 :  00000000b73aae46 00000000b76fd492 0000000005234000
thestring = [tygertygerburningbrightintheforestofthenight]
74 79 67 65 72 74 79 67 65 72 62 75 72 6e 69 6e 67 62 72 69 67 68 74 69 6e 74 68 65 66 6f 72 65 73 74 6f 66 74 68 65 6e 69 67 68 74 
search string is sitting in memory starting at 0xb8869ad8
./sshksci-rr-nondet.log:  165636 of 270906 (61.14%) bytes, 16357229 of 18334409 (89.22%) instructions processed.
./sshksci-rr-nondet.log:  167229 of 270906 (61.73%) bytes, 16568563 of 18334409 (90.37%) instructions processed.
./sshksci-rr-nondet.log:  170211 of 270906 (62.83%) bytes, 16688392 of 18334409 (91.02%) instructions processed.
./sshksci-rr-nondet.log:  173568 of 270906 (64.07%) bytes, 16940647 of 18334409 (92.40%) instructions processed.
./sshksci-rr-nondet.log:  174233 of 270906 (64.31%) bytes, 17079150 of 18334409 (93.15%) instructions processed.
./sshksci-rr-nondet.log:  187799 of 270906 (69.32%) bytes, 17239933 of 18334409 (94.03%) instructions processed.
./sshksci-rr-nondet.log:  189181 of 270906 (69.83%) bytes, 17422568 of 18334409 (95.03%) instructions processed.
./sshksci-rr-nondet.log:  189914 of 270906 (70.10%) bytes, 17667311 of 18334409 (96.36%) instructions processed.
./sshksci-rr-nondet.log:  200000 of 270906 (73.83%) bytes, 17785766 of 18334409 (97.01%) instructions processed.
./sshksci-rr-nondet.log:  214870 of 270906 (79.32%) bytes, 17983775 of 18334409 (98.09%) instructions processed.
./sshksci-rr-nondet.log:  243566 of 270906 (89.91%) bytes, 18156575 of 18334409 (99.03%) instructions processed.
Infinite loop detected during replay, aborting.
{guest_instr_count=18334409 pc=0xc102439c, secondary=0xc7eedf80}
./sshksci-rr-nondet.log:  270880 of 270906 (99.99%) bytes, 18334409 of 18334409 (100.00%) instructions processed.
ERROR: replay failed!
Time taken was: 2 seconds.
Stats:
RR_INPUT_1 number = 0, size = 0 bytes
RR_INPUT_2 number = 0, size = 0 bytes
RR_INPUT_4 number = 900, size = 27000 bytes
RR_INPUT_8 number = 5824, size = 198016 bytes
RR_INTERRUPT_REQUEST number = 1303, size = 36484 bytes
RR_EXIT_REQUEST number = 0, size = 0 bytes
RR_SKIPPED_CALL number = 64, size = 9330 bytes
RR_DEBUG number = 0, size = 0 bytes
max_queue_len = 477
476 items on recycle list, 41888 bytes total
Replay completed successfully.
Logging all cpu states
CPU #0:
EAX=00000000 EBX=c14170ac ECX=c7eedf80 EDX=00000003
ESI=00000000 EDI=c13de000 EBP=0198a003 ESP=c13dbfd0
EIP=c102439c EFL=00000202 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =007b 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
CS =0060 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0068 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
DS =007b 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
FS =00d8 06a70000 ffffffff 008f9300 DPL=0 DS16 [-WA]
GS =00e0 c7ef2940 00000018 00409100 DPL=0 DS   [--A]
LDT=0000 00000000 00000000 00008200 DPL=0 LDT
TR =0080 c7ef0780 0000206b 00008900 DPL=0 TSS32-avl
GDT=     c7eeb000 000000ff
IDT=     c13de000 000007ff
CR0=8005003b CR2=0a0c1808 CR3=06d3f000 CR4=000006f0
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 
DR6=0000000000000000 DR7=0000000000000000
EFER=0000000000000800
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80
FPR0=6cf1688329512685 0000 FPR1=00000000d29d27b1 0000
FPR2=d780d7801db87f19 0000 FPR3=a400000040000000 0000
FPR4=5cd2d8569401b6c6 0000 FPR5=00000000fc6c0ea7 0000
FPR6=3d1c3d1c80893d1c 4004 FPR7=2800000007000000 4004
XMM00=00000000000000000000000000000000 XMM01=ffffff00ffffff00ffff000000000000
XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000
XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000
XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000
[1]    16754 abort (core dumped)  ~/git/panda/qemu/x86_64-softmmu/qemu-system-x86_64 -m 128 -replay sshksci    

PANDA-ize all platforms

We should implement the basic per-arch callbacks on all architectures supported by QEMU and make sure they build correctly. Currently this is a somewhat involved process; below I've listed what was necessary to add MIPS:

  1. Add register info to panda/guestarch.h

  2. Add TARGET_MIPS to tcg/tcg-llvm.cpp memory op array

  3. Add _panda suffixed versions in target-mips/op_helper.c

  4. Add the #ifdef LLVM global env in target-mips/translate.c

  5. Add to target-mips/op_helper.c

    #ifdef CONFIG_LLVM
    struct CPUMIPSState *env = 0;
    #endif
    
  6. include "panda_plugin.h" and "panda_helper_ipml.h" in target-mips/op_helper.c

  7. Add to target-mips/helper.c

    target_phys_addr_t cpu_get_phys_addr(CPUState *env, target_ulong addr){
        return cpu_get_phys_page_debug(env, addr);
    }
    
  8. Implement init_regs, get_cpustate_val, printreg, and printspec in panda/guestarch.c

  9. Add instruction callback to target-mips/translate.c

  10. #include "panda_helper_defs.h" in target-mips/helper.h

Perhaps some of this can be streamlined?

Compiling error on Debian Unstable (SID)

HI. I trying to build PANDA on my system. I'm using Bunsen Labs, which is a Debian with Openbox, but I'm using the unstable (sid) repositories instead of stable.

First thing I noted: The llvm versions in the repository goes grom 3.5 up to 3.9, no 3.3. I don't know yet why it's lock down to this version, but is there any specific reason?

The main question: I followed the panda_install.bash manually. Everything went well, except the optional part of llvm, until the last command ./build.sh. The complete log is in attached, but I'm pasting the last line with errors here:

  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/textfinder.o
  CXX   /home/user/src/panda/panda/qemu/x86_64-softmmu/panda_plugins/stringsearch.o
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_textfinder.so
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/textprinter.o
syscalls2.cpp:373:6: error: ‘vector’ in namespace ‘std’ does not name a template type
 std::vector<void (*)(CPUState*, target_ulong)> preExecCallbacks;
      ^
syscalls2.cpp: In function ‘void registerExecPreCallback(void (*)(CPUX86State*, target_ulong))’:
syscalls2.cpp:376:5: error: ‘preExecCallbacks’ was not declared in this scope
     preExecCallbacks.push_back(callback);
     ^
syscalls2.cpp: In function ‘int exec_callback(CPUX86State*, target_ulong)’:
syscalls2.cpp:411:35: error: ‘preExecCallbacks’ was not declared in this scope
         for(const auto callback : preExecCallbacks){
                                   ^
../panda.mak:42: recipe for target '/home/user/src/panda/panda/qemu/x86_64-softmmu/panda_plugins/syscalls2.o' failed
make[2]: *** [/home/user/src/panda/panda/qemu/x86_64-softmmu/panda_plugins/syscalls2.o] Error 1
Makefile:564: recipe for target 'plugin-syscalls2' failed
make[1]: *** [plugin-syscalls2] Error 2
make[1]: *** Waiting for unfinished jobs....
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/syscalls2.o
  PLUGIN  /home/user/src/panda/panda/qemu/x86_64-softmmu/panda_plugins/panda_stringsearch.so
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_textprinter.so
Makefile:89: recipe for target 'subdir-x86_64-softmmu' failed
make: *** [subdir-x86_64-softmmu] Error 2
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/gen_syscall_switch_enter_linux_arm.o
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/stringsearch.o
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/keyfind.o
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/gen_syscall_switch_return_linux_arm.o
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/gen_syscall_switch_enter_linux_x86.o
syscalls2.cpp:373:6: error: ‘vector’ in namespace ‘std’ does not name a template type
 std::vector<void (*)(CPUState*, target_ulong)> preExecCallbacks;
      ^
syscalls2.cpp: In function ‘void registerExecPreCallback(void (*)(CPUX86State*, target_ulong))’:
syscalls2.cpp:376:5: error: ‘preExecCallbacks’ was not declared in this scope
     preExecCallbacks.push_back(callback);
     ^
syscalls2.cpp: In function ‘int exec_callback(CPUX86State*, target_ulong)’:
syscalls2.cpp:411:35: error: ‘preExecCallbacks’ was not declared in this scope
         for(const auto callback : preExecCallbacks){
                                   ^
../panda.mak:42: recipe for target '/home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/syscalls2.o' failed
make[2]: *** [/home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/syscalls2.o] Error 1
make[2]: *** Waiting for unfinished jobs....
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/tls_prf.o
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_stringsearch.so
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/memstats.o
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_memstats.so
make[2]: Nothing to be done for 'all'.
make[2]: Nothing to be done for 'all'.
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/memdump.o
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/correlatetaps.o
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_memdump.so
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/memsnap.o
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_correlatetaps.so
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/bigrams.o
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_keyfind.so
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/tapindex.o
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_memsnap.so
make[2]: Nothing to be done for 'all'.
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/callstack_instr.o
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_bigrams.so
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_tapindex.so
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/textprinter_fast.o
  CXX   /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/tstringsearch.o
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_textprinter_fast.so
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_tstringsearch.so
Makefile:564: recipe for target 'plugin-syscalls2' failed
make[1]: *** [plugin-syscalls2] Error 2
make[1]: *** Waiting for unfinished jobs....
  PLUGIN  /home/user/src/panda/panda/qemu/i386-softmmu/panda_plugins/panda_callstack_instr.so
Makefile:89: recipe for target 'subdir-i386-softmmu' failed
make: *** [subdir-i386-softmmu] Error 2

I thing that making it works with Debian Sid will make it easier to support any Debian version from the one used to develop Panda til anyone that may come.

panda.make.err.txt

taint2 plugin breaks build for g++-4.9

I get this error when building PANDA using g++/gcc v4.9. The error occurs when compiling taint_ops.cpp using clang.

In file included from taint_ops.cpp:28:
In file included from /home/user/panda/llvm/include/llvm/IR/Constants.h:24:
In file included from /home/user/panda/llvm/include/llvm/ADT/APFloat.h:104:
In file included from /home/user/panda/llvm/include/llvm/ADT/APInt.h:18:
In file included from /home/user/panda/llvm/include/llvm/ADT/ArrayRef.h:14:
In file included from /home/user/panda/llvm/include/llvm/ADT/SmallVector.h:17:
In file included from /home/user/panda/llvm/include/llvm/Support/AlignOf.h:19:
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/cstddef:51:11: error: no member named 'max_align_t' in the global namespace
  using ::max_align_t;
        ~~^

Where can I download the system image specified in kernelinfo.conf?

Hi!
I get errors of unable to read kernel info when running the file taint plugin even after porting my system conf to the kernelinfo.conf file. I plan to switch to system specified in the kernelinfo.conf. Can you point me to where can I download these system images? For example, where can I download the "lava32" image: name = #1 SMP Debian 3.2.51-1 i686?

Thanks!

Newer QEMU

Are there any plans to move to newer QEMU releases?

Build panda qemu error with run CC=gcc-4.8 CXX=g++-4.8 ./build.sh

I followed the directions on how to build Panda and got everything built. When I run build.sh(root@ubuntu:/home/panda/panda/qemu# CC=gcc-4.8 CXX=g++-4.8 ./build.sh
) however, I get the following error:
In file included from taint_ops.cpp:28:
In file included from /home/panda/panda/llvm/include/llvm/IR/Constants.h:24:
In file included from /home/panda/panda/llvm/include/llvm/ADT/APFloat.h:104:
In file included from /home/panda/panda/llvm/include/llvm/ADT/APInt.h:18:
In file included from /home/panda/panda/llvm/include/llvm/ADT/ArrayRef.h:14:
In file included from /home/panda/panda/llvm/include/llvm/ADT/SmallVector.h:17:
/home/panda/panda/llvm/include/llvm/Support/AlignOf.h:19:10: fatal error: 'cstddef' file not found

include

     ^

1 error generated.
make[2]: *** [/home/panda/panda/qemu/arm-softmmu/panda_plugins/panda_taint2/llvm_taint_ops.bc] Error 1
make[1]: *** [plugin-taint2] Error 2
make[1]: *** Waiting for unfinished jobs....
CXX /home/panda/panda/qemu/i386-softmmu/panda_plugins/llvm_taint_lib.o
CXX /home/panda/panda/qemu/x86_64-softmmu/panda_plugins/taint.o
CXX /home/panda/panda/qemu/x86_64-softmmu/panda_plugins/llvm_taint_lib.o
PLUGIN /home/panda/panda/qemu/arm-softmmu/panda_plugins/panda_taint.so
make: *** [subdir-arm-softmmu] Error 2
make: *** Waiting for unfinished jobs....
PLUGIN /home/panda/panda/qemu/i386-softmmu/panda_plugins/panda_taint.so
make: *** [subdir-i386-softmmu] Error 2
PLUGIN /home/panda/panda/qemu/x86_64-softmmu/panda_plugins/panda_taint.so
make: *** [subdir-x86_64-softmmu] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.