diff --git a/fuzz.s b/fuzz.s new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/fuzz.s @@ -0,0 +1 @@ + diff --git a/fuzzer/Fuzzer.java b/fuzzer/Fuzzer.java index 1d8a8c0a2cfda5c1b1678325d9b5b1b267c333ad..43aa5122dfa05baf46ad5bb500c0ecb3cc5b81dd 100644 --- a/fuzzer/Fuzzer.java +++ b/fuzzer/Fuzzer.java @@ -14,6 +14,7 @@ public class Fuzzer { private static final List<String> validOpcodes = new ArrayList<String>(Arrays.asList("ADD","SUB","MUL","DIV","LDR","STR","MOV","JMP","JZ")); private static final int maxRegistry = 32; private static final int maxMemory = 65536; + private static final String alphabet = "1234567890-=`~!@#$%6&*()_+q wertyuiop[]QWERTYUIOP{}|asdfghjkl;ASDFGHJKL:zxcvbnm,./ZXCVBNM<>?\"\'\\"; public static void main(String[] args) throws IOException { FileOutputStream out = null; PrintWriter pw = null; @@ -21,8 +22,10 @@ public class Fuzzer { out = new FileOutputStream(OUTPUT_FILE); pw = new PrintWriter(out); Random rg = new Random(); + //----------Fuzzer Begins Here----------// + pw.println(generateMemoryUnderflow(rg)); - + //----------Fuzzer Ends Here----------���� }catch (Exception e){ e.printStackTrace(System.err); System.exit(1); @@ -37,7 +40,7 @@ public class Fuzzer { } //-----------Generation Functions----------// - public String generateMemoryOverflow(Random rg) { + public static String generateMemoryOverflow(Random rg) { String line = new String(); line.concat("MOV R0 "+maxMemory+"%n"); line.concat("MOV R1 1 %n"); @@ -49,7 +52,7 @@ public class Fuzzer { return line; } - public String generateMemoryUnderflow(Random rg) { + public static String generateMemoryUnderflow(Random rg) { String line = new String(); line.concat("MOV R0 "+(maxMemory*-1)+"%n"); line.concat("MOV R1 1 %n"); @@ -61,7 +64,7 @@ public class Fuzzer { return line; } - public String generateRegOverflow(Random rg) { + public static String generateRegOverflow(Random rg) { String line = new String(); int invalidRegistry; Boolean overflow = rg.nextBoolean(); @@ -187,8 +190,7 @@ public class Fuzzer { return line; } - //DZL - public String generateOffsetOverFlow(Random rg) { + public static String generateOffsetOverFlow(Random rg) { String line = new String(); Boolean positive = rg.nextBoolean(); if(!positive) { @@ -199,7 +201,7 @@ public class Fuzzer { return line; } - public String generateLineOverFlow() { + public static String generateLineOverFlow() { String line = new String(); line.concat("RET R0"); for(int x=0;x<2000;x++) { @@ -208,7 +210,7 @@ public class Fuzzer { return line; } - public String generateInstructionOverflow() { + public static String generateInstructionOverflow() { String line = new String(); line.concat("MOV R0 0%n"); line.concat("MOV R1 1"); @@ -218,7 +220,7 @@ public class Fuzzer { return line; } - public String generateDivideByZero(){ + public static String generateDivideByZero(){ String line = new String(); line.concat("MOV R0 0%n"); line.concat("MOV R1 1%n"); @@ -227,7 +229,7 @@ public class Fuzzer { return line; } - public String generateDirtyRegistyRead() { + public static String generateDirtyRegistyRead() { String line = new String(); for(int x=1;x<maxRegistry-1;x++) { @@ -237,7 +239,7 @@ public class Fuzzer { return line; } - public String generateDirtyMemoryRead(Random rg) { + public static String generateDirtyMemoryRead(Random rg) { String line = new String(); int attempts = 20; line.concat("MOV R0 0"); @@ -252,7 +254,7 @@ public class Fuzzer { return line; } - public String jmpOverflow(int programLength,int lineNumber,Random rg) { + public static String jmpOverflow(int programLength,int lineNumber,Random rg) { String line = new String(); int val; if(rg.nextBoolean()) { @@ -264,7 +266,7 @@ public class Fuzzer { return line; } - public String jzOverflow(int programLength,int lineNumber,Random rg) { + public static String jzOverflow(int programLength,int lineNumber,Random rg) { String line = new String(); int val; @@ -278,7 +280,7 @@ public class Fuzzer { return line; } - public String intOverflow() { + public static String intOverflow() { String line = new String(); line.concat("MOV R0 65535%n"); line.concat("MUL R1 R0 R0%n"); @@ -286,7 +288,7 @@ public class Fuzzer { return line; } - public String intUnderflow() { + public static String intUnderflow() { String line = new String(); line.concat("MOV R0 -65535%n"); line.concat("MUL R1 R0 R0%n"); @@ -294,7 +296,7 @@ public class Fuzzer { return line; } - public String generateInvalidOperands(Random rg) { + public static String generateInvalidOperands(Random rg) { int regs = rg.nextInt(4); String line = new String(); Boolean hasval = rg.nextBoolean(); @@ -313,12 +315,20 @@ public class Fuzzer { //too many arguments return null; } - //CAL - public String generateInvalidFunctionName() { - return null; + + public static String generateInvalidFunctionName(Random rg,String line) { + char[] charLine = line.toCharArray(); + int change = rg.nextInt(3)+1; + for(int x=0;x<change;x++) { + int index = rg.nextInt(charLine.length); + char character = alphabet.charAt(rg.nextInt(alphabet.length())); + charLine[index] = character; + } + + return charLine.toString(); } - public String generateInstructionComment(Random rg) { + public static String generateInstructionComment(Random rg) { String line = new String(); line.concat(";"); String instr = generateValidReturn(rg); @@ -326,14 +336,14 @@ public class Fuzzer { return line; } - public String generateValidReturn(Random rg) { + public static String generateValidReturn(Random rg) { String line = new String(); line.concat("RET"); line.concat(" R"+rg.nextInt(maxRegistry)); return line; } - public String generateInvalidReturn(Random rg) { + public static String generateInvalidReturn(Random rg) { int invalidRegistry; String line = new String(); line.concat("RET"); @@ -349,7 +359,7 @@ public class Fuzzer { return line; } - public String generateValidString(Random rg,int programLength,int lineNumber){ + public static String generateValidString(Random rg,int programLength,int lineNumber){ int index = rg.nextInt(validOpcodes.size()); String opcode = validOpcodes.get(index); int numregs = 0;