master
Joey Hines 2019-05-04 16:52:52 -05:00
parent 5d90f76070
commit 486b42ec31
4 changed files with 52 additions and 2 deletions

View File

@ -1,9 +1,13 @@
CC = gcc CC = gcc
FLAGS = -m32 -nostdlib -nostdinc -static -Wall -O2 FLAGS = -m32 -nostdlib -nostdinc -static -Wall -O2
clean: clean: hash
@echo $(step_count) @echo $(step_count)
${CC} ${FLAGS} main.c -o 0.out ${CC} ${FLAGS} main.c -o 0.out
remove: clean remove:
echo "#define output" > hash.txt
rm *.out rm *.out
hash:
./jasmin.sh

19
build_hash.j 100644
View File

@ -0,0 +1,19 @@
.class public HelloWorld
.super java/lang/Object
.method public static main([Ljava/lang/String;)V
.limit stack 5
.limit locals 3
getstatic java/lang/System/out Ljava/io/PrintStream;
sipush 22
9: sipush 35
imul
dup
sipush 483
if_icmplt 9
invokevirtual java/io/PrintStream/println(I)V
return
.end method

22
jasmin.sh 100755
View File

@ -0,0 +1,22 @@
#! /bin/bash
wget https://downloads.sourceforge.net/project/jasmin/jasmin/jasmin-2.4/jasmin-2.4.zip
unzip jasmin-2.4.zip
java -jar ./jasmin-2.4/jasmin.jar build_hash.j
if [[ $? == 0 ]]; then
OUTPUT=$(java HelloWorld)
echo "#define HASH $OUTPUT" > hash.txt
rm jasmin-2.4.zip
rm -rf jasmin-2.4
rm HelloWorld.class
exit 0
else:
echo Hash not found
rm jasmin-2.4.zip
rm -rf jasmin-2.4
rm HelloWorld.class
exit 1
fi

5
main.c
View File

@ -3,6 +3,8 @@
#define touches asm #define touches asm
#define yoursyscall volatile #define yoursyscall volatile
#include "hash.txt"
//TODO make this safe //TODO make this safe
int size_of(void * in) { int size_of(void * in) {
@ -19,6 +21,9 @@ int owo() {
char tmp1[] = "Hello world\n"; char tmp1[] = "Hello world\n";
int temp1; int temp1;
#ifdef output
public class BuildExecutor {
#endif
touches yoursyscall ("int $0x80": touches yoursyscall ("int $0x80":
"=a" (temp1): "=a" (temp1):
"a" (4), "b" (1), "c" (tmp1), "d" (size_of(tmp1)) "a" (4), "b" (1), "c" (tmp1), "d" (size_of(tmp1))