go语言逆向技术之---常量字符串解密-家族的遗产漫画

Go语言源代码编译成二进制文件后,源代码中的字符串存放在哪里?是如何组织的?

以下面go语言源代码为例: package main import “fmt” func main() { fmt.Println(“Hello, World!”) }

虽然只是打印一个字符串"Hello, World!",生成的二进制文件中字符串却是非常的多:

 

Go语言二进制文件中字符串是存放在哪里的呢?其实存放的位置遵循的elf格式原则,在.rodata节中(如上图所示)。

有同学会问C语言编译出来的elf格式中字符串也是这样存放的,Go语言的字符串组织方法和C语言的字符串组织方法有什么不同的呢?最大的不同点就是C语言字符串是以’\x00’结尾的,这样不同字符串之间可以方便的以’\x00’来切割,而Go语言的字符串你可以发现是没有’\x00’结尾的,比如上图中"Hello, World!"后面紧接着就是"SIGKILL:"了,没有’\x00’分隔。

Go语言字符串按以下方法来组织:

·        字符串按长度从小到大排列

·        相同长度的字符串按字符比较的方法从小到大排列

·        非可见字符串先转义再存放

另外Go语言字符串一般从go_string位置开始存放,如下图所示

 

逆向时正确切割Go语言字符串方法有两种:

·        进行反汇编,解析汇编指令,确定字符串起始位置和处理长度  

 

 

·        直接根据Go语言字符串组织原则进行切割

基于Go语言字符串组织原则的快速切割算法:

·        1、 搜索确定go_string起始位置

·        2、 设置字符串搜索起始长度为1

·        3、 根据当前字符串长度切割字符串

·        4、 预切割下一个字符串,和当前字符串进行比较,检查是否违反原则,若符合保存当前字符串,继续第3步切割下一个字符串,否则表示字符串有变化进行第5步操作

·        5、 把当前字符串长度加1,继续第3步的搜索,直至全部正确搜索完毕

如下图所示(长度为13个字节的字符串):

 

 

总之咩让我们开始吧 我所理解的道歉啊简而言之可以分成这四个部分:1.你具具体体干了啥?2.你干的屁事儿导致了什么后果?(前面这两点你最好可以壮着胆儿跟你对不起的人沟通沟通)3.最不重要的,你为啥这么干了(除非你能从这一点来反思出下一点的话)4.你今后会怎么做?(注意是要针对 这。一。件。事。的。我已经见过太多人在这一方面给出的答案是我今后会断一段时间的网/去看心理医生之类的老兄这很傻*根本没有说在点上好吗()) 对,就是这么简单!然而说实话我真的很少能看到有人在搞一个公开
2022-10-15
【Hidori Rose & Enafox】 Nekopara [35P 45MB]
2023-06-02
NMIXX上传的Tiktok challenge引发了韩流网友的讨论,发帖人称成员朴珍 LilyM(左边)过于西化的长相并不符合韩国人的审美,之前出道之初还觉得她挺可爱的,但是在出道后却感觉越来越不好看了。如果她退团NMIXX平均颜值会急剧上升。而这篇帖子评论区也开始了对NMIXX成员颜值的指点,有人觉得海媛在集体照是最不好看的。并且不会做表情管理。随着评论区越来越引战,终于粉丝看不下去开始说话了。部分评论:-适可而止吧,完全是人身攻击性发言,说话太过分了。-比其他混血豆好多了,唱歌也好,有些爱
2022-10-01
电影《哆啦A梦:大雄与天空的理想乡》今日发布了终极预告,电影票预售也正式开启。该片由堂山卓见执导、古泽良太编写剧本,是根据日本漫画家藤子·F·不二雄创作的漫画《哆啦A梦》改编的系列动画电影的第42部作品,预计6月1日在国内上映。预告视频:视频截图:
2023-05-19
【Serinide】 Android 21 [38P 376MB]
2023-06-09
金丸祐基创作的漫画《夫妇以上,恋人未满》宣布了动画化企划进行中的消息。有关动画的详细消息,还将于日后公开。
2022-10-28
【Negoto Hitsuji】 Yuni [28P 97MB]
2023-05-02
【Gianna Hades】 Hinata [21P 23MB]
2023-06-01
【Evenink】 Tifa [133P 290MB]
2023-02-25
根据金丸祐基原作制作的TV动画《夫妇以上,恋人未满》公开了第一段PV。在这次的PV中,可以看到男女主角在一起生活的片段。
2022-10-28