Skip to content
Snippets Groups Projects
Commit d31b2315 authored by jdh8d's avatar jdh8d
Browse files

Added first tools that use the DB.

parent 44a1fbc4
No related branches found
No related tags found
No related merge requests found
...@@ -42,14 +42,15 @@ examples/memcpy.c -text ...@@ -42,14 +42,15 @@ examples/memcpy.c -text
examples/myhanoi.c -text examples/myhanoi.c -text
examples/print_ptr.c -text examples/print_ptr.c -text
examples/recover_example.c -text examples/recover_example.c -text
tools/db/drop_my_tables.sh -text
tools/db/pdb.create.tbl -text tools/db/pdb.create.tbl -text
tools/db/pdb.createprogram.tbl -text tools/db/pdb.createprogram.tbl -text
tools/db/pdb.drop.tbl -text tools/db/pdb.drop.tbl -text
tools/db/pdb_create_program_tables -text tools/db/pdb_create_program_tables.sh -text
tools/db/pdb_info -text tools/db/pdb_info.sh -text
tools/db/pdb_register -text tools/db/pdb_register.sh -text
tools/db/pdb_setup -text tools/db/pdb_setup.sh -text
tools/db/pdb_teardown -text tools/db/pdb_teardown.sh -text
tools/do_concolic.sh -text tools/do_concolic.sh -text
tools/generate_exe.sh -text tools/generate_exe.sh -text
tools/generate_io_baseline.sh -text tools/generate_io_baseline.sh -text
......
...@@ -63,6 +63,7 @@ clean: ...@@ -63,6 +63,7 @@ clean:
rm -Rf peasoup_executable_directory.* rm -Rf peasoup_executable_directory.*
rm -f strata.log.* rm -f strata.log.*
rm -f *.sym rm -f *.sym
if [ ! "X" = "X"${PGUSER} ]; then sh ../tools/db/drop_my_tables.sh; sh ../tools/db/pdb_setup.sh; fi
concclean: concclean:
rm -Rf concolic.files_* rm -Rf concolic.files_*
......
#!/bin/bash
psql << 'EOF'
CREATE LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION drop_tables(username IN VARCHAR) RETURNS void AS $$
DECLARE
statements CURSOR FOR
SELECT tablename FROM pg_tables
WHERE tableowner = username;
BEGIN
FOR stmt IN statements LOOP
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(stmt.tablename) || ' CASCADE;';
END LOOP;
END;
$$
LANGUAGE plpgsql;
EOF
psql -c "SELECT drop_tables('$PGUSER');"
CREATE TABLE program_info CREATE TABLE doip
( (
program_id SERIAL PRIMARY KEY, doip_id SERIAL PRIMARY KEY,
name text NOT NULL CHECK (name <> ''), confidence integer,
orig_program_id integer DEFAULT -1 tool_name text,
comment text
);
CREATE TABLE variant_info
(
schema_version_id integer DEFAULT 1,
variant_id SERIAL PRIMARY KEY,
name text NOT NULL CHECK (name <> ''),
orig_variant_id integer DEFAULT -1,
address_table_name text,
function_table_name text,
instruction_table_name text,
doip_id integer DEFAULT -1
); );
CREATE TABLE file_info CREATE TABLE file_info
( (
file_id SERIAL PRIMARY KEY, file_id SERIAL PRIMARY KEY,
orig_file_id integer DEFAULT -1,
url text NOT NULL CHECK (url <> ''), url text NOT NULL CHECK (url <> ''),
hash text, hash text,
arch text arch text,
type text DEFAULT 'ELF-Static',
doip_id integer DEFAULT -1
); );
CREATE TABLE program_dependency CREATE TABLE variant_dependency
( (
program_id integer REFERENCES program_info, variant_id integer REFERENCES variant_info,
file_id integer REFERENCES file_info file_id integer REFERENCES file_info,
doip_id integer DEFAULT -1
); );
CREATE TABLE #PROGNAME#_address CREATE TABLE #PROGNAME#_address
( (
address_id SERIAL PRIMARY KEY, address_id SERIAL PRIMARY KEY,
file_id integer REFERENCES file_info, file_id integer REFERENCES file_info,
vaddress_offset text vaddress_offset integer,
doip_id integer DEFAULT -1
); );
CREATE TABLE #PROGNAME#_function CREATE TABLE #PROGNAME#_function
( (
function_id SERIAL PRIMARY KEY, function_id SERIAL PRIMARY KEY,
file_id integer REFERENCES file_info, file_id integer REFERENCES file_info,
name text, name text,
stack_frame_size integer stack_frame_size integer,
doip_id integer DEFAULT -1
); );
CREATE TABLE #PROGNAME#_instruction CREATE TABLE #PROGNAME#_instruction
( (
instruction_id SERIAL PRIMARY KEY,
address_id integer REFERENCES #PROGNAME#_address, address_id integer REFERENCES #PROGNAME#_address,
parent_function_id integer REFERENCES #PROGNAME#_function, parent_function_id integer,
file_id integer REFERENCES file_info, file_id integer REFERENCES file_info,
orig_address_id integer REFERENCES #PROGNAME#_address, orig_address_id integer,
fallthrough_address_id integer REFERENCES #PROGNAME#_address, fallthrough_address_id integer,
target_address_id integer REFERENCES #PROGNAME#_address, target_address_id integer,
data text data bytea,
comment text,
doip_id integer DEFAULT -1
); );
#!/bin/sh
# #
# pdb_create_program_tables <programName> # pdb_create_program_tables <programName>
# #
...@@ -7,7 +9,9 @@ PROGRAM_NAME=$1 ...@@ -7,7 +9,9 @@ PROGRAM_NAME=$1
DB_SCRIPT=$$.script.tmp DB_SCRIPT=$$.script.tmp
cat pdb.createprogram.tbl | sed "s/#PROGNAME#/$PROGRAM_NAME/g" > $DB_SCRIPT PROGRAM_NAME=`echo $PROGRAM_NAME | sed "s/[\.;+\\-\ ]/_/g"`
cat $PEASOUP_HOME/tools/db/pdb.createprogram.tbl | sed "s/#PROGNAME#/$PROGRAM_NAME/g" > $DB_SCRIPT
psql -f $DB_SCRIPT psql -f $DB_SCRIPT
......
#!/bin/sh
psql -c "\d" psql -c "\d"
#!/bin/sh
# #
# pdb_register <peasoup_program_name> <peasoup_program_directory> # pdb_register <peasoup_program_name> <peasoup_program_directory>
# #
...@@ -18,7 +20,7 @@ usage() ...@@ -18,7 +20,7 @@ usage()
log_error() log_error()
{ {
echo "pdb_register: ERROR: $1" echo "pdb_register: ERROR: $1"
exit 1 exit -1
} }
log_message() log_message()
...@@ -51,21 +53,21 @@ fi ...@@ -51,21 +53,21 @@ fi
MD5HASH=`md5sum $FILENAME | cut -f1 -d' '` MD5HASH=`md5sum $FILENAME | cut -f1 -d' '`
#============================================ #============================================
# Update program_info table # Update variant_info table
#============================================ #============================================
# -q: quiet mode # -q: quiet mode
# -t: tuple only # -t: tuple only
# -c: run command # -c: run command
PROGRAM_ID=`psql -q -t -c "INSERT INTO program_info (name) VALUES ('$PROGRAM_NAME') RETURNING program_id;" | sed "s/^[ \t]*//"` PROGRAM_ID=`psql -q -t -c "INSERT INTO variant_info (schema_version_id,name,address_table_name,function_table_name,instruction_table_name) VALUES ('1', '$PROGRAM_NAME', '${PROGRAM_NAME}_ADDRESS', '${PROGRAM_NAME}_function', '${PROGRAM_NAME}_instruction') RETURNING variant_id;" | sed "s/^[ \t]*//"`
if [ ! $? -eq 0 ]; then if [ ! $? -eq 0 ]; then
log_error "Failed to register program" log_error "Failed to register program"
fi fi
# Update original program id # Update original program id
psql -q -t -c "UPDATE program_info SET orig_program_id = '$PROGRAM_ID' WHERE program_id = '$PROGRAM_ID';" psql -q -t -c "UPDATE variant_info SET orig_variant_id = '$PROGRAM_ID' WHERE variant_id = '$PROGRAM_ID';"
#============================================ #============================================
# Update file_info table # Update file_info table
...@@ -73,12 +75,11 @@ psql -q -t -c "UPDATE program_info SET orig_program_id = '$PROGRAM_ID' WHERE pro ...@@ -73,12 +75,11 @@ psql -q -t -c "UPDATE program_info SET orig_program_id = '$PROGRAM_ID' WHERE pro
FILE_ID=`psql -q -t -c "INSERT INTO file_info (url, arch, hash) VALUES ('$URL', '$ARCH', '$MD5HASH') RETURNING file_id;" | sed "s/^[ \t]*//"` FILE_ID=`psql -q -t -c "INSERT INTO file_info (url, arch, hash) VALUES ('$URL', '$ARCH', '$MD5HASH') RETURNING file_id;" | sed "s/^[ \t]*//"`
# Update original file id
psql -q -t -c "UPDATE file_info SET orig_file_id = '$FILE_ID' WHERE file_id = '$FILE_ID';"
log_message "To do: if shared libs, then need to add them to this table" log_message "To do: if shared libs, then need to add them to this table"
#============================================ #============================================
# Update program_dependency table # Update program_dependency table
#============================================ #============================================
FILE_ID=`psql -q -t -c "INSERT INTO program_dependency (program_id, file_id) VALUES ('$PROGRAM_ID', '$FILE_ID')"` FILE_ID=`psql -q -t -c "INSERT INTO variant_dependency (variant_id, file_id) VALUES ('$PROGRAM_ID', '$FILE_ID')"`
exit $PROGRAM_ID
psql -f pdb.create.tbl
#!/bin/sh
psql -f $PEASOUP_HOME/tools/db/pdb.create.tbl
psql -f pdb.drop.tbl
#!/bin/sh
psql -f $PEASOUP_HOME/tools/db/pdb.drop.tbl
#!/bin/sh #!/bin/sh -x
# This script depends on having the following environment variables defined # This script depends on having the following environment variables defined
# STRATA - The path to the strata installation # STRATA - The path to the strata installation
# An example of these environment variables and their settings are listed in # An example of these environment variables and their settings are listed in
...@@ -71,6 +71,49 @@ echo Running IDA Pro static analysis phase ... ...@@ -71,6 +71,49 @@ echo Running IDA Pro static analysis phase ...
$SMPSA_HOME/SMP-analyze.sh a.ncexe $SMPSA_HOME/SMP-analyze.sh a.ncexe
echo Done. echo Done.
#
# Populate IR Database
#
if [ ! "X" = "X"$PGUSER ]; then
echo "Registering with IR database: program: $orig_exe server:$PGHOST db:$PGDATABASE"
DB_PROGRAM_NAME=`echo $orig_exe.$$ | sed "s/[\.;+\\-\ ]/_/g"`
MD5HASH=`md5sum a.ncexe | cut -f1 -d' '`
$PEASOUP_HOME/tools/db/pdb_register.sh $DB_PROGRAM_NAME $current_dir # register the program.
varid=$?
$PEASOUP_HOME/tools/db/pdb_create_program_tables.sh $DB_PROGRAM_NAME # create the tables for the program.
echo "RUNNING MEDS2PDB:"
date
time $SECURITY_TRANSFORMS_HOME/tools/meds2pdb/meds2pdb $DB_PROGRAM_NAME a.ncexe $MD5HASH a.ncexe.annot # import meds information
date
if [ $varid > 0 ]; then
$SECURITY_TRANSFORMS_HOME/libIRDB/test/clone.exe $varid # create a clone
cloneid=$?
if [ $cloneid > 0 ]; then
$SECURITY_TRANSFORMS_HOME/libIRDB/test/fill_in_cfg.exe $cloneid # finish the initial IR
$SECURITY_TRANSFORMS_HOME/libIRDB/test/fix_calls.exe $cloneid # fix call insns so they are OK for spri emitting
$SECURITY_TRANSFORMS_HOME/libIRDB/test/ilr.exe $cloneid # perform ILR
$SECURITY_TRANSFORMS_HOME/libIRDB/test/generate_spri.exe $cloneid a.ncexe.aspri # generate the spri code
fi
fi
echo -------------------------------------------------------------------------------
echo --------- Orig Variant ID is $varid ------------------------
echo -------------------------------------------------------------------------------
echo --------- Cloned Variant ID is $cloneid ------------------------
echo -------------------------------------------------------------------------------
fi
#
# Run concolic engine
#
echo Running concolic testing to generate inputs ... echo Running concolic testing to generate inputs ...
#$PEASOUP_HOME/tools/do_concolic.sh a --iterations 25 --logging tracer,instance_times,trace #$PEASOUP_HOME/tools/do_concolic.sh a --iterations 25 --logging tracer,instance_times,trace
$PEASOUP_HOME/tools/do_concolic.sh a --iterations 25 --logging tracer,trace,inputs $PEASOUP_HOME/tools/do_concolic.sh a --iterations 25 --logging tracer,trace,inputs
...@@ -86,7 +129,6 @@ echo Done. ...@@ -86,7 +129,6 @@ echo Done.
#----------------------------------------- #-----------------------------------------
# Start P1 transform # Start P1 transform
#----------------------------------------- #-----------------------------------------
#
#echo Starting the P1 transform #echo Starting the P1 transform
#date #date
#$PEASOUP_HOME/tools/p1xform.sh $newdir > p1xform.out 2> p1xform.err #$PEASOUP_HOME/tools/p1xform.sh $newdir > p1xform.out 2> p1xform.err
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment