hackedteam/fuzzer-android

View on GitHub
dbi/instruments/functions_coverage_adobe/hijack_func/hooker_thumb.c~

Summary

Maintainability
Test Coverage
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include "libt.h"
#include "util.h"

#include "hooker.h"
#include "uthash.h"


static int ip_register_offset = 0xd;

#define DEBUG 0


void* (*no_proto_ptr)(void* a, void* b, void* c, void* d, void* e, void* f, void* g, void* h, void* i, void* j, void* k, void* l, void* m, void* n, void* o, void* p);

void*  no_proto(void* a, void* b, void* c, void* d, void* e, void* f, void* g, void* h, void* i, void* j, void* k, void* l, void* m, void* n, void* o, void* p) {
  
  void *result;
  int ip_var;
  struct hook_t *hook_no_proto = NULL;


  asm("mov %[ip], ip" : [ip] "=r" (ip_var) );
  
  ip_var -= ip_register_offset;

  log("%x\n", ip_var - base_address)


  //if(DEBUG)  
  //  log("[*]\tHit $ip: 0x%x\n", ip_var)
  
  //if(DEBUG)  
  //  log("[*]\t\tSearching hash table 0x%x for 0x%x\n", hook_hash1, ip_var - base_address)

  //find struct hook_t 
  HASH_FIND_INT(hook_hash1, &ip_var, hook_no_proto);

  //if( hook_no_proto != NULL) {
  //  if( DEBUG )
  //    log("[*]\t\tFound struct 0x%x\n", hook_no_proto)
  //}
  //else {
  //  log("[*]\t\tstruct not found\n")
  //    exit(1);
  // }


  no_proto_ptr = (void *) hook_no_proto->orig;

  hook_precall(hook_no_proto);

  result =  no_proto_ptr( a,  b,  c,  d,  e,  f,  g,  h,  i,  j,  k,  l,  m,  n,  o,  p);


 
  //hook_postcall(hook_no_proto);

  //log("[*]\t\tReturning: 0x%x\n", result);

  return result;
}


int getLr() {
  asm volatile
    (
     "mov r0, lr  \n\t"
     );

}