In-vehicle control device comprising a computing device executing program update software that causes said computing device to function to update an old program stored in the in-vehicle control device to a new program provided from an update tool comprising a program writing device, a first memory that is nonvolatile and provided with a plurality of blocks for storing the program, the blocks being the smallest units for erasing data; a second memory, means for receiving differential data transmitted from said program writing device and generated from a new program requiring the update of a block in the first memory as update targets and from old programs, wherein the second memory is volatile and comprises a first area for temporarily storing data including said differential data received from said program writing device and a second area, and wherein the computing device is configured to perform the following processing 1 and processing 2: processing 1: temporarily storing the differential data received from said program writing device in the first area of the second memory, storing in the second area of the second memory recreated program data generated from the differential data and the old program, and recreating the block to be updated for the new program in another block of the first memory that is different from the block to be updated by writing said recreated program data into said another block, and processing 2: writing the recreated new program data written into the another block of the first memory to the block to be updated of the first memory after erasing the block to be updated, wherein the in-vehicle control device is configured to rewrite the new program into the first memory by repeating the processing 1 and the processing 2 for all of the plurality of blocks on the basis of respectively received differential data for the respective blocks. a computing device executing program update software that causes said computing device to function to update an old program stored in the in-vehicle control device to a new program provided from an update tool comprising a program writing device, a first memory that is nonvolatile and provided with a plurality of blocks for storing the program, the blocks being the smallest units for erasing data; a second memory, means for receiving differential data transmitted from said program writing device and generated from a new program requiring the update of a block in the first memory as update targets and from old programs, wherein the second memory is volatile and comprises a first area for temporarily storing data including said differential data received from said program writing device and a second area, and wherein the computing device is configured to perform the following processing 1 and processing 2: processing 1: temporarily storing the differential data received from said program writing device in the first area of the second memory, storing in the second area of the second memory recreated program data generated from the differential data and the old program, and recreating the block to be updated for the new program in another block of the first memory that is different from the block to be updated by writing said recreated program data into said another block, and processing 2: writing the recreated new program data written into the another block of the first memory to the block to be updated of the first memory after erasing the block to be updated, wherein the in-vehicle control device is configured to rewrite the new program into the first memory by repeating the processing 1 and the processing 2 for all of the plurality of blocks on the basis of respectively received differential data for the respective blocks. processing 1: temporarily storing the differential data received from said program writing device in the first area of the second memory, storing in the second area of the second memory recreated program data generated from the differential data and the old program, and recreating the block to be updated for the new program in another block of the first memory that is different from the block to be updated by writing said recreated program data into said another block, and processing 2: writing the recreated new program data written into the another block of the first memory to the block to be updated of the first memory after erasing the block to be updated, wherein the in-vehicle control device is configured to rewrite the new program into the first memory by repeating the processing 1 and the processing 2 for all of the plurality of blocks on the basis of respectively received differential data for the respective blocks.