Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Modern Intel Firmware Tool :sparkles:

This is a new utility to analyze and edit firmware images for Intel platforms.
This is a new utility to analyze and edit firmware images for [Intel platforms](
docs/platforms.md).

Based on knowledge from [`me_cleaner`](https://github.com/corna/me_cleaner),
[MEAnalyzer](https://github.com/platomav/meanalyzer) and related research,
Expand Down
186 changes: 186 additions & 0 deletions docs/intel_flash_partitioning.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17">
<diagram name="Page-1" id="2ttzcccYxrXf6LuwmoEZ">
<mxGraphModel dx="956" dy="559" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="600" pageHeight="400" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="ty_40KtJPAttm_VXtQE8-52" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="120" y="40" width="370" height="510" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-1" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#FF9933;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="180" y="100" width="250" height="410" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-2" value="IFD" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;fontStyle=1;fontSize=20;spacingBottom=4;" parent="1" vertex="1">
<mxGeometry x="185" y="101" width="240" height="29" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-3" value="CSME" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;fontStyle=1;fontSize=20;spacingBottom=4;" parent="1" vertex="1">
<mxGeometry x="185" y="160" width="240" height="150" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-4" value="&quot;BIOS&quot;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;fontStyle=1;fontSize=20;spacingBottom=4;" parent="1" vertex="1">
<mxGeometry x="185" y="310" width="240" height="199" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-26" value="" style="group;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="1" vertex="1" connectable="0">
<mxGeometry x="362" y="190" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-9" value="" style="shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="ty_40KtJPAttm_VXtQE8-26" vertex="1">
<mxGeometry x="40" y="3" width="20" height="15" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-10" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="ty_40KtJPAttm_VXtQE8-9" vertex="1">
<mxGeometry width="20" height="5" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-11" value="&lt;h5&gt;&lt;br&gt;&lt;/h5&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=1;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;" parent="ty_40KtJPAttm_VXtQE8-10" vertex="1">
<mxGeometry width="20" height="5" as="geometry">
<mxRectangle width="20" height="5" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-14" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="ty_40KtJPAttm_VXtQE8-9" vertex="1">
<mxGeometry y="5" width="20" height="5" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-15" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=1;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;" parent="ty_40KtJPAttm_VXtQE8-14" vertex="1">
<mxGeometry width="20" height="5" as="geometry">
<mxRectangle width="20" height="5" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-18" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="ty_40KtJPAttm_VXtQE8-9" vertex="1">
<mxGeometry y="10" width="20" height="5" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-19" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=1;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;" parent="ty_40KtJPAttm_VXtQE8-18" vertex="1">
<mxGeometry width="20" height="5" as="geometry">
<mxRectangle width="20" height="5" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-24" value="&lt;h5 style=&quot;font-size: 8px; line-height: 90%;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;partition&lt;br&gt;&lt;/font&gt;&lt;span style=&quot;background-color: initial; font-weight: normal;&quot;&gt;table&lt;/span&gt;&lt;/h5&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="ty_40KtJPAttm_VXtQE8-26" vertex="1">
<mxGeometry width="40" height="20" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-28" value="" style="group;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="1" vertex="1" connectable="0">
<mxGeometry x="362" y="105" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-29" value="" style="shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;" parent="ty_40KtJPAttm_VXtQE8-28" vertex="1">
<mxGeometry x="40" y="3" width="20" height="15" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-30" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" parent="ty_40KtJPAttm_VXtQE8-29" vertex="1">
<mxGeometry width="20" height="5" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-31" value="&lt;h5&gt;&lt;br&gt;&lt;/h5&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=1;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;" parent="ty_40KtJPAttm_VXtQE8-30" vertex="1">
<mxGeometry width="20" height="5" as="geometry">
<mxRectangle width="20" height="5" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-32" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" parent="ty_40KtJPAttm_VXtQE8-29" vertex="1">
<mxGeometry y="5" width="20" height="5" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-33" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=1;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;" parent="ty_40KtJPAttm_VXtQE8-32" vertex="1">
<mxGeometry width="20" height="5" as="geometry">
<mxRectangle width="20" height="5" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-34" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" parent="ty_40KtJPAttm_VXtQE8-29" vertex="1">
<mxGeometry y="10" width="20" height="5" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-35" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=1;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;" parent="ty_40KtJPAttm_VXtQE8-34" vertex="1">
<mxGeometry width="20" height="5" as="geometry">
<mxRectangle width="20" height="5" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-36" value="&lt;h5 style=&quot;font-size: 8px; line-height: 90%;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;partition&lt;br&gt;&lt;/font&gt;&lt;span style=&quot;background-color: initial; font-weight: normal;&quot;&gt;table&lt;/span&gt;&lt;/h5&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="ty_40KtJPAttm_VXtQE8-28" vertex="1">
<mxGeometry width="40" height="20" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-37" value="" style="group;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="1" vertex="1" connectable="0">
<mxGeometry x="362" y="420" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-38" value="" style="shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;" parent="ty_40KtJPAttm_VXtQE8-37" vertex="1">
<mxGeometry x="40" y="3" width="20" height="15" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-39" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" parent="ty_40KtJPAttm_VXtQE8-38" vertex="1">
<mxGeometry width="20" height="5" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-40" value="&lt;h5&gt;&lt;br&gt;&lt;/h5&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=1;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;" parent="ty_40KtJPAttm_VXtQE8-39" vertex="1">
<mxGeometry width="20" height="5" as="geometry">
<mxRectangle width="20" height="5" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-41" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" parent="ty_40KtJPAttm_VXtQE8-38" vertex="1">
<mxGeometry y="5" width="20" height="5" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-42" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=1;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;" parent="ty_40KtJPAttm_VXtQE8-41" vertex="1">
<mxGeometry width="20" height="5" as="geometry">
<mxRectangle width="20" height="5" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-43" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" parent="ty_40KtJPAttm_VXtQE8-38" vertex="1">
<mxGeometry y="10" width="20" height="5" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-44" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=1;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;" parent="ty_40KtJPAttm_VXtQE8-43" vertex="1">
<mxGeometry width="20" height="5" as="geometry">
<mxRectangle width="20" height="5" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-45" value="&lt;h5 style=&quot;font-size: 8px; line-height: 90%;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;firmware inerface&lt;br&gt;&lt;/font&gt;&lt;span style=&quot;background-color: initial; font-weight: normal;&quot;&gt;table&lt;/span&gt;&lt;/h5&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="ty_40KtJPAttm_VXtQE8-37" vertex="1">
<mxGeometry width="40" height="20" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#d80073;strokeColor=#F0005D;strokeWidth=2;" parent="1" source="ty_40KtJPAttm_VXtQE8-46" target="ty_40KtJPAttm_VXtQE8-42" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="170" y="495" />
<mxPoint x="170" y="530" />
<mxPoint x="445" y="530" />
<mxPoint x="445" y="431" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-46" value="FIT pointer" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;fontStyle=1;labelBorderColor=none;strokeColor=default;" parent="1" vertex="1">
<mxGeometry x="188" y="470" width="112" height="30" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.533;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#0050ef;strokeColor=#5050FC;strokeWidth=2;" parent="1" source="ty_40KtJPAttm_VXtQE8-11" target="ty_40KtJPAttm_VXtQE8-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="450" y="230" as="targetPoint" />
<Array as="points">
<mxPoint x="450" y="196" />
<mxPoint x="450" y="240" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.8;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#0050ef;strokeColor=#5050FC;strokeWidth=2;" parent="1" source="ty_40KtJPAttm_VXtQE8-15" target="ty_40KtJPAttm_VXtQE8-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="460" y="280" as="targetPoint" />
<Array as="points">
<mxPoint x="470" y="200" />
<mxPoint x="470" y="280" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-50" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.002;entryY=0.147;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;strokeColor=#00A800;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="ty_40KtJPAttm_VXtQE8-31" target="ty_40KtJPAttm_VXtQE8-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="460" y="109.5" as="targetPoint" />
<Array as="points">
<mxPoint x="450" y="110" />
<mxPoint x="450" y="80" />
<mxPoint x="160" y="80" />
<mxPoint x="160" y="182" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.176;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;strokeColor=#00A800;strokeWidth=2;" parent="1" source="ty_40KtJPAttm_VXtQE8-29" target="ty_40KtJPAttm_VXtQE8-4" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="470" y="114.5" as="targetPoint" />
<Array as="points">
<mxPoint x="470" y="115" />
<mxPoint x="470" y="60" />
<mxPoint x="140" y="60" />
<mxPoint x="140" y="345" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-53" value="0x00001000" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="190" y="159" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-54" value="0x04000000" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="190" y="309" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="ty_40KtJPAttm_VXtQE8-55" value="0x00000000" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="190" y="99" width="70" height="20" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file added docs/intel_flash_partitioning.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading