对AES/SM4的逆向代码的学习有感

admin 2024年2月21日22:36:37评论13 views字数 943阅读3分8秒阅读模式

      晚上闲逛,看到一篇好文章《逆向中常见的Hash算法和对称加密算法的分析》(https://bbs.pediy.com/thread-265939.htm);前面学习了几个算法的理论,算是有了个印象和入门;这篇文章从另一个纬度给出了逆向中的结果,是对入门学习的中级班课程,当我有了基础再看时,确实有点过瘾,特截选过来作为对前几篇学习的一个补充,达到了我的最终目标。

      文章对“MD5/SHA、RC4/TEA/DES/AES/SM4/ChaCha20”作了逆向时的代码状态描述、识别姿势,以及给出解密方法,实战价值爆棚,上手即用。

      这里截选AES/SM4来作个引用,因为我前面介绍了AES/SM4的理论部分,

一、AES

AES具有128比特的分组长度,支持128比特、192比特和256比特的密钥长度。
AES的加密过程:

对AES/SM4的逆向代码的学习有感

SubBytes函数:

对AES/SM4的逆向代码的学习有感

识别AES的方法就是找到AES的SubBytes函数中使用的这个S-box。

作者34r7hm4n用一个程序举例,

对AES/SM4的逆向代码的学习有感

在sub_401EC0函数中找到AES的S_box和S_box的逆,基本确定是AES加密,没有找到iv,推测是ECB模式:

对AES/SM4的逆向代码的学习有感

密钥:

对AES/SM4的逆向代码的学习有感

写出注册机:

对AES/SM4的逆向代码的学习有感

至此,AES解密完成。

二、SM4

      SM4是一个分组算法,分组长度为128比特,密钥长度为128比特,其结构是Fesitel网络的一个变体。识别SM4算法的方法同样是找到SM4的S-box;

作者拿2020纵横杯的第一道逆向题friendlyRE举例:

SM4的S-box:

对AES/SM4的逆向代码的学习有感

找到key:

对AES/SM4的逆向代码的学习有感

整个过程大概就是把输入经过SM4加密之后再经过一个变表的BASE64再与"2NI5JKCBI5Hyva+8AZa3mq!!"比较,

对AES/SM4的逆向代码的学习有感

对AES/SM4的逆向代码的学习有感

作者用工具解密:

对AES/SM4的逆向代码的学习有感

Hex2Str,得到最后的flag为:DoyouKnowVEHSEH!

结束语:能在这时候看到作者的文章真是“三生有幸”“春雨贵如油”,给了我对前面学习成果的目标价值提升;前面理论学习花了几个晚上,看这篇文章的片段才花了几分钟,直有“一览众山小、轻舟已过万重山”般刷屏感觉(作者很牛,举重若轻,才让我如沐春风,感觉爽爽);心中感叹,一切付出都会在某个时间有回馈(鼓励鞭策自己)。

原文始发于微信公众号(MicroPest):对AES/SM4的逆向代码的学习有感

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月21日22:36:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   对AES/SM4的逆向代码的学习有感https://cn-sec.com/archives/2510182.html

发表评论

匿名网友 填写信息