From f4ecb2e56397365d8ea809b169df0734a1a6524c Mon Sep 17 00:00:00 2001
From: David Li
Date: Tue, 12 Jan 2016 09:26:23 -0700
Subject: Generate payload randomly
---
Cargo.lock | 20 ++++++++++++++++++++
Cargo.toml | 1 +
devkit/cacheracer.h | 2 +-
src/main.rs | 9 +++++++--
4 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index b1a2219..580d37c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -5,11 +5,21 @@ dependencies = [
"docopt 0.6.78 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
"rustv 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
]
+[[package]]
+name = "advapi32-sys"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
[[package]]
name = "aho-corasick"
version = "0.4.0"
@@ -72,6 +82,16 @@ dependencies = [
"libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
+[[package]]
+name = "rand"
+version = "0.3.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "advapi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
[[package]]
name = "regex"
version = "0.1.46"
diff --git a/Cargo.toml b/Cargo.toml
index 7188a85..814194f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -8,5 +8,6 @@ log = "0.3"
env_logger = "0.3"
rustv = "0.4.1"
docopt = "0.6"
+rand = "0.3"
rustc-serialize = "0.3"
time = "0.1"
diff --git a/devkit/cacheracer.h b/devkit/cacheracer.h
index 7626524..7e9aa8c 100644
--- a/devkit/cacheracer.h
+++ b/devkit/cacheracer.h
@@ -1,7 +1,7 @@
#ifndef CACHERACER_H
#define CACHERACER_H
-void __start(int core_id);
+void __start(int core_id, unsigned char payload);
/** Memory Layout
*
diff --git a/src/main.rs b/src/main.rs
index 7d17d48..0667401 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,6 +1,7 @@
extern crate docopt;
#[macro_use] extern crate log;
extern crate env_logger;
+extern crate rand;
extern crate rustc_serialize;
extern crate rustv;
extern crate time;
@@ -77,7 +78,10 @@ fn main() {
let start1 = load_program(&mut memory, &mmu, &args.arg_program1);
let start2 = load_program(&mut memory, &mmu2, &args.arg_program2);
- let memory = MemoryTracker::new(memory, 0x43, 0x42);
+ let payload1 = rand::random::();
+ let payload2 = rand::random::();
+
+ let memory = MemoryTracker::new(memory, payload1, payload2);
let memory_ref = Rc::new(RefCell::new(memory));
let cache = memory::DirectMappedCache::new(2, 64, memory_ref.clone());
@@ -85,7 +89,6 @@ fn main() {
let cache2 = memory::DirectMappedCache::new(2, 64, memory_ref.clone());
let cache2_ref = Rc::new(RefCell::new(cache2));
-
let mut cores = vec![];
let mut core_caches = vec![];
@@ -98,6 +101,7 @@ fn main() {
Box::new(memory::IdentityMmu::new())
);
core.registers().write_word(isa::Register::X10, i as isa::Word);
+ core.registers().write_word(isa::Register::X11, payload1 as isa::Word);
cores.push(core);
}
@@ -110,6 +114,7 @@ fn main() {
Box::new(memory::ReverseMmu::new(0x4000000))
);
core.registers().write_word(isa::Register::X10, (i - 4) as isa::Word);
+ core.registers().write_word(isa::Register::X11, payload2 as isa::Word);
cores.push(core);
}
--
cgit v1.2.3