A system for validating software on a remote computing device (104; 105; 106), optionally an electronic control unit, the system comprising: one or more processors; and a memory device including one or more computer-readable instructions that, when executed by the one or more processors, cause the system to perform operations comprising: obtaining an authentic copy of the software of the remote computing device (104; 105; 106) wherein the authentic copy is a last known authorized copy of software provided to the remote computing device (104; 105; 106) corresponding to the software on the remote computing device (104; 105; 106); sending a validation request comprising a random data string to the remote computing device (104; 105; 106); receiving a remote check value from the remote computing device (104; 105; 106), wherein the remote check value is generated by the remote computing device (104; 105; 106) based on the random data string and static information on the remote computing device (104; 105; 106), said static information including the software on the remote computing device (104; 105; 106) that includes static information or read-only information and excludes any dynamic information; computing a local check value based on the authentic copy of the software for the remote computing device (104; 105; 106) and the random data string; determining whether the remote computing device (104; 105; 106) has authentic software based on a comparison of the received remote check value and the local check value; and providing an instruction to the remote computing device (104; 105; 106) configured to cause a modification of the remote computing device (104; 105; 106) in response to a determination that the software on the remote computing device (104; 105; 106) is not authentic software. one or more processors; and a memory device including one or more computer-readable instructions that, when executed by the one or more processors, cause the system to perform operations comprising: obtaining an authentic copy of the software of the remote computing device (104; 105; 106) wherein the authentic copy is a last known authorized copy of software provided to the remote computing device (104; 105; 106) corresponding to the software on the remote computing device (104; 105; 106); sending a validation request comprising a random data string to the remote computing device (104; 105; 106); receiving a remote check value from the remote computing device (104; 105; 106), wherein the remote check value is generated by the remote computing device (104; 105; 106) based on the random data string and static information on the remote computing device (104; 105; 106), said static information including the software on the remote computing device (104; 105; 106) that includes static information or read-only information and excludes any dynamic information; computing a local check value based on the authentic copy of the software for the remote computing device (104; 105; 106) and the random data string; determining whether the remote computing device (104; 105; 106) has authentic software based on a comparison of the received remote check value and the local check value; and providing an instruction to the remote computing device (104; 105; 106) configured to cause a modification of the remote computing device (104; 105; 106) in response to a determination that the software on the remote computing device (104; 105; 106) is not authentic software. obtaining an authentic copy of the software of the remote computing device (104; 105; 106) wherein the authentic copy is a last known authorized copy of software provided to the remote computing device (104; 105; 106) corresponding to the software on the remote computing device (104; 105; 106); sending a validation request comprising a random data string to the remote computing device (104; 105; 106); receiving a remote check value from the remote computing device (104; 105; 106), wherein the remote check value is generated by the remote computing device (104; 105; 106) based on the random data string and static information on the remote computing device (104; 105; 106), said static information including the software on the remote computing device (104; 105; 106) that includes static information or read-only information and excludes any dynamic information; computing a local check value based on the authentic copy of the software for the remote computing device (104; 105; 106) and the random data string; determining whether the remote computing device (104; 105; 106) has authentic software based on a comparison of the received remote check value and the local check value; and providing an instruction to the remote computing device (104; 105; 106) configured to cause a modification of the remote computing device (104; 105; 106) in response to a determination that the software on the remote computing device (104; 105; 106) is not authentic software.