Restructured payloads into folders
This commit is contained in:
@@ -1,18 +1,23 @@
|
|||||||
set(PL_NAMES
|
set(PL_NAMES
|
||||||
aes_busy
|
crypto:aes_busy
|
||||||
aes_sw_bern
|
crypto:aes_sw_bern
|
||||||
aes_sw_corr
|
crypto:aes_sw_corr
|
||||||
cachelib
|
|
||||||
exit_usb_task
|
system:cachelib
|
||||||
floppysleep
|
system:exit_usb_task
|
||||||
sync
|
system:init_sys
|
||||||
|
system:sync
|
||||||
|
|
||||||
|
power:floppysleep
|
||||||
)
|
)
|
||||||
|
|
||||||
foreach(NAME ${PL_NAMES})
|
foreach(NAME ${PL_NAMES})
|
||||||
list(APPEND PL_TARGETS "payload_${NAME}")
|
string(REGEX REPLACE "^[^:]*\\:(.*)$" "\\1" NAME_ONLY ${NAME})
|
||||||
list(APPEND PL_SRC_BIN "${CMAKE_CURRENT_LIST_DIR}/payload/src/${NAME}.c")
|
list(APPEND PL_TARGETS "payload_${NAME_ONLY}")
|
||||||
endforeach(NAME)
|
endforeach(NAME)
|
||||||
|
|
||||||
|
message("${PL_TARGETS}")
|
||||||
|
|
||||||
foreach(TARGET ${PL_TARGETS})
|
foreach(TARGET ${PL_TARGETS})
|
||||||
list(APPEND PL_SRC_LIB "${CMAKE_CURRENT_BINARY_DIR}/lib_cfiles/${TARGET}.c")
|
list(APPEND PL_SRC_LIB "${CMAKE_CURRENT_BINARY_DIR}/lib_cfiles/${TARGET}.c")
|
||||||
list(APPEND PL_BIN "${CMAKE_CURRENT_BINARY_DIR}/payload/bin/${TARGET}.bin")
|
list(APPEND PL_BIN "${CMAKE_CURRENT_BINARY_DIR}/payload/bin/${TARGET}.bin")
|
||||||
@@ -39,7 +44,7 @@ add_custom_command(TARGET payload POST_BUILD
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}/lib_cfiles
|
${CMAKE_CURRENT_BINARY_DIR}/lib_cfiles
|
||||||
${CMAKE_SOURCE_DIR}/c8_remote/include/tool)
|
${CMAKE_SOURCE_DIR}/c8_remote/include/tool)
|
||||||
|
|
||||||
add_library(experiments experiments/aes_sw.c
|
add_library(experiments experiments/crypto.c
|
||||||
experiments/system.c
|
experiments/system.c
|
||||||
experiments/power.c)
|
experiments/power.c)
|
||||||
add_library(host_crypto crypto/aes_sw_impl.c crypto/aes_sw_host.c)
|
add_library(host_crypto crypto/aes_sw_impl.c crypto/aes_sw_host.c)
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "tool/command.h"
|
#include "tool/command.h"
|
||||||
|
#include "dev/addr.h"
|
||||||
|
|
||||||
void usb_task_exit(struct pwned_device *dev)
|
void usb_task_exit(struct pwned_device *dev)
|
||||||
{
|
{
|
||||||
@@ -38,8 +39,7 @@ void usb_task_exit(struct pwned_device *dev)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
resp = execute_payload(dev, PAYLOAD_EXIT_USB_TASK, 0,
|
resp = execute_payload(dev, PAYLOAD_EXIT_USB_TASK, 0, 0);
|
||||||
1, get_payload_address(dev, PAYLOAD_EXIT_USB_TASK));
|
|
||||||
if(IS_CHECKM8_FAIL(resp->ret))
|
if(IS_CHECKM8_FAIL(resp->ret))
|
||||||
{
|
{
|
||||||
printf("failed to exit usb task\n");
|
printf("failed to exit usb task\n");
|
||||||
|
|||||||
@@ -19,23 +19,24 @@ set(CMAKE_C_FLAGS "-nostdlib -O")
|
|||||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
|
||||||
|
|
||||||
foreach(NAME ${PL_NAMES})
|
foreach(NAME ${PL_NAMES})
|
||||||
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/src/${NAME}.S)
|
string(REPLACE ":" "/" SRC_PATH ${NAME})
|
||||||
add_executable(payload_${NAME} ${CMAKE_CURRENT_LIST_DIR}/payload_entry.S
|
string(REGEX REPLACE "^[^:]*\\:(.*)$" "\\1" NAME_ONLY ${NAME})
|
||||||
${CMAKE_CURRENT_LIST_DIR}/payload_entry.c
|
|
||||||
${CMAKE_CURRENT_LIST_DIR}/src/${NAME}.c
|
set(SRC_NAME ${NAME}_SRCS)
|
||||||
${CMAKE_CURRENT_LIST_DIR}/src/${NAME}.S)
|
set(${SRC_NAME} src/payload_entry.S src/payload_entry.c src/${SRC_PATH}.c)
|
||||||
else()
|
|
||||||
add_executable(payload_${NAME} ${CMAKE_CURRENT_LIST_DIR}/payload_entry.S
|
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/src/${SRC_PATH}.S)
|
||||||
${CMAKE_CURRENT_LIST_DIR}/payload_entry.c
|
list(APPEND ${SRC_NAME} src/${SRC_PATH}.S)
|
||||||
${CMAKE_CURRENT_LIST_DIR}/src/${NAME}.c)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_command(TARGET payload_${NAME} POST_BUILD
|
add_executable(payload_${NAME_ONLY} ${${SRC_NAME}})
|
||||||
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/bin/payload_${NAME}.bin
|
message(adding payload_${NAME_ONLY})
|
||||||
|
add_custom_command(TARGET payload_${NAME_ONLY} POST_BUILD
|
||||||
|
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/bin/payload_${NAME_ONLY}.bin
|
||||||
COMMAND ${CMAKE_OBJCOPY}
|
COMMAND ${CMAKE_OBJCOPY}
|
||||||
ARGS -O binary -j .text -j .payload_text
|
ARGS -O binary -j .text -j .payload_text -j .payload_data
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/payload_${NAME}
|
${CMAKE_CURRENT_BINARY_DIR}/payload_${NAME_ONLY}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/bin/payload_${NAME}.bin)
|
${CMAKE_CURRENT_BINARY_DIR}/bin/payload_${NAME_ONLY}.bin)
|
||||||
endforeach(NAME)
|
endforeach(NAME)
|
||||||
|
|
||||||
add_library(dev_crypto ../crypto/aes_sw_impl.c)
|
add_library(dev_crypto ../crypto/aes_sw_impl.c)
|
||||||
|
|||||||
@@ -17,6 +17,6 @@ typedef unsigned int uint32_t;
|
|||||||
typedef unsigned long long uint64_t;
|
typedef unsigned long long uint64_t;
|
||||||
|
|
||||||
#define PAYLOAD_SECTION __attribute__ ((section (".payload_text")))
|
#define PAYLOAD_SECTION __attribute__ ((section (".payload_text")))
|
||||||
#define TEXT_SECTION __attribute__ ((section (".text")))
|
#define PAYLOAD_DATA __attribute__ ((section (".payload_data")))
|
||||||
|
|
||||||
#endif //CHECKM8_TOOL_DEV_UTIL_H
|
#endif //CHECKM8_TOOL_DEV_UTIL_H
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
#include "dev/addr.h"
|
|
||||||
#include "bootrom_func.h"
|
|
||||||
|
|
||||||
PAYLOAD_SECTION
|
|
||||||
void fix_heap()
|
|
||||||
{
|
|
||||||
*((unsigned long long *) 0x1801b91a0) = 0x80 / 0x40;
|
|
||||||
*((unsigned long long *) 0x1801b91a8) = ((0x840u / 0x40) << 2u);
|
|
||||||
*((unsigned long long *) 0x1801b91b0) = 0x80;
|
|
||||||
*((unsigned long long *) 0x1801b91b8) = 0;
|
|
||||||
|
|
||||||
*((unsigned long long *) 0x1801b9220) = 0x80 / 0x40;
|
|
||||||
*((unsigned long long *) 0x1801b9228) = ((0x80u / 0x40) << 2u);
|
|
||||||
*((unsigned long long *) 0x1801b9230) = 0x80;
|
|
||||||
*((unsigned long long *) 0x1801b9238) = 0;
|
|
||||||
|
|
||||||
*((unsigned long long *) 0x1801b92a0) = 0x80 / 0x40;
|
|
||||||
*((unsigned long long *) 0x1801b92a8) = ((0x80u / 0x40) << 2u);
|
|
||||||
*((unsigned long long *) 0x1801b92b0) = 0x80;
|
|
||||||
*((unsigned long long *) 0x1801b92b8) = 0;
|
|
||||||
|
|
||||||
__asm__ volatile ("dmb sy");
|
|
||||||
calc_chksum((unsigned long long *) 0x1801b9180,
|
|
||||||
(unsigned long long *) 0x1801b91a0,
|
|
||||||
32,
|
|
||||||
(unsigned long long *) 0x180080640);
|
|
||||||
|
|
||||||
calc_chksum((unsigned long long *) 0x1801b9200,
|
|
||||||
(unsigned long long *) 0x1801b9220,
|
|
||||||
32,
|
|
||||||
(unsigned long long *) 0x180080640);
|
|
||||||
|
|
||||||
calc_chksum((unsigned long long *) 0x1801b9280,
|
|
||||||
(unsigned long long *) 0x1801b92a0,
|
|
||||||
32,
|
|
||||||
(unsigned long long *) 0x180080640);
|
|
||||||
|
|
||||||
__asm__ volatile ("dmb sy");
|
|
||||||
check_all_chksums();
|
|
||||||
}
|
|
||||||
|
|
||||||
void entry_sync(unsigned long long *self)
|
|
||||||
{
|
|
||||||
fix_heap();
|
|
||||||
|
|
||||||
*(ADDR_DFU_RETVAL) = -1;
|
|
||||||
*(ADDR_DFU_STATUS) = 1;
|
|
||||||
|
|
||||||
event_notify((struct event *) ADDR_DFU_EVENT);
|
|
||||||
dev_free(self);
|
|
||||||
}
|
|
||||||
|
|
||||||
void entry_async(uint64_t *base){}
|
|
||||||
28
c8_remote/lib/payload/src/system/exit_usb_task.c
Normal file
28
c8_remote/lib/payload/src/system/exit_usb_task.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#include "dev/addr.h"
|
||||||
|
#include "bootrom_func.h"
|
||||||
|
|
||||||
|
PAYLOAD_SECTION
|
||||||
|
void entry_sync(uint64_t addr_hook)
|
||||||
|
{
|
||||||
|
uint64_t *bs_task_sp = ((uint64_t *) ADDR_BOOTSTRAP_TASK + (0x128 / 8));
|
||||||
|
uint64_t *bs_task_stack = (uint64_t *) *bs_task_sp;
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
if(*bs_task_stack == ADDR_GETDFU_EXIT)
|
||||||
|
{
|
||||||
|
*bs_task_stack = addr_hook;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
bs_task_stack++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(ADDR_DFU_RETVAL) = -1;
|
||||||
|
*(ADDR_DFU_STATUS) = 1;
|
||||||
|
|
||||||
|
event_notify((struct event *) ADDR_DFU_EVENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
PAYLOAD_SECTION
|
||||||
|
void entry_async(){}
|
||||||
11
c8_remote/lib/payload/src/system/init_sys.c
Normal file
11
c8_remote/lib/payload/src/system/init_sys.c
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
void entry_sync()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void entry_async()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user