【丁丁历险记】Arduino IDE编译ESP8266/ESP32代码加密

  • 【丁丁历险记】全篇索引​​​​​​​​​​​​​​​​​​​​

  • 本节主要讲解如何将ArduinoIDE写成的代码进行加密,公开不可编辑的二进制文件。可以用于烧写到硬件但是不可以进行修改。
  • 加密的思路主要是通过Arduino IDE的编译原理,定位缓存文件,再利用工具进行缓存文件的烧写。

一、查找编译生成的缓存文件

  • 因为整个【丁丁历险记】提供的都是与ESP8266/ESP32的开发技巧,因此本文的上传工具为esptool其他芯片请自行寻找。
  • 因为arduino IDE有一个友好的烧写环境只需要选择好芯片的参数然后点击上传即可完成芯片的烧写十分方便。而arduino IDE内部往往是通过C++进行编写的,所以编译原理往往是大同小异的。都是通过gcc或者g++来进行c文件的编译。软件会通过自身的库管理系统定位到所引用的头文件,以及工程默认引入的头文件。
  • 在 文件->首选项 中将 显示详细输出的两个方框勾选。再次编译的时候你可以找到所有的编译信息,以及编译指令。【丁丁历险记】Arduino IDE编译ESP8266/ESP32代码加密_第1张图片
  • 在输出的细节中可以看到最后在进行烧写的时候执行了一行与esptool相关的指令【丁丁历险记】Arduino IDE编译ESP8266/ESP32代码加密_第2张图片

 (注:这条消息非常明显,因为上面都是白色的下面都是红色的。)

  • 这条消息中涵盖了芯片的型号,内存,烧写数据位置到内存等信息。如果你看过乐心给的烧写工具可以发现这四个文件对应的就是烧写的四个二进制文件。而四个文件中就包含了所有的下载数据。

二、二进制文件烧写

  1. 上一部分的指令中所提到的四个bin文件整理出来,并记录其中需要下载的内存地址。【丁丁历险记】Arduino IDE编译ESP8266/ESP32代码加密_第3张图片
  2. 其中两个文件包含了boot参数以及芯片相关的引导参数,后两个文件主要是编译工程生成的与程序相关的数据。
  3. 再次烧写时,只需要使用pip 安装esptool 使用和arduino IDE中的相同命令即可。

你可能感兴趣的:(arduino,esp32,编译原理,自然语言处理,websocket,机器学习)