Skip to content

Commit

Permalink
Merge pull request #15 from MuertoGB/dev
Browse files Browse the repository at this point in the history
114 merge to main
  • Loading branch information
MuertoGB committed Oct 10, 2023
2 parents 10cfb75 + 6483116 commit 90fdfea
Show file tree
Hide file tree
Showing 62 changed files with 4,496 additions and 2,408 deletions.
38 changes: 22 additions & 16 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,30 @@
<h4 align="center">Version History</h4>
<p align="center">
<a href="#version-113">V1.1.3</a> •
<a href="#version-112">V1.1.2</a> •
<a href="#version-111">V1.1.1</a> •
<a href="#version-110">V1.1.0</a> •
<a href="#version-103">V1.0.3</a> •
<a href="#version-102">V1.0.2</a> •
<a href="#version-101">V1.0.1</a> •
<a href="#version-100">V1.0.0</a> •
<a href="#version-070">V0.7.0</a> •
<a href="#version-060">V0.6.0</a> •
<a href="#version-052">V0.5.2</a> •
<a href="#version-051">V0.5.1</a> •
<a href="#version-050">V0.5.0</a> •
<a href="#version-046">V0.4.6</a> •
<a href="#version-045">V0.4.5</a> •
<a href="#version-044">V0.4.4</a> •
<a href="#version-034">V0.3.4</a>
<a href="#version-101">V1.0.1</a> •
<a href="#version-102">V1.0.2</a> •
<a href="#version-103">V1.0.3</a> •
<a href="#version-110">V1.1.0</a> •
<a href="#version-111">V1.1.1</a> •
<a href="#version-112">V1.1.2</a> •
<a href="#version-113">V1.1.3</a> •
<a href="#version-114">V1.1.4</a>
</p>

## Version 1.1.4

#### Enhancements:
- Implemented single-click functionality for most main window labels, enabling users to instantly copy text to the clipboard.
- Updated the main window copy menu to include all respective descriptor region offsets when copying PDR, ME, and BIOS region data stored in the flash descriptor.
- Introduced an export button in the ROM Information window, enabling users to export the AppleRomSectionInformation data displayed in the window.
- Added '0x' prefix to the beginning of region base data to better represent it as an address.
- Improvements to the AppleEFI firmware parser.
- Added NVRAM base address and size to the debug log.
- User Interface layout changes.

#### Bugs:
- Resolved an issue where the ampersand '&' symbol was not correctly displayed in specific UI elements. This issue was caused by the 'Use Mnemonic' property being set to true.

## Version 1.1.3

#### Enhancements:
Expand Down
32 changes: 22 additions & 10 deletions MANUAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ This section explains the main window and its functionality.
<img src="files/images/met.png">
</kbd>

The executable and main window of the application support drag and drop functionality for files, however, it's important to note that this feature not work if the application is run as an administrator, this limitation is due to the way Windows processes drag and drop operations in elevated privileges.
The executable and main window of the application support drag and drop functionality for files, however, it's important to note that this feature does not work if the application is run as an administrator, this limitation is due to the way Windows processes drag and drop operations in elevated privileges.

Most labels in the main window can be clicked to copy their respective data to the clipboard.

---

Expand Down Expand Up @@ -107,14 +109,14 @@ Clicking the 'Explorer' button will open Windows Explorer at the location of the

The loaded file's size is displayed in bytes, followed by the hexadecimal representation. If the file size is invalid, the data will be shown in red, and any byte discrepancies will be calculated and appended.

> 🛈 8,388,672 • 800040h (>64) would indicate the given firmware is 64 bytes too large.
> 🛈 8,388,615 bytes (800007h) (>7) would indicate the given firmware is 7 bytes too large.
---

#### CRC32:

<kbd>
<img src="files/manual/crc.png">
<img src="files/manual/filecrc.png">
</kbd>

The CRC32 value calculated for the loaded file.
Expand All @@ -124,7 +126,7 @@ The CRC32 value calculated for the loaded file.
#### Created:

<kbd>
<img src="files/manual/created.png">
<img src="files/manual/filecreateddate.png">
</kbd>

The creation date of the loaded file.
Expand All @@ -134,7 +136,7 @@ The creation date of the loaded file.
#### Modified:

<kbd>
<img src="files/manual/modified.png">
<img src="files/manual/filemodifieddate.png">
</kbd>

The last write time of the loaded file.
Expand All @@ -147,7 +149,17 @@ The last write time of the loaded file.
<img src="files/manual/model.png">
</kbd>

First, the application retrieves the model identifier (e.g., IM161) from the UEFI/BIOS and then converts it into a readable format (e.g., iMac16,1). If the Hardware Configuration (HWC) is available in the Fsys store, the application appends the corresponding Configuration Code obtained from the internal database or Apple's server, resulting in a complete model name (e.g., "iMac (21.5-inch, Late 2015)").
Displays the device model number. The application retrieves the model identifier (e.g., IM161) from the UEFI/BIOS and then converts it into a readable format (e.g., iMac16,1)

---

#### Config Code:

<kbd>
<img src="files/manual/configcode.png">
</kbd>

Displays the device configuration code if the Hardware Configuration Code (HWC) is available within the firmware.

---

Expand Down Expand Up @@ -289,7 +301,7 @@ Located at the bottom of the main window, the status bar serves multiple purpose

## Firmware Patcher

This section explains the firmware editor window and its functionality.
This section explains the firmware patcher window and its functionality.

<kbd>
<img src="files/images/firmware_patcher.png">
Expand All @@ -315,7 +327,7 @@ When the "Replace Serial Number" switch is activated, it will enable the 'SSN' t

The application will automatically enforce the required length of the serial number, allowing for either 11 or 12 characters. It will also provide validation to ensure that only valid characters are entered. This helps to ensure that the serial number input meets the necessary criteria and maintains the expected format.

The editor will automatically verify and mask the Fsys Store CRC32 after the serial number patching is complete.
The patcher will automatically verify and mask the Fsys Store CRC32 after the serial number patching is complete.

---

Expand Down Expand Up @@ -368,7 +380,7 @@ The output log serves as a valuable source of information during the validation
</kbd>

**Reset:**\
When you click the 'Reset' button, it initiates a process that resets the editor and unloads any loaded files, such as the Fsys store and ME region.
When you click the 'Reset' button, it initiates a process that resets the patcher and unloads any loaded files, such as the Fsys store and ME region.

**Builds Folder:**\
Navigates to the Builds directory within the working directory, this is where edited binaries are automatically saved when the 'Build' button is used.
Expand All @@ -377,7 +389,7 @@ Navigates to the Builds directory within the working directory, this is where ed
Navigates to the latest build in the file explorer and highlights the file.

**Load Last Build:**\
Clicking this button will close the firmware editor window and load in the last successfully built binary into the main window.
Clicking this button will close the firmware patcher window and load in the last successfully built binary into the main window.

**Build:**\
The 'Build' button generates a new binary file based on the user specified preferences.
Expand Down
14 changes: 9 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<h1 align="center">
<img width="200" src="files/images/img128px.png" alt="SMCFT Logo">
<br>
Mac EFI Toolkit V1.1.3
Mac EFI Toolkit V1.1.4
</h1>

<h4 align="center">A tool for analysis of Mac BIOS/UEFI, with limited editing capabilities.</h4>
<p align="center">
<a href="#about">About</a> •
<a href="#features">Features</a> •
<a href="MANUAL.md">Manual</a> •
<a href="#manual">Manual</a> •
<a href="#download">Download</a> •
<a href="#requirements">Requirements</a> •
<a href="#acknowledgements">Acknowledgements</a> •
Expand All @@ -27,7 +27,7 @@ In terms of editing, the application allows users to replace the System Serial N
<img width="550" src="files/images/met.png" alt="MET">

This application provides support for most Mac BIOS/UEFI, with the exception of editing A1534 firmware (as of now). I continue to perform extensive testing on hundreds of firmwares to ensure compatibility and functionality. As new edge cases or exceptions are discovered, the application is updated accordingly to address them. This commitment to testing and updates ensures that the application remains reliable and effective for a wide range of Mac firmware configurations.
I continue to perform extensive testing on hundreds of firmwares to ensure compatibility and functionality. As new edge cases or exceptions are discovered, the application is updated accordingly to address them. This commitment to testing and updates ensures that the application remains reliable and effective for a wide range of Mac firmware configurations.

## Features

Expand Down Expand Up @@ -83,11 +83,15 @@ This application provides support for most Mac BIOS/UEFI, with the exception of

| Version| Release Date| Latest | Channel |
|--------|-------------|--------|---------|
|[1.1.3](https://github.com/MuertoGB/MacEfiToolkit/releases/latest)| 28th September, 2023 | Yes | Stable |
|[1.1.2](https://github.com/MuertoGB/MacEfiToolkit/releases/112)| 25th September, 2023 | No | Stable |
|[1.1.4](https://github.com/MuertoGB/MacEfiToolkit/releases/latest)| 11th October, 2023 | Yes | Stable |
|[1.1.3](https://github.com/MuertoGB/MacEfiToolkit/releases/113)| 28th September, 2023 | No | Stable |

> 📋 View the full changelog [here](CHANGELOG.md)
## Manual

Instructions on how to use the application can be viewed in [manual](MANUAL.md).

## Requirements

**Application:**
Expand Down
10 changes: 5 additions & 5 deletions files/app/version.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<data>
<MET>
<VersionString>1.1.3</VersionString>
<Build>230928.0615</Build>
<ReleaseDate>28.09.2023</ReleaseDate>
<VersionString>1.1.4</VersionString>
<Build>231010.2332</Build>
<ReleaseDate>11.10.2023</ReleaseDate>
<Channel>Stable</Channel>
<SHA256>0c8f574198596d5d3f7b16d3f1f0774106e5b68b934fbcad712eb2e99dde90a9</SHA256>
<VT>https://www.virustotal.com/gui/file/0c8f574198596d5d3f7b16d3f1f0774106e5b68b934fbcad712eb2e99dde90a9</VT>>
<SHA256>bac7ee16fb17ace21d628d1d7eabef0f70752ee6828903e60987b28a964db9aa</SHA256>
<VT>https://www.virustotal.com/gui/file/bac7ee16fb17ace21d628d1d7eabef0f70752ee6828903e60987b28a964db9aa</VT>>
</MET>
</data>
Binary file modified files/images/met.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified files/images/met_alt.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added files/manual/configcode.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed files/manual/crc.png
Binary file not shown.
Binary file removed files/manual/created.png
Binary file not shown.
Binary file added files/manual/filecrc.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added files/manual/filecreateddate.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added files/manual/filemodifieddate.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified files/manual/filesize.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified files/manual/filesizeinvalid.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified files/manual/intelme.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified files/manual/model.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed files/manual/modified.png
Binary file not shown.
24 changes: 19 additions & 5 deletions mefit/AppVersion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,35 @@ internal static async Task<VersionResult> CheckForNewVersion(string versionUrl)
{
using (WebClient client = new WebClient())
{
byte[] response = await client.DownloadDataTaskAsync(versionUrl);
byte[] response =
await client.DownloadDataTaskAsync(
versionUrl);

using (MemoryStream stream = new MemoryStream(response))
using (XmlReader reader = XmlReader.Create(stream))
{
XmlDocument doc = new XmlDocument();

doc.Load(reader);

XmlNode node = doc.SelectSingleNode("data/MET/VersionString");
XmlNode node =
doc.SelectSingleNode(
"data/MET/VersionString");

if (node == null)
return VersionResult.Error;

Version remoteVersion = new Version(node.InnerText);
Version localVersion = new Version(Application.ProductVersion);
Version remoteVersion =
new Version(
node.InnerText);

Version localVersion =
new Version(
Application.ProductVersion);

return remoteVersion > localVersion ? VersionResult.NewVersionAvailable : VersionResult.UpToDate;
return remoteVersion > localVersion
? VersionResult.NewVersionAvailable
: VersionResult.UpToDate;
}
}
}
Expand Down

0 comments on commit 90fdfea

Please sign in to comment.