-
-
Notifications
You must be signed in to change notification settings - Fork 250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Callout on CALL instruction are not emitted #806
Comments
Move the |
@oleavr I also tried to keep the first keep() and just add a second keep() after the callout and still the callout is not called but some log are printed in frida cli but it also trigger the target process to crash |
I didn't mean to move it inside the if-block. That crashes because you're telling Stalker to skip all instructions except CALL instructions. Code you emit before |
right, i fixed it like this thx a lot ! the issue #805 still remains though |
@oleavr
When stalking a thread, i want to emit a callout on every call using cmodule but the callout is never called
In the following picture we can see that we entered the if condition in the transform callback but the callout is never called...
To reproduce the issue, use the following code:
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 helloworld.exe targeted can be found here:
helloworld.zip
Same issue if we set the if condition to match each RET instructions
The text was updated successfully, but these errors were encountered: