diff --git a/config/config.go b/config/config.go index 38ba07d..8f91aa4 100644 --- a/config/config.go +++ b/config/config.go @@ -170,6 +170,9 @@ type KernelInfo struct { KernelPath string InitrdPath string RootFS string + + // Debug symbols + VmlinuxPath string } type KernelConfig struct { diff --git a/debug.go b/debug.go index 9ffbf65..7a67536 100644 --- a/debug.go +++ b/debug.go @@ -114,7 +114,7 @@ func debugHandler(kcfg config.KernelConfig, workPath, kernRegex, gdb string, return aurora.BgGreen(aurora.Black(name)) } - return aurora.BgRed(aurora.Gray(aurora.Bold(name))) + return aurora.BgRed(aurora.Gray(name)) } fmt.Printf("[*] %s %s %s\n", redgreen("KASLR", kaslr), @@ -156,7 +156,7 @@ func debugHandler(kcfg config.KernelConfig, workPath, kernRegex, gdb string, fmt.Printf("[*] build result copied to %s\n", coloredRemoteFile) fmt.Printf("\n%s\n", q.GetSshCommand()) - fmt.Printf("gdb -ex 'target remote %s'\n\n", gdb) + fmt.Printf("gdb %s -ex 'target remote %s'\n\n", ki.VmlinuxPath, gdb) err = interactive(q) return diff --git a/kernel.go b/kernel.go index f45c389..d1c122f 100644 --- a/kernel.go +++ b/kernel.go @@ -348,6 +348,13 @@ func genHostKernels() (kcfg config.KernelConfig, err error) { InitrdPath: kernelsBase + genInitrdPath(files, k), RootFS: genRootfsImage(dii), } + + vmlinux := "/usr/lib/debug/boot/vmlinux-" + k + log.Println("vmlinux", vmlinux) + if exists(vmlinux) { + ki.VmlinuxPath = vmlinux + } + kcfg.Kernels = append(kcfg.Kernels, ki) }