Run the TurboTax installer until the error dialog pops up. Click the close button since you can't go any further. Now press WinKey-R and type %TEMP% to go to the temporary folder. Copy the ckz_xxxx folder to the desktop. Select the setup.exe file and press CTRL-C then CTRL-V to make a copy.
Now use radare as follows:
Command | Description |
---|---|
r2 -A -w "setup - copy.exe" | analyze and allow writing |
axt str.Detected_OS_is_WIN_8_or_above | look for references to this string |
s 0x402ec2 | seek to the location that was found in the previous command |
VV | now we are at the node references the string. You need to reverse the opcode in the previous node by changing je 0x402ed9 to jnz 0x402ed9 |
Shift-TAB | go to previous node |
( | reverse the opcode |
exit from visual mode | |
q | quit radare |
Now you can click on "setup - copy.exe" and install without error. (Note that the Verified publisher says "unknown" even though we only changed one byte.)
Open the setup.exe file and at offset 0x000022c0 change the 74 to 75. Save it and you are done. Remember this offset only works with the version of TurboTax Deluxe mentioned above. If you have another version, follow the radare instructions above to find the right offset.
DISCLAIMER: This is for educational purposes only. Use TurboTax in Windows 7 at you own risk. It most likely will work just fine, but Intuit doesn't want to support older versions of Windows.
Interesting info about setup.exe TurboTax 2020 Standard:
Testing OS: Windows 7 Ultimate SP1 x64 (intel cpu little endian)
Strings:
str.User_chose_to_install_on_Windows_7_SP1
str.User_chose_to_upgrade_to_Windows_10
str.User_clicked_to_FAQ_Hyperlink
.Caught_unknown_exception_in_Is
.OS_is_lower_than_Windows_7_SP1
.0123456789ABCDEFabcdef__Xx
str.OS_is_Windows_8_or_higher
str.Found_the_ReviveSwitch_pattern_in_JSON_PayLoad:___s
str.Either_response_PayLoad_is_empty_or_doesn_t_have_the_ReviveSwitch_pattern__PayLoad:___s
str.Detected_OS_is_WIN7_SP1__System_is_offline
str.Caught_std::exception_in_IsInstallationAllowedOnThisOS:__s
str.Caught_unknown_exception_in_IsInstallationAllowedOnThisOS
str.Error_creating_zip_in_file
str.zip_1.01_Copyright_1998_2004_Gilles_Vollant___http:__www.winimage.com_zLibDll
str.1.2.11
str..z_02d
str.deflate_1.2.11_Copyright_1995_2017_Jean_loup_Gailly_and_Mark_Adler
Offset info:
N.B. Windows 7 has ASLR(Address Space Layout Randomization) enabled (XP, 2000, 98, 95, etc.. don't have it implemented)
str.OS_is_Windows_8_or_higher is @ 0x404650
N.B. stack/heap/thread stack frame randomization, after reboot new address selected when PE is loaded in memory
located target address ==> 0x0040468f
N.B. opcode 0x75 => JNE/JNZ (ZF=0)
wB 0x75 @ 0x0040468f
if(OS_is_Windows_8_or_higher())
{
// Proceed with subroutine
} else {
// Windows version <= 7
printf("%s\n", "Detected Windows 7 (i686/x64/noarch etc ...) OS");
}
MSI Unpack Method:
Locate TurboTax TurboImpôt 2020.msi
Grant full access permissions on EXE:
icacls TurboTax TurboImpôt 2020.msi /T /C /grant administrators:F
Extract files (administrative network install):
GUI: msiexec /a TurboTax TurboImpôt 2020.msi
no GUI: msiexec /a TurboTax TurboImpôt 2020.msi TARGETDIR=C:\extractdir\ /qn
progressbar GUI: msiexec /a TurboTax TurboImpôt 2020.msi TARGETDIR=C:\extractdir\ /passive
Locate PE: tt2020.exe
Right click tt2020.exe => properties => compatibility => Privilege Level => Select Run as administrator (prompts Windows UAC)
Launch/Execute tt2020.exe and use TurboTax.
If extraction fails (Error: 1304, cannot write file due to insufficient privileges):
Use: lessmsi
Load MSI into lessmsi, to extract remaining files into destination directory.