使IDA pro输入不可见字符

使IDA pro调试时可以输入不可见字符

原理是启动一个tcp监听器,并重定向linux_server的标准流到tcp连接上。

package main

import (
	"flag"
	"fmt"
	"net"
	"os"

	"os/exec"
)

func main() {
	elfPtr := flag.String("cmd", "./linux_server64", "待重定向的ida调试器")
	address := flag.String("addr", "0.0.0.0:1234", "要监听的地址")
	flag.Parse()
	fmt.Println("Launch ELF:", *elfPtr)

	listener, err := net.Listen("tcp", *address)
	if err != nil {
		fmt.Println("Listen error: ", err)
		return
	}
	defer func(listener net.Listener) {
		err := listener.Close()
		if err != nil {

		}
	}(listener)

	accept, err := listener.Accept()
	if err != nil {
		fmt.Println("Listen accept error: ", err)
		return
	}
	cmd := exec.Command(*elfPtr)
	cmd.Stdout = accept
	cmd.Stderr = os.Stderr
	cmd.Stdin = accept
	err = cmd.Start()
	if err != nil {
		fmt.Println("Cannot launch:", err)
		return
	}
	err = cmd.Wait()
	if err != nil {
		return
	}
}

使用方法

  1. 先启动该辅助程序
  2. nc连接(默认端口1234)
  3. 开启ida的debugger

注意事项

每运行一次待调试程序,都需要重新启动该辅助程序,即使该辅助程序仍在运行。

你可能感兴趣的:(pwn,reverse,安全)