Go语言逆向随想录

启动

主函数名叫main_main,以main_开头的函数即为用户函数,后半函数名即为真实函数名。启动从os_init函数初始化。

标准输入输出

输出

函数名叫fmt_Fprintln,第一个参数为(__int64)&go_itab__ptr_os_File_comma__ptr_io_Writer,第三个参数为结构体变量例如(__int64)v1v1结构如下:

1
2
v1[0]=(__int64)&PTYPE_string;
v1[1]=(__inat64)&off_xxxxxx; //即为输出字符串偏移

输入

函数名叫fmt_Fscanln,第一个参数为(__int64)go_itab__ptr_os_File_comma__ptr_io_Writer,第三个参数为结构体变量例如(__int64)v1v1结构如下:

1
2
v1[0]=(__int64)&RTYPE__ptr_string;
v1[1]=(__int64)p_string;

p_string的定义如下:

1
p_string=(string *)runtime_newobject((__int64 *)&RTYPE_string);

输入后取指针:

1
ptr=p_string->ptr;

ptr即指向输入内容,长度为p_string->len

字符串

字符串比较

函数为runtime_memequal