You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Using the attached code, we want to emit a callout every CMP instruction executed, when the first CMP instruction is encountered all works fine and the callout is indeed executed but after the first execution it keeps executing on every instruction without being correctly filtered by the if condition
Screenshot of output of the callout, proving that it's been called on other instruction than CMP
The code to reproduce the issue is the following:
var module = Process.enumerateModules()[0]
var mem = Memory.alloc(16);
var appStart = parseInt(module.base, 16);
var ptrToAppStart = mem.writeU64(appStart);
var mem2 = Memory.alloc(16);
var appEnd = appStart + parseInt(module.size,10);
var ptrToAppEnd = mem2.writeU64(appEnd);
@oleavr
Using the attached code, we want to emit a callout every CMP instruction executed, when the first CMP instruction is encountered all works fine and the callout is indeed executed but after the first execution it keeps executing on every instruction without being correctly filtered by the if condition
Screenshot of output of the callout, proving that it's been called on other instruction than CMP
The code to reproduce the issue is the following:
var module = Process.enumerateModules()[0]
var mem = Memory.alloc(16);
var appStart = parseInt(module.base, 16);
var ptrToAppStart = mem.writeU64(appStart);
var mem2 = Memory.alloc(16);
var appEnd = appStart + parseInt(module.size,10);
var ptrToAppEnd = mem2.writeU64(appEnd);
const cm = new CModule(`
#include <gum/gumstalker.h>
#include <gum/gummemory.h>
#include <capstone.h>
extern void logging (gchar *message);
extern guint64 *ptrToAppStart ;
extern guint64 *ptrToAppEnd ;
static void log (const gchar * format,...)
{
gchar * message;
va_list args;
}
static void on_cmp_wrapper(GumCpuContext * cpu_context, gpointer user_data) {
cs_insn * insn = (cs_insn *)user_data;
log("Got as instruction ID: %d", insn->id);
}
void transform (GumStalkerIterator * iterator,
GumStalkerOutput * output,
gpointer user_data)
{
cs_insn * insn;
while (gum_stalker_iterator_next (iterator, &insn))
{
}
}
`,
{
ptrToAppStart, ptrToAppEnd,
logging: new NativeCallback((msg) => {
console.log(msg.readCString());
}, 'void', ['pointer'])
}
);
Stalker.follow(
Process.enumerateThreads()[0].id,
{
transform: cm.transform
}
);
The exe targeted will be attached to the issue
helloworld.zip
The text was updated successfully, but these errors were encountered: