mirror of
https://github.com/eliboa/TegraRcmGUI.git
synced 2024-11-08 11:51:45 +00:00
V2.5 :
- TegraRcmSmash updated to v1.2.1-3 - memloader updated to v3 - Added rajkosto's UMS samples to mount eMMC partitions - biskeydump v7 added : dump BIS keys for eMMC content decryption - Added logging console - Fixed #22 : enter problem
This commit is contained in:
parent
076f041175
commit
83b771a186
31 changed files with 528 additions and 53 deletions
40
TegraRcmGUI.sln
Normal file
40
TegraRcmGUI.sln
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 14
|
||||||
|
VisualStudioVersion = 14.0.24720.0
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TegraRcmGUI", "TegraRcmGUI\TegraRcmGUI.vcxproj", "{2C091C5B-378F-44D0-91F2-53489BA7B83C}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
Static Debug|x64 = Static Debug|x64
|
||||||
|
Static Debug|x86 = Static Debug|x86
|
||||||
|
Static Release|x64 = Static Release|x64
|
||||||
|
Static Release|x86 = Static Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x64.Build.0 = Release|x64
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x64.Build.0 = Debug|x64
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x64.ActiveCfg = Release|x64
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x64.Build.0 = Release|x64
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -147,6 +147,7 @@ BEGIN_MESSAGE_MAP(DialogTab01, CDialog)
|
||||||
ON_BN_CLICKED(ID_DEL_FAV, &DialogTab01::OnBnClickedDelFav)
|
ON_BN_CLICKED(ID_DEL_FAV, &DialogTab01::OnBnClickedDelFav)
|
||||||
ON_LBN_DBLCLK(IDC_LIST1, &DialogTab01::OnDblclkList1)
|
ON_LBN_DBLCLK(IDC_LIST1, &DialogTab01::OnDblclkList1)
|
||||||
ON_LBN_SELCHANGE(IDC_LIST1, &DialogTab01::OnLbnSelchangeList1)
|
ON_LBN_SELCHANGE(IDC_LIST1, &DialogTab01::OnLbnSelchangeList1)
|
||||||
|
ON_MESSAGE(DM_GETDEFID, OnGetDefID)
|
||||||
ON_WM_CTLCOLOR()
|
ON_WM_CTLCOLOR()
|
||||||
END_MESSAGE_MAP()
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
@ -245,6 +246,7 @@ void DialogTab01::InjectPayload()
|
||||||
{
|
{
|
||||||
m_TegraRcm->BitmapDisplay(LOADED);
|
m_TegraRcm->BitmapDisplay(LOADED);
|
||||||
m_TegraRcm->SendUserMessage("Payload injected !", VALID);
|
m_TegraRcm->SendUserMessage("Payload injected !", VALID);
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("Payload successfully injected\r\n"));
|
||||||
m_TegraRcm->WAITING_RECONNECT = TRUE;
|
m_TegraRcm->WAITING_RECONNECT = TRUE;
|
||||||
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Payload injected"), TEXT(" "), 1000, NIIF_INFO);
|
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Payload injected"), TEXT(" "), 1000, NIIF_INFO);
|
||||||
}
|
}
|
||||||
|
@ -254,6 +256,10 @@ void DialogTab01::InjectPayload()
|
||||||
string s = "Error while injecting payload (RC=" + std::to_string(rc) + ")";
|
string s = "Error while injecting payload (RC=" + std::to_string(rc) + ")";
|
||||||
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while injecting payload"), 1000, NIIF_ERROR);
|
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while injecting payload"), 1000, NIIF_ERROR);
|
||||||
m_TegraRcm->SendUserMessage(s.c_str(), INVALID);
|
m_TegraRcm->SendUserMessage(s.c_str(), INVALID);
|
||||||
|
CString rc_str;
|
||||||
|
rc_str.Format(L"%d", rc);
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("Error while injecting payload (RC=") + rc_str + TEXT(")\r\n"));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -294,6 +300,7 @@ void DialogTab01::OnBnClickedAddFav()
|
||||||
m_TegraRcm->SaveFavorites();
|
m_TegraRcm->SaveFavorites();
|
||||||
|
|
||||||
m_TegraRcm->SendUserMessage("Favorite added", VALID);
|
m_TegraRcm->SendUserMessage("Favorite added", VALID);
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("New favorite added\r\n"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,6 +316,8 @@ void DialogTab01::OnBnClickedDelFav()
|
||||||
m_TegraRcm->Favorites.RemoveAt(i);
|
m_TegraRcm->Favorites.RemoveAt(i);
|
||||||
m_TegraRcm->SaveFavorites();
|
m_TegraRcm->SaveFavorites();
|
||||||
m_TegraRcm->SendUserMessage("Favorite removed", VALID);
|
m_TegraRcm->SendUserMessage("Favorite removed", VALID);
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("Favorite removed\r\n"));
|
||||||
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -356,3 +365,7 @@ HBRUSH DialogTab01::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
||||||
}
|
}
|
||||||
return hbr;
|
return hbr;
|
||||||
}
|
}
|
||||||
|
LRESULT DialogTab01::OnGetDefID(WPARAM wp, LPARAM lp)
|
||||||
|
{
|
||||||
|
return MAKELONG(0, DC_HASDEFID);
|
||||||
|
}
|
|
@ -40,4 +40,5 @@ public:
|
||||||
afx_msg void OnLbnSelchangeList1();
|
afx_msg void OnLbnSelchangeList1();
|
||||||
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
|
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
|
||||||
COleDropTarget FileDropTarget;
|
COleDropTarget FileDropTarget;
|
||||||
|
afx_msg LRESULT OnGetDefID(WPARAM wp, LPARAM lp);
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,7 +29,8 @@ SOFTWARE.
|
||||||
#include "TegraRcmGUI.h"
|
#include "TegraRcmGUI.h"
|
||||||
#include "afxdialogex.h"
|
#include "afxdialogex.h"
|
||||||
#include "DialogTab02.h"
|
#include "DialogTab02.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <codecvt>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -58,6 +59,7 @@ BEGIN_MESSAGE_MAP(DialogTab02, CDialogEx)
|
||||||
ON_BN_CLICKED(IDC_SHOFEL2, &DialogTab02::OnBnClickedShofel2)
|
ON_BN_CLICKED(IDC_SHOFEL2, &DialogTab02::OnBnClickedShofel2)
|
||||||
// ON_WM_CTLCOLOR()
|
// ON_WM_CTLCOLOR()
|
||||||
ON_WM_CTLCOLOR()
|
ON_WM_CTLCOLOR()
|
||||||
|
ON_BN_CLICKED(IDC_DUMP_BISKEY, &DialogTab02::OnBnClickedDumpBiskey)
|
||||||
END_MESSAGE_MAP()
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,6 +94,16 @@ BOOL DialogTab02::OnInitDialog()
|
||||||
);
|
);
|
||||||
pBtn->SetIcon(hIcn);
|
pBtn->SetIcon(hIcn);
|
||||||
|
|
||||||
|
pBtn = (CButton*)GetDlgItem(IDC_DUMP_BISKEY);
|
||||||
|
pBtn->ModifyStyle(0, BS_ICON);
|
||||||
|
hIcn = (HICON)LoadImage(
|
||||||
|
AfxGetApp()->m_hInstance,
|
||||||
|
MAKEINTRESOURCE(ID_KEYS_ICON),
|
||||||
|
IMAGE_ICON,
|
||||||
|
height, height, // use actual size
|
||||||
|
LR_DEFAULTCOLOR
|
||||||
|
);
|
||||||
|
pBtn->SetIcon(hIcn);
|
||||||
|
|
||||||
CFont* pFont = GetFont();
|
CFont* pFont = GetFont();
|
||||||
LOGFONT lf;
|
LOGFONT lf;
|
||||||
|
@ -99,21 +111,57 @@ BOOL DialogTab02::OnInitDialog()
|
||||||
lf.lfWeight = FW_BOLD;
|
lf.lfWeight = FW_BOLD;
|
||||||
m_BoldFont.CreateFontIndirect(&lf);
|
m_BoldFont.CreateFontIndirect(&lf);
|
||||||
|
|
||||||
|
CComboBox* pmyComboBox = (CComboBox*)GetDlgItem(ID_UMS_COMBO);
|
||||||
|
pmyComboBox->AddString(TEXT("eMMC BOOT0 (DANGEROUS)"));
|
||||||
|
pmyComboBox->AddString(TEXT("eMMC BOOT1 (DANGEROUS)"));
|
||||||
|
pmyComboBox->AddString(TEXT("eMMC rawNAND (DANGEROUS)"));
|
||||||
|
pmyComboBox->AddString(TEXT("MMC - SD Card"));
|
||||||
|
pmyComboBox->SetCurSel(3);
|
||||||
|
|
||||||
|
|
||||||
return TRUE; // return TRUE unless you set the focus to a control
|
return TRUE; // return TRUE unless you set the focus to a control
|
||||||
// EXCEPTION: OCX Property Pages should return FALSE
|
// EXCEPTION: OCX Property Pages should return FALSE
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogTab02::OnBnClickedMountSd()
|
void DialogTab02::OnBnClickedMountSd()
|
||||||
{
|
{
|
||||||
|
CComboBox* pmyComboBox = (CComboBox*)GetDlgItem(ID_UMS_COMBO);
|
||||||
|
if (pmyComboBox->GetCurSel() < 3) {
|
||||||
|
CString message = _T("-----> WARNING <-----\nYou are about to mount internal storage of your Nintendo Switch\nBE VERY CAREFUL ! Do not format or write to your NAND partitions if you don't know what you're doing.\nTHIS COULD BRICK YOUR CONSOLE !!!\n\nAre you really sure you want to continue ?");
|
||||||
|
const int result = MessageBox(message, _T("BEWARE & WARNING"), MB_YESNO | MB_ICONWARNING);
|
||||||
|
if (result != IDYES) {
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("Mount NAND partition ABORTED\r\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_TegraRcm->BitmapDisplay(LOADING);
|
m_TegraRcm->BitmapDisplay(LOADING);
|
||||||
GetParent()->UpdateWindow();
|
GetParent()->UpdateWindow();
|
||||||
string s;
|
string s;
|
||||||
TCHAR args[] = TEXT("memloader\\memloader_usb.bin -r --dataini=memloader\\ums_sd.ini");
|
|
||||||
int rc = m_TegraRcm->Smasher(args);
|
|
||||||
if (rc < 0)
|
TCHAR args[256];
|
||||||
|
switch (pmyComboBox->GetCurSel())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
_tcscpy(args, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_boot0.ini"));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
_tcscpy(args, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_boot1.ini"));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
_tcscpy(args, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_emmc.ini"));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
_tcscpy(args, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_sd.ini"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rc = m_TegraRcm->Smasher(args, FALSE);
|
||||||
|
if (rc < -10)
|
||||||
{
|
{
|
||||||
m_TegraRcm->BitmapDisplay(LOAD_ERROR);
|
m_TegraRcm->BitmapDisplay(LOAD_ERROR);
|
||||||
s = "Error while injecting payload (RC=" + std::to_string(rc) + ")";
|
s = "Error while injecting UMS Tool (RC=" + std::to_string(rc) + ")";
|
||||||
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while injecting payload"), 1000, NIIF_ERROR);
|
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while injecting payload"), 1000, NIIF_ERROR);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -122,8 +170,10 @@ void DialogTab02::OnBnClickedMountSd()
|
||||||
s = "UMS Tool injected";
|
s = "UMS Tool injected";
|
||||||
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("UMS Tool injected"), TEXT(" "), 1000, NIIF_INFO);
|
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("UMS Tool injected"), TEXT(" "), 1000, NIIF_INFO);
|
||||||
}
|
}
|
||||||
CA2T wt(s.c_str());
|
//CA2T wt(s.c_str());
|
||||||
GetParent()->SetDlgItemText(INFO_LABEL, wt);
|
//GetParent()->SetDlgItemText(INFO_LABEL, wt);
|
||||||
|
CString ss(s.c_str());
|
||||||
|
m_TegraRcm->AppendLogBox(ss + TEXT("\r\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -132,8 +182,8 @@ void DialogTab02::OnBnClickedShofel2()
|
||||||
TCHAR *exe_dir = m_TegraRcm->GetAbsolutePath(TEXT(""), CSIDL_APPDATA);
|
TCHAR *exe_dir = m_TegraRcm->GetAbsolutePath(TEXT(""), CSIDL_APPDATA);
|
||||||
|
|
||||||
string s;
|
string s;
|
||||||
TCHAR *COREBOOT_FILE = m_TegraRcm->GetAbsolutePath(TEXT("shofel2\\coreboot\\coreboot.rom"), CSIDL_APPDATA);
|
TCHAR *COREBOOT_FILE = m_TegraRcm->GetAbsolutePath(TEXT("tools\\shofel2\\coreboot\\coreboot.rom"), CSIDL_APPDATA);
|
||||||
TCHAR *PAYLOAD = m_TegraRcm->GetAbsolutePath(TEXT("shofel2\\coreboot\\cbfs.bin"), CSIDL_APPDATA);
|
TCHAR *PAYLOAD = m_TegraRcm->GetAbsolutePath(TEXT("tools\\shofel2\\coreboot\\cbfs.bin"), CSIDL_APPDATA);
|
||||||
CString COREBOOT_FILE2 = COREBOOT_FILE;
|
CString COREBOOT_FILE2 = COREBOOT_FILE;
|
||||||
CString COREBOOT = _T("CBFS+") + COREBOOT_FILE2;
|
CString COREBOOT = _T("CBFS+") + COREBOOT_FILE2;
|
||||||
|
|
||||||
|
@ -143,7 +193,9 @@ void DialogTab02::OnBnClickedShofel2()
|
||||||
BOOL payload_exists = infile2.good();
|
BOOL payload_exists = infile2.good();
|
||||||
|
|
||||||
if (!coreboot_exists || !payload_exists) {
|
if (!coreboot_exists || !payload_exists) {
|
||||||
GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Linux coreboot not found in \\shofel2 dir"));
|
//GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Linux coreboot not found in \\shofel2 dir"));
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("Linux coreboot not found in \\shofel2 di\r\n"));
|
||||||
|
|
||||||
CString message = _T("Kernel not found in shofel2 directory. Do you want to automatically download arch linux kernel from SoulCipher repo ?");
|
CString message = _T("Kernel not found in shofel2 directory. Do you want to automatically download arch linux kernel from SoulCipher repo ?");
|
||||||
const int result = MessageBox(message, _T("Kernel not found"), MB_YESNOCANCEL | MB_ICONQUESTION);
|
const int result = MessageBox(message, _T("Kernel not found"), MB_YESNOCANCEL | MB_ICONQUESTION);
|
||||||
if (result == IDYES)
|
if (result == IDYES)
|
||||||
|
@ -159,27 +211,32 @@ void DialogTab02::OnBnClickedShofel2()
|
||||||
}
|
}
|
||||||
m_TegraRcm->BitmapDisplay(LOADING);
|
m_TegraRcm->BitmapDisplay(LOADING);
|
||||||
GetParent()->UpdateWindow();
|
GetParent()->UpdateWindow();
|
||||||
GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Loading coreboot. Please wait."));
|
//GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Loading coreboot. Please wait."));
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("Linux coreboot not found in \\shofel2 di\r\n"));
|
||||||
|
|
||||||
|
|
||||||
//int rc = device.SmashMain(5, args);
|
//int rc = device.SmashMain(5, args);
|
||||||
TCHAR cmd[MAX_PATH] = TEXT("--relocator= \"");
|
TCHAR cmd[4096] = TEXT("--relocator= \"");
|
||||||
lstrcat(cmd, _tcsdup(PAYLOAD));
|
lstrcat(cmd, _tcsdup(PAYLOAD));
|
||||||
lstrcat(cmd, TEXT("\" \"CBFS:"));
|
lstrcat(cmd, TEXT("\" \"CBFS:"));
|
||||||
lstrcat(cmd, _tcsdup(COREBOOT_FILE));
|
lstrcat(cmd, _tcsdup(COREBOOT_FILE));
|
||||||
lstrcat(cmd, TEXT("\""));
|
lstrcat(cmd, TEXT("\""));
|
||||||
int rc = m_TegraRcm->Smasher(cmd);
|
int rc = m_TegraRcm->Smasher(cmd, FALSE);
|
||||||
|
int test = 1;
|
||||||
if (rc >= 0 || rc < -7)
|
if (rc >= 0 || rc < -7)
|
||||||
{
|
{
|
||||||
GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Coreboot injected. Waiting 5s for device..."));
|
//GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Coreboot injected. Waiting 5s for device..."));
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("Coreboot injected. Waiting 5s for device...\r\n"));
|
||||||
Sleep(5000);
|
Sleep(5000);
|
||||||
|
|
||||||
PROCESS_INFORMATION pif;
|
PROCESS_INFORMATION pif;
|
||||||
STARTUPINFO si;
|
STARTUPINFO si;
|
||||||
ZeroMemory(&si, sizeof(si));
|
ZeroMemory(&si, sizeof(si));
|
||||||
si.cb = sizeof(si);
|
si.cb = sizeof(si);
|
||||||
TCHAR *imx_script = m_TegraRcm->GetAbsolutePath(TEXT("shofel2\\imx_usb.bat"), CSIDL_APPDATA);
|
TCHAR *imx_script = m_TegraRcm->GetAbsolutePath(TEXT("tools\\shofel2\\imx_usb.bat"), CSIDL_APPDATA);
|
||||||
GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Loading coreboot... Please wait."));
|
//GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Loading coreboot... Please wait."));
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("Loading coreboot... Please wait\r\n"));
|
||||||
|
|
||||||
BOOL ret = CreateProcess(imx_script, NULL, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, exe_dir, &si, &pif);
|
BOOL ret = CreateProcess(imx_script, NULL, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, exe_dir, &si, &pif);
|
||||||
int rc = -50;
|
int rc = -50;
|
||||||
if (NULL != ret)
|
if (NULL != ret)
|
||||||
|
@ -200,21 +257,27 @@ void DialogTab02::OnBnClickedShofel2()
|
||||||
m_TegraRcm->BitmapDisplay(LOADED);
|
m_TegraRcm->BitmapDisplay(LOADED);
|
||||||
s = "\nCoreboot loaded !";
|
s = "\nCoreboot loaded !";
|
||||||
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Coreboot loaded "), TEXT(" "), 1000, NIIF_INFO);
|
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Coreboot loaded "), TEXT(" "), 1000, NIIF_INFO);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_TegraRcm->BitmapDisplay(LOAD_ERROR);
|
m_TegraRcm->BitmapDisplay(LOAD_ERROR);
|
||||||
s = "Error while loading imx_usb.exe";
|
s = "Error while loading imx_usb.exe";
|
||||||
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while loading imx_usb.exe"), 1000, NIIF_ERROR);
|
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while loading imx_usb.exe"), 1000, NIIF_ERROR);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
s = "Error while injecting payload. (RC=" + std::to_string(rc) + ")";
|
s = "Error while injecting payload. (RC=" + std::to_string(rc) + ")";
|
||||||
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while injecting payload"), 1000, NIIF_ERROR);
|
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while injecting payload"), 1000, NIIF_ERROR);
|
||||||
|
|
||||||
}
|
}
|
||||||
CA2T wt2(s.c_str());
|
//CA2T wt2(s.c_str());
|
||||||
GetParent()->SetDlgItemText(INFO_LABEL, wt2);
|
//GetParent()->SetDlgItemText(INFO_LABEL, wt2);
|
||||||
|
CString ss(s.c_str());
|
||||||
|
m_TegraRcm->AppendLogBox(ss + TEXT("\r\n"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HBRUSH DialogTab02::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
HBRUSH DialogTab02::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
||||||
|
@ -225,8 +288,98 @@ HBRUSH DialogTab02::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
||||||
{
|
{
|
||||||
case ID_UMSTOOL_TITLE:
|
case ID_UMSTOOL_TITLE:
|
||||||
case ID_LINUX_TITLE:
|
case ID_LINUX_TITLE:
|
||||||
|
case ID_BISKEY_TITLE:
|
||||||
pDC->SelectObject(&m_BoldFont);
|
pDC->SelectObject(&m_BoldFont);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return hbr;
|
return hbr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DialogTab02::OnBnClickedDumpBiskey()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
m_TegraRcm->BitmapDisplay(LOADING);
|
||||||
|
GetParent()->UpdateWindow();
|
||||||
|
TCHAR args[] = TEXT("-w tools\\biskeydump_usb.bin BOOT:0x0");
|
||||||
|
int rc = m_TegraRcm->Smasher(args);
|
||||||
|
|
||||||
|
BOOL keyFound = FALSE;
|
||||||
|
TCHAR *rfile = m_TegraRcm->GetAbsolutePath(TEXT("out.log"), CSIDL_APPDATA);
|
||||||
|
CString Cline;
|
||||||
|
std::wifstream fin(rfile, std::ios::binary);
|
||||||
|
fin.imbue(std::locale(fin.getloc(), new std::codecvt_utf8_utf16<wchar_t>));
|
||||||
|
CString Filename;
|
||||||
|
for (wchar_t c; fin.get(c); ) {
|
||||||
|
CString Cchar(c);
|
||||||
|
if (Cchar == TEXT("\n")) {
|
||||||
|
|
||||||
|
if (Cline.Find(TEXT("HWI")) != -1 ||
|
||||||
|
Cline.Find(TEXT("SBK")) != -1 ||
|
||||||
|
Cline.Find(TEXT("TSEC KEY")) != -1 ||
|
||||||
|
Cline.Find(TEXT("BIS KEY")) != -1) {
|
||||||
|
|
||||||
|
if (!keyFound)
|
||||||
|
{
|
||||||
|
keyFound = TRUE;
|
||||||
|
|
||||||
|
CString szFilter;
|
||||||
|
szFilter = "TXT files (*.txt)|*.txt|All files (*.*)|*.*||";
|
||||||
|
|
||||||
|
CFileDialog FileOpenDialog(
|
||||||
|
FALSE,
|
||||||
|
NULL,
|
||||||
|
TEXT("BIS_keys.txt"),
|
||||||
|
OFN_HIDEREADONLY,
|
||||||
|
szFilter,
|
||||||
|
AfxGetMainWnd());
|
||||||
|
|
||||||
|
if (FileOpenDialog.DoModal() == IDOK)
|
||||||
|
{
|
||||||
|
CFile File;
|
||||||
|
Filename = FileOpenDialog.GetPathName();
|
||||||
|
remove(CT2A(Filename));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
CT2CA pszConvertedAnsiString(Cline + _T('\n'));
|
||||||
|
std::string outLine = pszConvertedAnsiString;
|
||||||
|
fstream outFile;
|
||||||
|
outFile.open(Filename, fstream::in | fstream::out | fstream::app);
|
||||||
|
outFile << outLine;
|
||||||
|
outFile.close();
|
||||||
|
|
||||||
|
}
|
||||||
|
Cline.Empty();
|
||||||
|
}
|
||||||
|
else if (Cchar != TEXT("\r") && Cchar != TEXT("")) {
|
||||||
|
Cline.Append(Cchar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fin.close();
|
||||||
|
|
||||||
|
|
||||||
|
CString s;
|
||||||
|
if (!keyFound)
|
||||||
|
{
|
||||||
|
m_TegraRcm->BitmapDisplay(LOAD_ERROR);
|
||||||
|
s.Append(TEXT("Error while retrieving BIS keys"));
|
||||||
|
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), s, 1000, NIIF_ERROR);
|
||||||
|
s.Append(TEXT("\r\n"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_TegraRcm->BitmapDisplay(LOADED);
|
||||||
|
CString loc(Filename);
|
||||||
|
s.Append(TEXT("BIS keys saved to : "));
|
||||||
|
s.Append(loc);
|
||||||
|
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(s, TEXT(" "), 1000, NIIF_INFO);
|
||||||
|
s.Append(TEXT("\r\n"));
|
||||||
|
|
||||||
|
}
|
||||||
|
m_TegraRcm->AppendLogBox(s);
|
||||||
|
}
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
#include "TegraRcm.h"
|
#include "TegraRcm.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// DialogTab02 dialog
|
// DialogTab02 dialog
|
||||||
|
|
||||||
class DialogTab02 :
|
class DialogTab02 :
|
||||||
|
@ -33,4 +35,5 @@ public:
|
||||||
// HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
|
// HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
|
||||||
|
|
||||||
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
|
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
|
||||||
|
afx_msg void OnBnClickedDumpBiskey();
|
||||||
};
|
};
|
||||||
|
|
|
@ -66,6 +66,7 @@ BEGIN_MESSAGE_MAP(DialogTab03, CDialogEx)
|
||||||
ON_BN_CLICKED(MIN_TO_TRAY, &DialogTab03::OnClickedMinToTray)
|
ON_BN_CLICKED(MIN_TO_TRAY, &DialogTab03::OnClickedMinToTray)
|
||||||
ON_BN_CLICKED(ID_INSTALL_DRIVER, &DialogTab03::OnBnClickedInstallDriver)
|
ON_BN_CLICKED(ID_INSTALL_DRIVER, &DialogTab03::OnBnClickedInstallDriver)
|
||||||
ON_BN_CLICKED(RUN_WINSTART, &DialogTab03::OnBnClickedWinstart)
|
ON_BN_CLICKED(RUN_WINSTART, &DialogTab03::OnBnClickedWinstart)
|
||||||
|
ON_BN_CLICKED(IDC_BUTTON2, &DialogTab03::OnBnClickedButton2)
|
||||||
END_MESSAGE_MAP()
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
|
||||||
|
@ -136,11 +137,14 @@ void DialogTab03::OnBnClickedWinstart()
|
||||||
{
|
{
|
||||||
// Remove shortcut
|
// Remove shortcut
|
||||||
PathAppend(szPath, _T("\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\TegraRcmGUI.lnk"));
|
PathAppend(szPath, _T("\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\TegraRcmGUI.lnk"));
|
||||||
remove(CW2A(szPath));
|
if(remove(CW2A(szPath)) == 0) m_TegraRcm->AppendLogBox(TEXT("Winstart shortcut REMOVED\r\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create new shortcut
|
// Create new shortcut
|
||||||
if (IsCheckChecked) CreateLink();
|
if (IsCheckChecked) {
|
||||||
|
CreateLink();
|
||||||
|
m_TegraRcm->AppendLogBox(TEXT("Winstart shortcut ADDED\r\n"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -218,4 +222,9 @@ void DialogTab03::CleanRegestry() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DialogTab03::OnBnClickedButton2()
|
||||||
|
{
|
||||||
|
m_TegraRcm->SetLocale();
|
||||||
|
}
|
||||||
|
|
|
@ -27,6 +27,9 @@ SOFTWARE.
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "TegraRcm.h"
|
#include "TegraRcm.h"
|
||||||
|
#include <sstream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <codecvt>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -35,7 +38,7 @@ TegraRcm::TegraRcm(CDialog* pParent /*=NULL*/)
|
||||||
m_Parent = pParent;
|
m_Parent = pParent;
|
||||||
m_hWnd = AfxGetMainWnd()->GetSafeHwnd();
|
m_hWnd = AfxGetMainWnd()->GetSafeHwnd();
|
||||||
GetFavorites();
|
GetFavorites();
|
||||||
SendUserMessage("Waiting for device in RCM mode");
|
//SendUserMessage("Waiting for device in RCM mode");
|
||||||
}
|
}
|
||||||
|
|
||||||
TegraRcm::~TegraRcm()
|
TegraRcm::~TegraRcm()
|
||||||
|
@ -303,6 +306,89 @@ LRESULT TegraRcm::OnTrayIconEvent(UINT wParam, LPARAM lParam)
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TegraRcm::SetLocale()
|
||||||
|
{
|
||||||
|
TCHAR *rfile = GetAbsolutePath(TEXT("locale\\french.txt"), CSIDL_APPDATA);
|
||||||
|
std::wifstream wif(rfile);
|
||||||
|
wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
|
||||||
|
if (wif.is_open())
|
||||||
|
{
|
||||||
|
wif.seekg(0, std::ios::beg);
|
||||||
|
std::wstring wline;
|
||||||
|
std::wstring stringName;
|
||||||
|
std::wstring value;
|
||||||
|
std::wstring delimiter = L"=";
|
||||||
|
|
||||||
|
while (wif.good())
|
||||||
|
{
|
||||||
|
std::getline(wif, wline);
|
||||||
|
if (!wif.eof())
|
||||||
|
{
|
||||||
|
if (wline.find(delimiter) != std::string::npos) {
|
||||||
|
stringName = wline.substr(0, wline.find(delimiter));
|
||||||
|
value = wline.substr(wline.find(delimiter) + 1, wline.length() + 1);
|
||||||
|
CString value2 = value.c_str();
|
||||||
|
value2.Replace(_T('#'), '\n');
|
||||||
|
int intValue = stoi(stringName.c_str());;
|
||||||
|
if (intValue > 0) {
|
||||||
|
|
||||||
|
//TCITEM tcItem1;
|
||||||
|
//tcItem1.mask = TCIF_TEXT;
|
||||||
|
//tcItem1.pszText = _T("Test");
|
||||||
|
|
||||||
|
//AfxGetMainWnd()->m_tbCtrl->
|
||||||
|
//m_tbCtrl.InsertItem(0, &tcItem1);
|
||||||
|
//m_Ctrltb1->SetWindowText(_T("test"));
|
||||||
|
|
||||||
|
|
||||||
|
if (m_Ctrltb1->GetDlgItem(intValue)) {
|
||||||
|
m_Ctrltb1->SetDlgItemText(intValue, value2);
|
||||||
|
}
|
||||||
|
if (m_Ctrltb2->GetDlgItem(intValue)) {
|
||||||
|
m_Ctrltb2->SetDlgItemText(intValue, value2);
|
||||||
|
}
|
||||||
|
if (m_Ctrltb3->GetDlgItem(intValue)) {
|
||||||
|
m_Ctrltb3->SetDlgItemText(intValue, value2);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wif.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TegraRcm::AppendLogBox(CString line) {
|
||||||
|
CEdit* pBox = (CEdit*)AfxGetMainWnd()->GetDlgItem(IDC_LOG_BOX);
|
||||||
|
CString Content;
|
||||||
|
pBox->GetWindowText(Content);
|
||||||
|
Content.Append(line);
|
||||||
|
AfxGetMainWnd()->SetDlgItemText(IDC_LOG_BOX, Content);
|
||||||
|
pBox->LineScroll(pBox->GetLineCount());
|
||||||
|
AfxGetMainWnd()->UpdateWindow();
|
||||||
|
|
||||||
|
}
|
||||||
|
void TegraRcm::UpdateLogBox() {
|
||||||
|
TCHAR *rfile = GetAbsolutePath(TEXT("out.log"), CSIDL_APPDATA);
|
||||||
|
CString Cline;
|
||||||
|
std::wifstream fin(rfile, std::ios::binary);
|
||||||
|
fin.imbue(std::locale(fin.getloc(), new std::codecvt_utf8_utf16<wchar_t>));
|
||||||
|
for (wchar_t c; fin.get(c); ) {
|
||||||
|
CString Cchar(c);
|
||||||
|
if (Cchar == TEXT("\n")) {
|
||||||
|
Cline.Append(TEXT("\r\n"));
|
||||||
|
AppendLogBox(Cline);
|
||||||
|
Cline.Empty();
|
||||||
|
}
|
||||||
|
else if(Cchar != TEXT("\r")) {
|
||||||
|
Cline.Append(Cchar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fin.close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Presets functions
|
// Presets functions
|
||||||
|
@ -356,6 +442,10 @@ void TegraRcm::SetPreset(string param, string value)
|
||||||
readFile.close();
|
readFile.close();
|
||||||
remove(CT2A(rfile));
|
remove(CT2A(rfile));
|
||||||
rename(CT2A(wfile), CT2A(rfile));
|
rename(CT2A(wfile), CT2A(rfile));
|
||||||
|
|
||||||
|
CString paramStr(param.c_str()), valueStr(value.c_str());
|
||||||
|
AppendLogBox(TEXT("Preset \"") + paramStr + TEXT("\" set to : ") + valueStr + TEXT("\r\n"));
|
||||||
|
|
||||||
}
|
}
|
||||||
void TegraRcm::GetFavorites()
|
void TegraRcm::GetFavorites()
|
||||||
{
|
{
|
||||||
|
@ -436,6 +526,7 @@ void TegraRcm::AddFavorite(CString value)
|
||||||
outFile.open(GetAbsolutePath(TEXT("favorites.conf"), CSIDL_APPDATA), fstream::in | fstream::out | fstream::app);
|
outFile.open(GetAbsolutePath(TEXT("favorites.conf"), CSIDL_APPDATA), fstream::in | fstream::out | fstream::app);
|
||||||
outFile << outLine;
|
outFile << outLine;
|
||||||
outFile.close();
|
outFile.close();
|
||||||
|
|
||||||
}
|
}
|
||||||
void TegraRcm::SaveFavorites()
|
void TegraRcm::SaveFavorites()
|
||||||
{
|
{
|
||||||
|
@ -492,8 +583,13 @@ void TegraRcm::SendUserMessage(string message, int type)
|
||||||
LabelColor = RGB(0, 0, 0);
|
LabelColor = RGB(0, 0, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
AfxGetMainWnd()->SetDlgItemText(INFO_LABEL, wmessage);
|
//AfxGetMainWnd()->SetDlgItemText(INFO_LABEL, wmessage);
|
||||||
AppendLog(message);
|
AppendLog(message);
|
||||||
|
/*
|
||||||
|
CString msgStr(message.c_str());
|
||||||
|
msgStr.Append(TEXT("\r\n"));
|
||||||
|
AppendLogBox(msgStr);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -622,7 +718,9 @@ void TegraRcm::LookUp()
|
||||||
m_Ctrltb1->GetDlgItem(IDC_INJECT)->EnableWindow(TRUE);
|
m_Ctrltb1->GetDlgItem(IDC_INJECT)->EnableWindow(TRUE);
|
||||||
m_Ctrltb2->GetDlgItem(IDC_SHOFEL2)->EnableWindow(TRUE);
|
m_Ctrltb2->GetDlgItem(IDC_SHOFEL2)->EnableWindow(TRUE);
|
||||||
m_Ctrltb2->GetDlgItem(IDC_MOUNT_SD)->EnableWindow(TRUE);
|
m_Ctrltb2->GetDlgItem(IDC_MOUNT_SD)->EnableWindow(TRUE);
|
||||||
|
m_Ctrltb2->GetDlgItem(IDC_DUMP_BISKEY)->EnableWindow(TRUE);
|
||||||
m_Ctrltb3->GetDlgItem(ID_INSTALL_DRIVER)->EnableWindow(FALSE);
|
m_Ctrltb3->GetDlgItem(ID_INSTALL_DRIVER)->EnableWindow(FALSE);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
// RCM Status = "USB Driver KO"
|
// RCM Status = "USB Driver KO"
|
||||||
|
@ -631,6 +729,7 @@ void TegraRcm::LookUp()
|
||||||
m_Ctrltb1->GetDlgItem(IDC_INJECT)->EnableWindow(FALSE);
|
m_Ctrltb1->GetDlgItem(IDC_INJECT)->EnableWindow(FALSE);
|
||||||
m_Ctrltb2->GetDlgItem(IDC_SHOFEL2)->EnableWindow(FALSE);
|
m_Ctrltb2->GetDlgItem(IDC_SHOFEL2)->EnableWindow(FALSE);
|
||||||
m_Ctrltb2->GetDlgItem(IDC_MOUNT_SD)->EnableWindow(FALSE);
|
m_Ctrltb2->GetDlgItem(IDC_MOUNT_SD)->EnableWindow(FALSE);
|
||||||
|
m_Ctrltb2->GetDlgItem(IDC_DUMP_BISKEY)->EnableWindow(FALSE);
|
||||||
m_Ctrltb3->GetDlgItem(ID_INSTALL_DRIVER)->EnableWindow(TRUE);
|
m_Ctrltb3->GetDlgItem(ID_INSTALL_DRIVER)->EnableWindow(TRUE);
|
||||||
}
|
}
|
||||||
// RCM Status = "RCM not detected"
|
// RCM Status = "RCM not detected"
|
||||||
|
@ -639,6 +738,7 @@ void TegraRcm::LookUp()
|
||||||
m_Ctrltb1->GetDlgItem(IDC_INJECT)->EnableWindow(FALSE);
|
m_Ctrltb1->GetDlgItem(IDC_INJECT)->EnableWindow(FALSE);
|
||||||
m_Ctrltb2->GetDlgItem(IDC_SHOFEL2)->EnableWindow(FALSE);
|
m_Ctrltb2->GetDlgItem(IDC_SHOFEL2)->EnableWindow(FALSE);
|
||||||
m_Ctrltb2->GetDlgItem(IDC_MOUNT_SD)->EnableWindow(FALSE);
|
m_Ctrltb2->GetDlgItem(IDC_MOUNT_SD)->EnableWindow(FALSE);
|
||||||
|
m_Ctrltb2->GetDlgItem(IDC_DUMP_BISKEY)->EnableWindow(FALSE);
|
||||||
m_Ctrltb3->GetDlgItem(ID_INSTALL_DRIVER)->EnableWindow(TRUE);
|
m_Ctrltb3->GetDlgItem(ID_INSTALL_DRIVER)->EnableWindow(TRUE);
|
||||||
// Delay Auto inject if needed
|
// Delay Auto inject if needed
|
||||||
if (AUTOINJECT_CURR) DELAY_AUTOINJECT = TRUE;
|
if (AUTOINJECT_CURR) DELAY_AUTOINJECT = TRUE;
|
||||||
|
@ -654,6 +754,8 @@ void TegraRcm::LookUp()
|
||||||
// Status changed to "RCM Detected"
|
// Status changed to "RCM Detected"
|
||||||
if (rc == 0)
|
if (rc == 0)
|
||||||
{
|
{
|
||||||
|
AppendLogBox(TEXT("RCM Device detected\r\n"));
|
||||||
|
|
||||||
BitmapDisplay(RCM_DETECTED);
|
BitmapDisplay(RCM_DETECTED);
|
||||||
|
|
||||||
CString file;
|
CString file;
|
||||||
|
@ -665,7 +767,7 @@ void TegraRcm::LookUp()
|
||||||
if(AUTOINJECT_CURR) DELAY_AUTOINJECT = TRUE;
|
if(AUTOINJECT_CURR) DELAY_AUTOINJECT = TRUE;
|
||||||
else DELAY_AUTOINJECT = FALSE;
|
else DELAY_AUTOINJECT = FALSE;
|
||||||
}
|
}
|
||||||
if (DELAY_AUTOINJECT && file.GetLength() > 0)
|
if (DELAY_AUTOINJECT && file.GetLength() > 0 && AUTOINJECT_CURR)
|
||||||
{
|
{
|
||||||
|
|
||||||
BitmapDisplay(LOADING);
|
BitmapDisplay(LOADING);
|
||||||
|
@ -678,7 +780,8 @@ void TegraRcm::LookUp()
|
||||||
if (rc >= 0)
|
if (rc >= 0)
|
||||||
{
|
{
|
||||||
BitmapDisplay(LOADED);
|
BitmapDisplay(LOADED);
|
||||||
SendUserMessage("Payload injected !", VALID);
|
//SendUserMessage("Payload injected !", VALID);
|
||||||
|
AppendLogBox(TEXT("Payload successfully injected\r\n"));
|
||||||
if (!CmdShow) ShowTrayIconBalloon(TEXT("Payload injected"), TEXT(" "), 1000, NIIF_INFO);
|
if (!CmdShow) ShowTrayIconBalloon(TEXT("Payload injected"), TEXT(" "), 1000, NIIF_INFO);
|
||||||
WAITING_RECONNECT = TRUE;
|
WAITING_RECONNECT = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -686,15 +789,19 @@ void TegraRcm::LookUp()
|
||||||
{
|
{
|
||||||
BitmapDisplay(LOAD_ERROR);
|
BitmapDisplay(LOAD_ERROR);
|
||||||
string s = "Error while injecting payload (RC=" + std::to_string(rc) + ")";
|
string s = "Error while injecting payload (RC=" + std::to_string(rc) + ")";
|
||||||
CString error = TEXT("Error while injecting payload");
|
CString rc_str;
|
||||||
|
rc_str.Format(L"%d", rc);
|
||||||
|
CString error = TEXT("Error while injecting payload (RC=") + rc_str + TEXT(")");
|
||||||
if (!CmdShow) ShowTrayIconBalloon(TEXT("Error"), error, 1000, NIIF_ERROR);
|
if (!CmdShow) ShowTrayIconBalloon(TEXT("Error"), error, 1000, NIIF_ERROR);
|
||||||
SendUserMessage(s.c_str(), INVALID);
|
//SendUserMessage(s.c_str(), INVALID);
|
||||||
|
AppendLogBox(error);
|
||||||
|
|
||||||
}
|
}
|
||||||
DELAY_AUTOINJECT = FALSE;
|
DELAY_AUTOINJECT = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SendUserMessage("Waiting for user action");
|
SendUserMessage(labels[20].name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Status changed to "RCM not detected" or "USB driver KO"
|
// Status changed to "RCM not detected" or "USB driver KO"
|
||||||
|
@ -704,6 +811,7 @@ void TegraRcm::LookUp()
|
||||||
if (rc > -5)
|
if (rc > -5)
|
||||||
{
|
{
|
||||||
BitmapDisplay(DRIVER_KO);
|
BitmapDisplay(DRIVER_KO);
|
||||||
|
AppendLogBox(TEXT("RCM device detected but APX driver is not installed\r\n"));
|
||||||
InstallDriver();
|
InstallDriver();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -711,12 +819,15 @@ void TegraRcm::LookUp()
|
||||||
if (LookForAPXDevice())
|
if (LookForAPXDevice())
|
||||||
{
|
{
|
||||||
BitmapDisplay(DRIVER_KO);
|
BitmapDisplay(DRIVER_KO);
|
||||||
|
AppendLogBox(TEXT("RCM device detected but APX driver is not installed\r\n"));
|
||||||
InstallDriver();
|
InstallDriver();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BitmapDisplay(RCM_NOT_DETECTED);
|
BitmapDisplay(RCM_NOT_DETECTED);
|
||||||
if (FIRST_LOOKUP) SendUserMessage("Waiting for device in RCM mode");;
|
if (!FIRST_LOOKUP) AppendLogBox(TEXT("RCM device disconnected\r\n"));
|
||||||
|
else AppendLogBox(TEXT("No RCM device detected\r\n"));
|
||||||
|
if (FIRST_LOOKUP) SendUserMessage(labels[21].name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -733,7 +844,7 @@ void TegraRcm::LookUp()
|
||||||
//
|
//
|
||||||
// Smasher => TegraRcmSmash.exe calls
|
// Smasher => TegraRcmSmash.exe calls
|
||||||
//
|
//
|
||||||
int TegraRcm::Smasher(TCHAR args[])
|
int TegraRcm::Smasher(TCHAR args[4096], BOOL bInheritHandles)
|
||||||
{
|
{
|
||||||
if (WAITING_RECONNECT)
|
if (WAITING_RECONNECT)
|
||||||
{
|
{
|
||||||
|
@ -747,11 +858,29 @@ int TegraRcm::Smasher(TCHAR args[])
|
||||||
}
|
}
|
||||||
WAITING_RECONNECT = FALSE;
|
WAITING_RECONNECT = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This should fix RC-50 issue, ! At last.
|
||||||
|
TCHAR szPath[_MAX_PATH];
|
||||||
|
VERIFY(::GetModuleFileName(AfxGetApp()->m_hInstance, szPath, _MAX_PATH));
|
||||||
|
CString csPathf(szPath);
|
||||||
|
int nIndex = csPathf.ReverseFind(_T('\\'));
|
||||||
|
if (nIndex > 0) csPath = csPathf.Left(nIndex);
|
||||||
|
else csPath.Empty();
|
||||||
|
CString csPath2(csPath);
|
||||||
|
csPath.Append(TEXT(".\\TegraRcmSmash.exe "));
|
||||||
|
TCHAR cmd[4096];
|
||||||
|
_tcscpy_s(cmd, csPath);
|
||||||
|
lstrcat(cmd, args);
|
||||||
|
|
||||||
|
|
||||||
SECURITY_ATTRIBUTES sa;
|
SECURITY_ATTRIBUTES sa;
|
||||||
sa.nLength = sizeof(sa);
|
sa.nLength = sizeof(sa);
|
||||||
sa.lpSecurityDescriptor = NULL;
|
sa.lpSecurityDescriptor = NULL;
|
||||||
sa.bInheritHandle = TRUE;
|
sa.bInheritHandle = TRUE;
|
||||||
|
|
||||||
|
TCHAR *rfile = GetAbsolutePath(TEXT("out.log"), CSIDL_APPDATA);
|
||||||
|
remove(CT2A(rfile));
|
||||||
|
|
||||||
PROCESS_INFORMATION pi;
|
PROCESS_INFORMATION pi;
|
||||||
STARTUPINFO si;
|
STARTUPINFO si;
|
||||||
BOOL ret = FALSE;
|
BOOL ret = FALSE;
|
||||||
|
@ -761,20 +890,24 @@ int TegraRcm::Smasher(TCHAR args[])
|
||||||
si.cb = sizeof(STARTUPINFO);
|
si.cb = sizeof(STARTUPINFO);
|
||||||
si.dwFlags |= STARTF_USESTDHANDLES;
|
si.dwFlags |= STARTF_USESTDHANDLES;
|
||||||
si.hStdInput = NULL;
|
si.hStdInput = NULL;
|
||||||
|
if (bInheritHandles) {
|
||||||
|
HANDLE h = CreateFile(rfile,
|
||||||
|
GENERIC_WRITE,
|
||||||
|
FILE_SHARE_WRITE | FILE_SHARE_READ,
|
||||||
|
&sa,
|
||||||
|
OPEN_ALWAYS,
|
||||||
|
FILE_ATTRIBUTE_NORMAL,
|
||||||
|
NULL);
|
||||||
|
si.hStdError = h;
|
||||||
|
si.hStdOutput = h;
|
||||||
|
}
|
||||||
|
|
||||||
// This should fix RC-50 issue, ! At last.
|
CString argsStr(args);
|
||||||
TCHAR szPath[_MAX_PATH];
|
CString msgStr(TEXT("Invoking TegraRcmSmash.exe with args : ") + argsStr + TEXT("\r\n"));
|
||||||
VERIFY(::GetModuleFileName(AfxGetApp()->m_hInstance, szPath, _MAX_PATH));
|
AppendLogBox(msgStr);
|
||||||
CString csPathf(szPath);
|
|
||||||
int nIndex = csPathf.ReverseFind(_T('\\'));
|
|
||||||
if (nIndex > 0) csPath = csPathf.Left(nIndex);
|
ret = CreateProcess(NULL, cmd, NULL, NULL, bInheritHandles, flags, NULL, NULL, &si, &pi);
|
||||||
else csPath.Empty();
|
|
||||||
csPath.Append(TEXT(".\\TegraRcmSmash.exe "));
|
|
||||||
TCHAR cmd[MAX_PATH];
|
|
||||||
_tcscpy_s(cmd, csPath);
|
|
||||||
lstrcat(cmd, args);
|
|
||||||
|
|
||||||
ret = CreateProcess(NULL, cmd, NULL, NULL, FALSE, flags, NULL, NULL, &si, &pi);
|
|
||||||
int rc = -50;
|
int rc = -50;
|
||||||
if (NULL != ret)
|
if (NULL != ret)
|
||||||
{
|
{
|
||||||
|
@ -802,8 +935,7 @@ int TegraRcm::Smasher(TCHAR args[])
|
||||||
CloseHandle(pi.hThread);
|
CloseHandle(pi.hThread);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
int lastErrorCode = GetLastError();
|
||||||
int lastErrorCode = GetLastError();
|
|
||||||
LPWSTR lpMsgBuf = NULL;
|
LPWSTR lpMsgBuf = NULL;
|
||||||
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -814,9 +946,14 @@ int TegraRcm::Smasher(TCHAR args[])
|
||||||
NULL);
|
NULL);
|
||||||
std::string MyString = CW2A(lpMsgBuf);
|
std::string MyString = CW2A(lpMsgBuf);
|
||||||
std::string intStr = std::to_string(lastErrorCode);
|
std::string intStr = std::to_string(lastErrorCode);
|
||||||
AppendLog(intStr);
|
//AppendLog(intStr);
|
||||||
AppendLog(MyString);
|
//AppendLog(MyString);
|
||||||
|
|
||||||
|
CString CLogBuf(lpMsgBuf);
|
||||||
|
msgStr = TEXT("Error : ") + CLogBuf + TEXT("\r\n");
|
||||||
|
}
|
||||||
|
if (bInheritHandles) {
|
||||||
|
UpdateLogBox();
|
||||||
}
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -919,7 +1056,7 @@ TCHAR* TegraRcm::GetAbsolutePath(TCHAR* relative_path, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
BOOL PORTABLE = FALSE;
|
BOOL PORTABLE = TRUE;
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include <Strsafe.h>
|
#include <Strsafe.h>
|
||||||
#include "afxcmn.h"
|
#include "afxcmn.h"
|
||||||
#include <tlhelp32.h>
|
#include <tlhelp32.h>
|
||||||
|
|
||||||
#pragma comment (lib, "setupapi.lib")
|
#pragma comment (lib, "setupapi.lib")
|
||||||
|
|
||||||
class TegraRcm
|
class TegraRcm
|
||||||
|
@ -30,6 +31,9 @@ public:
|
||||||
int GetRcmStatus();
|
int GetRcmStatus();
|
||||||
ULONGLONG GetDllVersion(LPCTSTR lpszDllName);
|
ULONGLONG GetDllVersion(LPCTSTR lpszDllName);
|
||||||
TCHAR* GetAbsolutePath(TCHAR* relative_path, DWORD dwFlags);
|
TCHAR* GetAbsolutePath(TCHAR* relative_path, DWORD dwFlags);
|
||||||
|
void SetLocale();
|
||||||
|
void AppendLogBox(CString line);
|
||||||
|
void UpdateLogBox();
|
||||||
string GetPreset(string param);
|
string GetPreset(string param);
|
||||||
void InstallDriver();
|
void InstallDriver();
|
||||||
BOOL LookForAPXDevice();
|
BOOL LookForAPXDevice();
|
||||||
|
@ -41,7 +45,7 @@ public:
|
||||||
void SaveFavorites();
|
void SaveFavorites();
|
||||||
void BitmapDisplay(int IMG);
|
void BitmapDisplay(int IMG);
|
||||||
void LookUp();
|
void LookUp();
|
||||||
int Smasher(TCHAR args[]);
|
int Smasher(TCHAR args[], BOOL bInheritHandles = TRUE);
|
||||||
char* GetRelativeFilename(char *currentDirectory, char *absoluteFilename);
|
char* GetRelativeFilename(char *currentDirectory, char *absoluteFilename);
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,6 +86,38 @@ public:
|
||||||
CDialog* m_Ctrltb1;
|
CDialog* m_Ctrltb1;
|
||||||
CDialog* m_Ctrltb2;
|
CDialog* m_Ctrltb2;
|
||||||
CDialog* m_Ctrltb3;
|
CDialog* m_Ctrltb3;
|
||||||
|
|
||||||
|
struct Label {
|
||||||
|
int uid;
|
||||||
|
string name;
|
||||||
|
};
|
||||||
|
|
||||||
|
Label labels[23] = {
|
||||||
|
{ 0, "TegraRcmGUI"},
|
||||||
|
{ 1, "No file selected" },
|
||||||
|
{ 2, "File doesn't exist" },
|
||||||
|
{ 3, "Injecting payload..." },
|
||||||
|
{ 4, "Payload injected !" },
|
||||||
|
{ 5, "Error while injecting payload" },
|
||||||
|
{ 6, "Favorite already exists" },
|
||||||
|
{ 7, "Favorite added" },
|
||||||
|
{ 8, "Favorite removed" },
|
||||||
|
{ 9, "UMS Tool injected" },
|
||||||
|
{ 10, "Linux coreboot not found in \\shofel2 dir" },
|
||||||
|
{ 11, "Kernel not found in shofel2 directory. Do you want to automatically download arch linux kernel from SoulCipher repo ?" },
|
||||||
|
{ 12, "Kernel not found" },
|
||||||
|
{ 13, "Loading coreboot. Please wait." },
|
||||||
|
{ 14, "Coreboot injected. Waiting 5s for device..." },
|
||||||
|
{ 15, "Coreboot loaded " },
|
||||||
|
{ 16, "Error" },
|
||||||
|
{ 17, "Error while loading imx_usb.exe" },
|
||||||
|
{ 18, "APX device driver is missing. Do you want to install it now ?" },
|
||||||
|
{ 19, "APX driver not found !" },
|
||||||
|
{ 20, "Waiting for user action" },
|
||||||
|
{ 21, "Waiting for device in RCM mode" },
|
||||||
|
{ 22, "Payload already injected. Are you sure you want to overwrite the stack again ?" }
|
||||||
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HWND m_hWnd;
|
HWND m_hWnd;
|
||||||
TegraRcmSmash m_Device;
|
TegraRcmSmash m_Device;
|
||||||
|
|
Binary file not shown.
|
@ -253,6 +253,7 @@
|
||||||
<Image Include="res\add.ico" />
|
<Image Include="res\add.ico" />
|
||||||
<Image Include="res\bitmap2.bmp" />
|
<Image Include="res\bitmap2.bmp" />
|
||||||
<Image Include="res\browse.ico" />
|
<Image Include="res\browse.ico" />
|
||||||
|
<Image Include="res\bunch-of-keys.ico" />
|
||||||
<Image Include="res\delete.ico" />
|
<Image Include="res\delete.ico" />
|
||||||
<Image Include="res\driver_ko.bmp" />
|
<Image Include="res\driver_ko.bmp" />
|
||||||
<Image Include="res\driver_ko_2.bmp" />
|
<Image Include="res\driver_ko_2.bmp" />
|
||||||
|
|
|
@ -194,5 +194,8 @@
|
||||||
<Image Include="res\init_logo_2.bmp">
|
<Image Include="res\init_logo_2.bmp">
|
||||||
<Filter>Resource Files</Filter>
|
<Filter>Resource Files</Filter>
|
||||||
</Image>
|
</Image>
|
||||||
|
<Image Include="res\bunch-of-keys.ico">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</Image>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -123,7 +123,7 @@ BOOL CTegraRcmGUIDlg::OnInitDialog()
|
||||||
CRect rc;
|
CRect rc;
|
||||||
AfxGetMainWnd()->GetWindowRect(rc);
|
AfxGetMainWnd()->GetWindowRect(rc);
|
||||||
int width = rc.Width();
|
int width = rc.Width();
|
||||||
|
int fontSize = width * 0.031;
|
||||||
if (width < 400)
|
if (width < 400)
|
||||||
{
|
{
|
||||||
RCM_BITMAP0.SetBitmap(INIT_LOGO_2);
|
RCM_BITMAP0.SetBitmap(INIT_LOGO_2);
|
||||||
|
@ -144,6 +144,26 @@ BOOL CTegraRcmGUIDlg::OnInitDialog()
|
||||||
RCM_BITMAP5.SetBitmap(LOADED);
|
RCM_BITMAP5.SetBitmap(LOADED);
|
||||||
RCM_BITMAP6.SetBitmap(LOAD_ERROR);
|
RCM_BITMAP6.SetBitmap(LOAD_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Log Box
|
||||||
|
LOGFONT lf;
|
||||||
|
/*
|
||||||
|
CEdit* pBox = (CEdit*)AfxGetMainWnd()->GetDlgItem(IDC_LOG_BOX);
|
||||||
|
CFont* old = pBox->GetFont();
|
||||||
|
old->GetLogFont(&lf);
|
||||||
|
CFont newfont;
|
||||||
|
newfont.CreateFont(lf.lfHeight + 30, 0, lf.lfEscapement, lf.lfOrientation, lf.lfWeight, lf.lfItalic, lf.lfUnderline, lf.lfStrikeOut, lf.lfCharSet, lf.lfOutPrecision, lf.lfClipPrecision, lf.lfQuality, lf.lfPitchAndFamily, lf.lfFaceName);
|
||||||
|
pBox->SetFont(&newfont);
|
||||||
|
*/
|
||||||
|
|
||||||
|
CEdit* pBox = (CEdit*)AfxGetMainWnd()->GetDlgItem(IDC_LOG_BOX);
|
||||||
|
|
||||||
|
CFont *myFont = new CFont();
|
||||||
|
myFont->CreateFont(fontSize, 0, 0, 0, FW_NORMAL, false, false,
|
||||||
|
0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
|
||||||
|
FIXED_PITCH | FF_MODERN, _T("Verdana"));
|
||||||
|
|
||||||
|
pBox->SetFont(myFont);
|
||||||
|
|
||||||
|
|
||||||
// Menu
|
// Menu
|
||||||
|
@ -168,7 +188,6 @@ BOOL CTegraRcmGUIDlg::OnInitDialog()
|
||||||
SetIcon(m_hIcon, FALSE); // Set small icon
|
SetIcon(m_hIcon, FALSE); // Set small icon
|
||||||
|
|
||||||
m_TegraRcm = new TegraRcm(this);
|
m_TegraRcm = new TegraRcm(this);
|
||||||
|
|
||||||
m_TegraRcm->AppendLog("new TegraRcm()");
|
m_TegraRcm->AppendLog("new TegraRcm()");
|
||||||
|
|
||||||
// Kill other running process of app
|
// Kill other running process of app
|
||||||
|
@ -204,6 +223,8 @@ BOOL CTegraRcmGUIDlg::OnInitDialog()
|
||||||
// Start timer to check RCM status every second
|
// Start timer to check RCM status every second
|
||||||
CTegraRcmGUIDlg::StartTimer();
|
CTegraRcmGUIDlg::StartTimer();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
void CTegraRcmGUIDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
void CTegraRcmGUIDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
||||||
|
@ -220,18 +241,25 @@ HBRUSH CTegraRcmGUIDlg::OnCtlColor(CDC* pDC, CWnd *pWnd, UINT nCtlColor)
|
||||||
switch (nCtlColor)
|
switch (nCtlColor)
|
||||||
{
|
{
|
||||||
case CTLCOLOR_STATIC:
|
case CTLCOLOR_STATIC:
|
||||||
|
/*
|
||||||
if (GetDlgItem(IDC_RAJKOSTO)->GetSafeHwnd() == pWnd->GetSafeHwnd() || GetDlgItem(SEPARATOR)->GetSafeHwnd() == pWnd->GetSafeHwnd())
|
if (GetDlgItem(IDC_RAJKOSTO)->GetSafeHwnd() == pWnd->GetSafeHwnd() || GetDlgItem(SEPARATOR)->GetSafeHwnd() == pWnd->GetSafeHwnd())
|
||||||
{
|
{
|
||||||
pDC->SetTextColor(RGB(192, 192, 192));
|
pDC->SetTextColor(RGB(192, 192, 192));
|
||||||
pDC->SetBkMode(TRANSPARENT);
|
pDC->SetBkMode(TRANSPARENT);
|
||||||
return (HBRUSH)GetStockObject(NULL_BRUSH);
|
return (HBRUSH)GetStockObject(NULL_BRUSH);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (GetDlgItem(INFO_LABEL)->GetSafeHwnd() == pWnd->GetSafeHwnd())
|
if (GetDlgItem(INFO_LABEL)->GetSafeHwnd() == pWnd->GetSafeHwnd())
|
||||||
{
|
{
|
||||||
pDC->SetBkMode(TRANSPARENT);
|
pDC->SetBkMode(TRANSPARENT);
|
||||||
pDC->SetTextColor(m_TegraRcm->LabelColor);
|
pDC->SetTextColor(m_TegraRcm->LabelColor);
|
||||||
return (HBRUSH) CreateSolidBrush( WhiteRGB );
|
return (HBRUSH) CreateSolidBrush( WhiteRGB );
|
||||||
}
|
}
|
||||||
|
if (GetDlgItem(IDC_LOG_BOX)->GetSafeHwnd() == pWnd->GetSafeHwnd())
|
||||||
|
{
|
||||||
|
pDC->SetBkMode(TRANSPARENT);
|
||||||
|
return (HBRUSH)CreateSolidBrush(WhiteRGB);
|
||||||
|
}
|
||||||
if (GetDlgItem(IDC_STATUS_BG)->GetSafeHwnd() == pWnd->GetSafeHwnd())
|
if (GetDlgItem(IDC_STATUS_BG)->GetSafeHwnd() == pWnd->GetSafeHwnd())
|
||||||
{
|
{
|
||||||
return (HBRUSH)CreateSolidBrush(WhiteRGB);
|
return (HBRUSH)CreateSolidBrush(WhiteRGB);
|
||||||
|
@ -350,6 +378,8 @@ void CTegraRcmGUIDlg::MountCommand()
|
||||||
if (m_TegraRcm != NULL)
|
if (m_TegraRcm != NULL)
|
||||||
{
|
{
|
||||||
DialogTab02 *pt = (DialogTab02*)m_TegraRcm->m_Ctrltb2;
|
DialogTab02 *pt = (DialogTab02*)m_TegraRcm->m_Ctrltb2;
|
||||||
|
CComboBox* pmyComboBox = (CComboBox*)pt->GetDlgItem(ID_UMS_COMBO);
|
||||||
|
pmyComboBox->SetCurSel(3);
|
||||||
pt->OnBnClickedMountSd();
|
pt->OnBnClickedMountSd();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,4 +125,6 @@ public:
|
||||||
private:
|
private:
|
||||||
MyTabCtrl m_tbCtrl;
|
MyTabCtrl m_tbCtrl;
|
||||||
TegraRcm *m_TegraRcm;
|
TegraRcm *m_TegraRcm;
|
||||||
|
public:
|
||||||
|
afx_msg void OnEnChangeLogBox();
|
||||||
};
|
};
|
||||||
|
|
Binary file not shown.
Binary file not shown.
3
TegraRcmGUI/shofel2/imx_usb.bat
Normal file
3
TegraRcmGUI/shofel2/imx_usb.bat
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
cd shofel2
|
||||||
|
imx_usb.exe -c conf/
|
||||||
|
ping 127.0.0.1 -n 6 > nul
|
BIN
TegraRcmGUI/tools/biskeydump_usb.bin
Normal file
BIN
TegraRcmGUI/tools/biskeydump_usb.bin
Normal file
Binary file not shown.
BIN
TegraRcmGUI/tools/memloader/memloader_usb.bin
Normal file
BIN
TegraRcmGUI/tools/memloader/memloader_usb.bin
Normal file
Binary file not shown.
14
TegraRcmGUI/tools/memloader/ums_boot0.ini
Normal file
14
TegraRcmGUI/tools/memloader/ums_boot0.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[load:PH_0]
|
||||||
|
if=/u-boot.elf
|
||||||
|
skip=0x00010000
|
||||||
|
count=0x0006e13f
|
||||||
|
dst=0x80110000
|
||||||
|
|
||||||
|
[load:script]
|
||||||
|
if=ums_emmc_boot0.scr.img
|
||||||
|
dst=0x80100000
|
||||||
|
|
||||||
|
[boot:ENTRY]
|
||||||
|
pc=0x80110000
|
||||||
|
maxMemoryFreq=200
|
||||||
|
pwroffHoldTime=4
|
14
TegraRcmGUI/tools/memloader/ums_boot1.ini
Normal file
14
TegraRcmGUI/tools/memloader/ums_boot1.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[load:PH_0]
|
||||||
|
if=/u-boot.elf
|
||||||
|
skip=0x00010000
|
||||||
|
count=0x0006e13f
|
||||||
|
dst=0x80110000
|
||||||
|
|
||||||
|
[load:script]
|
||||||
|
if=ums_emmc_boot1.scr.img
|
||||||
|
dst=0x80100000
|
||||||
|
|
||||||
|
[boot:ENTRY]
|
||||||
|
pc=0x80110000
|
||||||
|
maxMemoryFreq=-1600
|
||||||
|
pwroffHoldTime=4
|
13
TegraRcmGUI/tools/memloader/ums_emmc.ini
Normal file
13
TegraRcmGUI/tools/memloader/ums_emmc.ini
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
[load:PH_0]
|
||||||
|
if=/u-boot.elf
|
||||||
|
skip=0x00010000
|
||||||
|
count=0x0006e13f
|
||||||
|
dst=0x80110000
|
||||||
|
|
||||||
|
[load:script]
|
||||||
|
if=ums_emmc.scr.img
|
||||||
|
dst=0x80100000
|
||||||
|
|
||||||
|
[boot:ENTRY]
|
||||||
|
pc=0x80110000
|
||||||
|
pwroffHoldTime=4
|
1
TegraRcmGUI/tools/memloader/ums_emmc.scr
Normal file
1
TegraRcmGUI/tools/memloader/ums_emmc.scr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ums 1 mmc 0.0
|
BIN
TegraRcmGUI/tools/memloader/ums_emmc.scr.img
Normal file
BIN
TegraRcmGUI/tools/memloader/ums_emmc.scr.img
Normal file
Binary file not shown.
1
TegraRcmGUI/tools/memloader/ums_emmc_boot0.scr
Normal file
1
TegraRcmGUI/tools/memloader/ums_emmc_boot0.scr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ums 1 mmc 0.1
|
BIN
TegraRcmGUI/tools/memloader/ums_emmc_boot0.scr.img
Normal file
BIN
TegraRcmGUI/tools/memloader/ums_emmc_boot0.scr.img
Normal file
Binary file not shown.
1
TegraRcmGUI/tools/memloader/ums_emmc_boot1.scr
Normal file
1
TegraRcmGUI/tools/memloader/ums_emmc_boot1.scr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ums 1 mmc 0.2
|
BIN
TegraRcmGUI/tools/memloader/ums_emmc_boot1.scr.img
Normal file
BIN
TegraRcmGUI/tools/memloader/ums_emmc_boot1.scr.img
Normal file
Binary file not shown.
Loading…
Reference in a new issue