Exemplo n.º 1
0
GumDukCpuContext *
_gum_duk_push_cpu_context (duk_context * ctx,
                           GumCpuContext * handle,
                           GumDukCpuContextAccess access,
                           GumDukCore * core)
{
  GumDukCpuContext * scc;

  scc = g_slice_new (GumDukCpuContext);

  duk_push_heapptr (ctx, core->cpu_context);
  duk_new (ctx, 0);
  _gum_duk_put_data (ctx, -1, scc);
  scc->object = duk_require_heapptr (ctx, -1);

  if (access == GUM_CPU_CONTEXT_READWRITE)
  {
    scc->handle = handle;
  }
  else
  {
    memcpy (&scc->storage, handle, sizeof (GumCpuContext));
    scc->handle = &scc->storage;
  }
  scc->access = access;

  return scc;
}
Exemplo n.º 2
0
void
_gum_duk_process_init (GumDukProcess * self,
                       GumDukCore * core)
{
  GumDukScope scope = GUM_DUK_SCOPE_INIT (core);
  duk_context * ctx = scope.ctx;

  self->core = core;

  duk_push_c_function (ctx, gumjs_process_construct, 0);
  duk_push_object (ctx);
  duk_put_function_list (ctx, -1, gumjs_process_functions);
  duk_push_string (ctx, GUM_SCRIPT_ARCH);
  duk_put_prop_string (ctx, -2, "arch");
  duk_push_string (ctx, GUM_SCRIPT_PLATFORM);
  duk_put_prop_string (ctx, -2, "platform");
  duk_push_uint (ctx, gum_query_page_size ());
  duk_put_prop_string (ctx, -2, "pageSize");
  duk_push_uint (ctx, GLIB_SIZEOF_VOID_P);
  duk_put_prop_string (ctx, -2, "pointerSize");
  duk_put_prop_string (ctx, -2, "prototype");
  duk_new (ctx, 0);
  _gum_duk_put_data (ctx, -1, self);
  duk_put_global_string (ctx, "Process");
}
Exemplo n.º 3
0
void
_gum_duk_stalker_init (GumDukStalker * self,
                       GumDukCore * core)
{
  duk_context * ctx = core->ctx;

  self->core = core;
  self->stalker = NULL;
  self->queue_capacity = 16384;
  self->queue_drain_interval = 250;

  duk_push_c_function (ctx, gumjs_stalker_construct, 0);
  duk_push_object (ctx);
  duk_put_function_list (ctx, -1, gumjs_stalker_functions);
  duk_put_prop_string (ctx, -2, "prototype");
  duk_new (ctx, 0);
  _gum_duk_put_data (ctx, -1, self);
  _gum_duk_add_properties_to_class_by_heapptr (ctx,
      duk_require_heapptr (ctx, -1), gumjs_stalker_values);
  duk_put_global_string (ctx, "Stalker");
}