C+WinSock IRC Bot and few other useless programs i've found on my freeshell account...
[mirrors/Programs.git] / misc / BinCracking / hexcmp.c
diff --git a/misc/BinCracking/hexcmp.c b/misc/BinCracking/hexcmp.c
new file mode 100755 (executable)
index 0000000..a3cb8c3
--- /dev/null
@@ -0,0 +1,87 @@
+#include <stdio.h>\r
+#include <stdlib.h>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+  printf("HEXCMP 0.3\nHexadecimal Comparator\n<-Harvie 2oo7\n\n");\r
+  if(argc < 3) {\r
+          printf("Usage: hexcmp oldfile newfile [decimal_offset_to_start_at]\n");\r
+          printf("This will show what is new in \"newfile\",\n");\r
+          printf("this can be useful, when making binary patchers.\n\n");\r
+          system("pause");\r
+          return 0;\r
+          }\r
+    \r
+  printf("Comparing old \"%s\" with new \"%s\"\n", argv[1], argv[2]); \r
+  \r
+  FILE *forig, *fcrac;\r
+  forig = fopen(argv[1], "rb");\r
+    if(forig == NULL) { printf("Error while opening %s\n", argv[1]); return 0; }\r
+  fcrac = fopen(argv[2], "rb");\r
+    if(fcrac == NULL) { printf("Error while opening %s\n", argv[2]); return 0; }\r
+  \r
+  short found = 0;\r
+  unsigned long int offset = 0, last = 0, end = 0, dlen = 0;\r
+  int corig = 0, ccrac = 0;\r
+  \r
+  if(argc > 3) {\r
+          offset = atof(argv[3]);\r
+          printf("Comparing from offset D: %d H: 0x%x\n", offset, offset);\r
+          }\r
+  printf("\n");\r
+  \r
+  //Seek\r
+  fseek(forig, offset, SEEK_SET);\r
+  fseek(fcrac, offset, SEEK_SET);\r
+  \r
+  while((ccrac = fgetc(fcrac)) != EOF) {\r
+    if( (corig = fgetc(forig)) == EOF ) {\r
+       corig == -9999;\r
+       if(end == 0) {\r
+         end = 1;   \r
+       }\r
+    }\r
+    if(corig != ccrac) {\r
+      \r
+      if(end == 1) {\r
+        if(dlen != 0) {\r
+                printf("\nLenght: %d Bytes", dlen);\r
+                dlen = 0;\r
+                }\r
+        printf("\n\n--- END OF OLDER FILE ---\n\n"); \r
+        end = 2;\r
+      }\r
+      \r
+      if(offset != (last+1)) {\r
+        if(dlen != 0) {\r
+          printf("\nLenght: %d Bytes", dlen);\r
+          dlen = 0;\r
+          printf("\n\n");\r
+        }\r
+        printf("Difference @ D: %d H: 0x%x\n", offset, offset);\r
+      }\r
+        \r
+      printf("\\x%x", ccrac);\r
+      \r
+      dlen++;\r
+      last = offset;\r
+      found = 1;\r
+    }\r
+    \r
+    offset++;\r
+  }\r
+  \r
+   if(dlen != 0) {\r
+          printf("\nLenght: %d Bytes", dlen);\r
+        }\r
+  \r
+  fclose(forig);\r
+  fclose(fcrac);\r
+  \r
+  if(found == 0) {\r
+           printf("No difference found!!!");\r
+           }\r
+  printf("\n");\r
+  //system("PAUSE"); //Debug\r
+  return 0;\r
+}\r
This page took 0.126055 seconds and 4 git commands to generate.