mirror of
https://github.com/x64dbg/x64dbg.git
synced 2025-02-24 23:22:37 +00:00
DBG: automatically set breakpoints on TLS callbacks in the PE Header
DBG: updated TitanEngine (again)
This commit is contained in:
parent
7d0b07ab53
commit
1ddb493df1
@ -335,6 +335,13 @@ typedef struct
|
||||
DWORD dwThreadId;
|
||||
void* ThreadStartAddress;
|
||||
void* ThreadLocalBase;
|
||||
void* TebAddress;
|
||||
ULONG WaitTime;
|
||||
LONG Priority;
|
||||
LONG BasePriority;
|
||||
ULONG ContextSwitches;
|
||||
ULONG ThreadState;
|
||||
ULONG WaitReason;
|
||||
} THREAD_ITEM_DATA, *PTHREAD_ITEM_DATA;
|
||||
|
||||
typedef struct
|
||||
|
@ -482,7 +482,25 @@ static void cbCreateProcess(CREATE_PROCESS_DEBUG_INFO* CreateProcessInfo)
|
||||
sprintf(command, "bp "fhex",\"entry breakpoint\",ss", CreateProcessInfo->lpStartAddress);
|
||||
cmddirectexec(dbggetcommandlist(), command);
|
||||
pDebuggedBase=(uint)CreateProcessInfo->lpBaseOfImage;
|
||||
//SetBPX((ULONG_PTR)CreateProcessInfo->lpStartAddress, UE_SINGLESHOOT, (void*)cbEntryBreakpoint);
|
||||
|
||||
DWORD NumberOfCallBacks=0;
|
||||
TLSGrabCallBackData(DebugFileName, 0, &NumberOfCallBacks);
|
||||
if(NumberOfCallBacks)
|
||||
{
|
||||
dprintf("TLS Callbacks: %d\n", NumberOfCallBacks);
|
||||
uint* TLSCallBacks=(uint*)emalloc(NumberOfCallBacks*sizeof(uint), "cbCreateProcess:TLSCallBacks");
|
||||
if(!TLSGrabCallBackData(DebugFileName, TLSCallBacks, &NumberOfCallBacks))
|
||||
dputs("failed to get TLS callback addresses!");
|
||||
else
|
||||
{
|
||||
for(int i=0; i<NumberOfCallBacks; i++)
|
||||
{
|
||||
sprintf(command, "bp "fhex",\"TLS Callback %d\",ss", TLSCallBacks[i], i+1);
|
||||
cmddirectexec(dbggetcommandlist(), command);
|
||||
}
|
||||
}
|
||||
efree(TLSCallBacks, "cbCreateProcess:TLSCallBacks");
|
||||
}
|
||||
}
|
||||
GuiUpdateBreakpointsView();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user