regular delta
This commit is contained in:
parent
3f1cf080f2
commit
05e29a3f22
3
.clangd
3
.clangd
@ -1,3 +0,0 @@
|
||||
CompileFlags:
|
||||
Add:
|
||||
- "-I/var/home/ludwig/git/windows-binary-fuzzing/irdb-sdk/include"
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
||||
[submodule "irdb-sdk"]
|
||||
path = irdb-sdk
|
||||
url = https://git.zephyr-software.com/opensrc/irdb-sdk.git
|
6
clients/mov_to_nop/CMakeLists.txt
Normal file
6
clients/mov_to_nop/CMakeLists.txt
Normal file
@ -0,0 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.7)
|
||||
project(mov_to_nop)
|
||||
|
||||
find_package(DynamoRIO REQUIRED)
|
||||
add_library(mov_to_nop SHARED mov_to_nop.c)
|
||||
configure_DynamoRIO_client(mov_to_nop)
|
26
clients/mov_to_nop/mov_to_nop.c
Normal file
26
clients/mov_to_nop/mov_to_nop.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include "dr_api.h"
|
||||
#include "dr_ir_opcodes_x86.h"
|
||||
|
||||
static dr_emit_flags_t event_basic_block(void *drcontext, void *tag,
|
||||
instrlist_t *bb, bool for_trace, bool translating);
|
||||
|
||||
DR_EXPORT void dr_client_main(client_id_t id, int argc, const char *argv[]) {
|
||||
dr_set_client_name("MOV-to-NOP Client (No drmgr)", "https://dynamorio.org/");
|
||||
dr_register_bb_event(event_basic_block);
|
||||
dr_printf("MOV-to-NOP client loaded (no drmgr).\n");
|
||||
}
|
||||
|
||||
static dr_emit_flags_t event_basic_block(void *drcontext, void *tag,
|
||||
instrlist_t *bb, bool for_trace, bool translating) {
|
||||
for (instr_t *instr = instrlist_first_app(bb);
|
||||
instr != NULL;
|
||||
instr = instr_get_next_app(instr)) {
|
||||
|
||||
int opcode = instr_get_opcode(instr);
|
||||
if (opcode == OP_mov_st || opcode == OP_mov_ld) {
|
||||
instr_set_opcode(instr, OP_nop);
|
||||
}
|
||||
}
|
||||
|
||||
return DR_EMIT_DEFAULT;
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo chmod -R 777 transforms/
|
||||
podman run --rm -it -v $(pwd):/work:Z -w /work git.zephyr-software.com:4567/opensrc/zipr/zipr-bin iagree
|
||||
|
||||
# ./do-build
|
||||
# pszr programs/compiled/JustOpen.exe JustOpen.test
|
145
do-build
145
do-build
@ -1,145 +0,0 @@
|
||||
#!/bin/env python3
|
||||
|
||||
import os
|
||||
import hashlib
|
||||
import base64
|
||||
import argparse
|
||||
|
||||
DIR = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
|
||||
def parse_args():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--force', action='store_true')
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
args = parse_args()
|
||||
|
||||
|
||||
CXX = "g++"
|
||||
LDFLAGS = "-Wl,-unresolved-symbols=ignore-in-shared-libs -L/opt/ps_zipr/irdb-libs/lib"
|
||||
CXXFLAGS = f"-g -I{DIR}/irdb-sdk/include -std=c++11 -Wall -Werror -fmax-errors=2 -fPIC"
|
||||
|
||||
|
||||
def list_hash(list: list[str]):
|
||||
md5 = hashlib.md5()
|
||||
for item in list:
|
||||
md5.update(item.encode())
|
||||
|
||||
return md5.hexdigest()
|
||||
|
||||
|
||||
def file_hash(file: str):
|
||||
BUFSIZE = 65536
|
||||
|
||||
md5 = hashlib.md5()
|
||||
|
||||
with open(file, 'rb') as f:
|
||||
data = f.read(BUFSIZE)
|
||||
while data:
|
||||
md5.update(data)
|
||||
data = f.read(BUFSIZE)
|
||||
|
||||
return md5.hexdigest()
|
||||
|
||||
|
||||
def needs_rebuild(file: str, libs: list[str] = []) -> bool:
|
||||
return True
|
||||
global args
|
||||
|
||||
hash = file_hash(file)
|
||||
hash += list_hash(libs)
|
||||
|
||||
abspath = os.path.abspath(file)
|
||||
b64path = os.path.join('/tmp', base64.b64encode(abspath.encode()).decode())
|
||||
|
||||
if not os.path.exists(b64path) or args.force:
|
||||
return True
|
||||
|
||||
with open(b64path, 'r') as f:
|
||||
return f.read() != hash
|
||||
|
||||
|
||||
def signal_built(file: str, libs: list[str] = []) -> bool:
|
||||
return
|
||||
hash = file_hash(file)
|
||||
hash += list_hash(libs)
|
||||
|
||||
abspath = os.path.abspath(file)
|
||||
b64path = os.path.join('/tmp', base64.b64encode(abspath.encode()).decode())
|
||||
|
||||
with open(b64path, 'w') as f:
|
||||
f.write(hash)
|
||||
|
||||
|
||||
def build(targetObject: str, cppFile: str):
|
||||
if not needs_rebuild(cppFile):
|
||||
return
|
||||
|
||||
global CXXFLAGS
|
||||
|
||||
cmd = f'{CXX} -c "{cppFile}" -o "{targetObject}" {CXXFLAGS}'
|
||||
print(cmd)
|
||||
status = os.system(cmd)
|
||||
|
||||
if status == 0:
|
||||
signal_built(cppFile)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def link(target: str, objects: list[str], libs: list[str]):
|
||||
global LDFLAGS
|
||||
|
||||
cmd = f'{CXX} -shared -o {target}'
|
||||
for object in objects:
|
||||
cmd += f' {object}'
|
||||
for lib in libs:
|
||||
cmd += f' -l{lib}'
|
||||
cmd += f' {LDFLAGS}'
|
||||
|
||||
print(cmd)
|
||||
return os.system(cmd) == 0
|
||||
|
||||
|
||||
def main():
|
||||
for dir in os.listdir(f'{DIR}/transforms'):
|
||||
path = os.path.join(f'{DIR}/transforms', dir)
|
||||
if not os.path.isdir(path):
|
||||
continue
|
||||
|
||||
libs: list[str] = []
|
||||
if os.path.exists(os.path.join(path, '.libs')):
|
||||
with open(os.path.join(path, '.libs'), 'r') as f:
|
||||
libs = f.read().split()
|
||||
|
||||
libs = filter(lambda l: len(l.strip()) > 0, libs)
|
||||
libs = list(libs)
|
||||
|
||||
hadError = False
|
||||
objects: list[str] = []
|
||||
for file in os.listdir(path):
|
||||
if not file.endswith('.cpp'):
|
||||
continue
|
||||
|
||||
filePath = os.path.join(path, file)
|
||||
|
||||
objectPath = os.path.splitext(filePath)[0] + '.o'
|
||||
newError = not build(objectPath, filePath)
|
||||
hadError = hadError or newError
|
||||
objects += [objectPath]
|
||||
|
||||
if hadError:
|
||||
continue
|
||||
|
||||
targetDir = os.path.join(DIR, 'plugins_install')
|
||||
os.makedirs(targetDir, exist_ok=True)
|
||||
|
||||
target = os.path.join(targetDir, f'lib{dir}.so')
|
||||
link(target, objects, libs)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
1
irdb-sdk
1
irdb-sdk
@ -1 +0,0 @@
|
||||
Subproject commit f63323b8066c265b1c0c32a0ae8f19a877b1d4e1
|
BIN
programs/JustOpen.obj
Normal file
BIN
programs/JustOpen.obj
Normal file
Binary file not shown.
10
programs/Makefile
Normal file
10
programs/Makefile
Normal file
@ -0,0 +1,10 @@
|
||||
all: compiled\Twice.exe compiled\JustOpen.exe
|
||||
|
||||
clean:
|
||||
del /Q "compiled\*"
|
||||
|
||||
compiled\Twice.exe: source\Twice.c
|
||||
cl /Fe:$@ source\Twice.c comdlg32.lib /link /MACHINE:X64
|
||||
|
||||
compiled\JustOpen.exe: source\JustOpen.c
|
||||
cl /Fe:$@ source\JustOpen.c comdlg32.lib /link /MACHINE:X64
|
BIN
programs/Twice.obj
Normal file
BIN
programs/Twice.obj
Normal file
Binary file not shown.
Binary file not shown.
BIN
programs/compiled/Twice.exe
Normal file
BIN
programs/compiled/Twice.exe
Normal file
Binary file not shown.
38
programs/source/Twice.c
Normal file
38
programs/source/Twice.c
Normal file
@ -0,0 +1,38 @@
|
||||
#include <windows.h>
|
||||
#include <commdlg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main() {
|
||||
char file[MAX_PATH] = {0};
|
||||
|
||||
OPENFILENAME ofn = {
|
||||
.lStructSize = sizeof(ofn),
|
||||
.lpstrFilter = "All Files\0*.*\0",
|
||||
.lpstrFile = file,
|
||||
.nMaxFile = MAX_PATH,
|
||||
.lpstrTitle = "Select File",
|
||||
.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST
|
||||
};
|
||||
|
||||
int res = GetOpenFileName(&ofn);
|
||||
if (!res) {
|
||||
puts("GetOpenFileName(...) failed!");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
FILE *f = fopen(ofn.lpstrFile, "r");
|
||||
if (!f) {
|
||||
perror("fopen(...)");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
long input;
|
||||
if (fscanf(f, "%ld", &input) != 1) {
|
||||
puts("fscanf(...) failed to scan input number");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf("%ld\n", 2 * input);
|
||||
return 0;
|
||||
}
|
@ -1 +0,0 @@
|
||||
export PSPATH=$PSPATH:$(pwd)/plugins_install
|
@ -1 +0,0 @@
|
||||
irdb-core irdb-transform
|
@ -1,23 +0,0 @@
|
||||
#include "irdb-core"
|
||||
#include "logic.hpp"
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
class ForwardFileOpenDriver : public TransformStep_t {
|
||||
public:
|
||||
int parseArgs(const vector<string> args) override { return 0; }
|
||||
|
||||
int executeStep() override {
|
||||
auto firp = getMainFileIR();
|
||||
auto success = ForwardFileOpen(firp).execute();
|
||||
return success ? 0 : 2;
|
||||
}
|
||||
|
||||
string getStepName() const override { return "forward_file_open"; }
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
extern "C" shared_ptr<TransformStep_t> getTransformStep(void) {
|
||||
return shared_ptr<TransformStep_t>(new ForwardFileOpenDriver());
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
#include "logic.hpp"
|
||||
#include "irdb-transform"
|
||||
|
||||
ForwardFileOpen::ForwardFileOpen(FileIR_t *p_variantIR)
|
||||
: Transform_t(p_variantIR) {}
|
||||
|
||||
bool ForwardFileOpen::execute() {
|
||||
const auto insts = getFileIR()->getInstructions();
|
||||
|
||||
cout << "Hello World!" << std::endl;
|
||||
|
||||
for (auto &inst : insts) {
|
||||
cout << inst->getDisassembly() << std::endl;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <irdb-core>
|
||||
#include <irdb-deep>
|
||||
#include <irdb-transform>
|
||||
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
using namespace std;
|
||||
using namespace IRDB_SDK;
|
||||
|
||||
class ForwardFileOpen : protected Transform_t {
|
||||
public:
|
||||
ForwardFileOpen(FileIR_t *p_variantIR);
|
||||
bool execute();
|
||||
|
||||
private:
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user