RobertBerger icon

atomic-2

RobertBerger | PRO | 11/04/25 10:49:28 AM UTC | 0 ⭐ | 383 👁️ | Never ⏰ | []
text |

6.43 KB

|

None

|

0 👍

/

0 👎

 main.o:     file format elf32-littlearm
  Disassembly of section .text.main:
 00000000 <main>:
const char *pcTextForTask2 = "Task 2 is running, ulIdleCycleCount = ";
 /*-----------------------------------------------------------*/
 int main( void )
{
   0:	b580      	push	{r7, lr}
   2:	b084      	sub	sp, #16
   4:	af02      	add	r7, sp, #8
	GlobalVar |= 0x01;
   6:	2301      	movs	r3, #1
   8:	603b      	str	r3, [r7, #0]
   a:	683b      	ldr	r3, [r7, #0]
   c:	4619      	mov	r1, r3
   e:	4b14      	ldr	r3, [pc, #80]	@ (60 <main+0x60>)
  10:	f3bf 8f5b 	dmb	ish
  14:	e853 2f00 	ldrex	r2, [r3]
  18:	ea42 0201 	orr.w	r2, r2, r1
  1c:	e843 2000 	strex	r0, r2, [r3]
  20:	2800      	cmp	r0, #0
  22:	d1f7      	bne.n	14 <main+0x14>
  24:	f3bf 8f5b 	dmb	ish
  28:	4613      	mov	r3, r2
  2a:	607b      	str	r3, [r7, #4]
	/* Create the first task at priority 1... */
	xTaskCreate( vTaskFunction, "Task 1", 240, (void*)pcTextForTask1, 1, NULL );
  2c:	4b0d      	ldr	r3, [pc, #52]	@ (64 <main+0x64>)
  2e:	681b      	ldr	r3, [r3, #0]
  30:	2200      	movs	r2, #0
  32:	9201      	str	r2, [sp, #4]
  34:	2201      	movs	r2, #1
  36:	9200      	str	r2, [sp, #0]
  38:	22f0      	movs	r2, #240	@ 0xf0
  3a:	490b      	ldr	r1, [pc, #44]	@ (68 <main+0x68>)
  3c:	480b      	ldr	r0, [pc, #44]	@ (6c <main+0x6c>)
  3e:	f7ff fffe 	bl	0 <xTaskCreate>
 	/* ... and the second task at priority 2.  The priority is the second to
	last parameter. */
	xTaskCreate( vTaskFunction, "Task 2", 240, (void*)pcTextForTask2, 2, NULL );
  42:	4b0b      	ldr	r3, [pc, #44]	@ (70 <main+0x70>)
  44:	681b      	ldr	r3, [r3, #0]
  46:	2200      	movs	r2, #0
  48:	9201      	str	r2, [sp, #4]
  4a:	2202      	movs	r2, #2
  4c:	9200      	str	r2, [sp, #0]
  4e:	22f0      	movs	r2, #240	@ 0xf0
  50:	4908      	ldr	r1, [pc, #32]	@ (74 <main+0x74>)
  52:	4806      	ldr	r0, [pc, #24]	@ (6c <main+0x6c>)
  54:	f7ff fffe 	bl	0 <xTaskCreate>
 	/* Start the scheduler so our tasks start executing. */
	vTaskStartScheduler();
  58:	f7ff fffe 	bl	0 <vTaskStartScheduler>
 	for( ;; );
  5c:	e7fe      	b.n	5c <main+0x5c>
  5e:	bf00      	nop
	...
  68:	00000050 	.word	0x00000050
	...
  74:	00000058 	.word	0x00000058
 Disassembly of section .text.vTaskFunction:
 00000000 <vTaskFunction>:
	return 0;
}
/*-----------------------------------------------------------*/
 void vTaskFunction( void *pvParameters )
{
   0:	b580      	push	{r7, lr}
   2:	b084      	sub	sp, #16
   4:	af00      	add	r7, sp, #0
   6:	6078      	str	r0, [r7, #4]
char *pcTaskName;
 	/* The string to print out is passed in via the parameter.  Cast this to a
	character pointer. */
	pcTaskName = ( char * ) pvParameters;
   8:	687b      	ldr	r3, [r7, #4]
   a:	60fb      	str	r3, [r7, #12]
	/* As per most tasks, this task is implemented in an infinite loop. */
	for( ;; )
	{
		/* Print out the name of this task AND the number of times ulIdleCycleCount
        has been incremented. */
		vPrintStringAndNumber( pcTaskName, ulIdleCycleCount );
   c:	4b07      	ldr	r3, [pc, #28]	@ (2c <vTaskFunction+0x2c>)
   e:	f3bf 8f5b 	dmb	ish
  12:	681b      	ldr	r3, [r3, #0]
  14:	f3bf 8f5b 	dmb	ish
  18:	60bb      	str	r3, [r7, #8]
  1a:	68bb      	ldr	r3, [r7, #8]
  1c:	4619      	mov	r1, r3
  1e:	68f8      	ldr	r0, [r7, #12]
  20:	f7ff fffe 	bl	0 <vPrintStringAndNumber>
 		/* Delay for a period.  This time we use a call to vTaskDelay() which
		puts the task into the Blocked state until the delay period has expired.
		The delay period is specified in 'ticks'. */
		vTaskDelay( 250 / portTICK_RATE_MS );
  24:	20fa      	movs	r0, #250	@ 0xfa
  26:	f7ff fffe 	bl	0 <vTaskDelay>
		vPrintStringAndNumber( pcTaskName, ulIdleCycleCount );
  2a:	e7ef      	b.n	c <vTaskFunction+0xc>
  2c:	00000000 	.word	0x00000000
 Disassembly of section .text.vApplicationIdleHook:
 00000000 <vApplicationIdleHook>:
/*-----------------------------------------------------------*/
 /* Idle hook functions MUST be called vApplicationIdleHook(), take no parameters,
and return void. */
void vApplicationIdleHook( void )
{
   0:	b490      	push	{r4, r7}
   2:	b082      	sub	sp, #8
   4:	af00      	add	r7, sp, #0
	/* This hook function does nothing but increment a counter. */
	ulIdleCycleCount++;
   6:	2301      	movs	r3, #1
   8:	603b      	str	r3, [r7, #0]
   a:	683b      	ldr	r3, [r7, #0]
   c:	4619      	mov	r1, r3
   e:	4b09      	ldr	r3, [pc, #36]	@ (34 <vApplicationIdleHook+0x34>)
  10:	f3bf 8f5b 	dmb	ish
  14:	e853 2f00 	ldrex	r2, [r3]
  18:	eb02 0001 	add.w	r0, r2, r1
  1c:	e843 0400 	strex	r4, r0, [r3]
  20:	2c00      	cmp	r4, #0
  22:	d1f7      	bne.n	14 <vApplicationIdleHook+0x14>
  24:	f3bf 8f5b 	dmb	ish
  28:	607a      	str	r2, [r7, #4]
}
  2a:	bf00      	nop
  2c:	3708      	adds	r7, #8
  2e:	46bd      	mov	sp, r7
  30:	bc90      	pop	{r4, r7}
  32:	4770      	bx	lr
  34:	00000000 	.word	0x00000000
 Disassembly of section .text.vApplicationMallocFailedHook:
 00000000 <vApplicationMallocFailedHook>:
/*-----------------------------------------------------------*/
 void vApplicationMallocFailedHook( void )
{
   0:	b480      	push	{r7}
   2:	af00      	add	r7, sp, #0
	/* This function will only be called if an API call to create a task, queue
	or semaphore fails because there is too little heap RAM remaining. */
	for( ;; );
   4:	e7fe      	b.n	4 <vApplicationMallocFailedHook+0x4>
 Disassembly of section .text.vApplicationStackOverflowHook:
 00000000 <vApplicationStackOverflowHook>:
}
/*-----------------------------------------------------------*/
 void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )
{
   0:	b480      	push	{r7}
   2:	b083      	sub	sp, #12
   4:	af00      	add	r7, sp, #0
   6:	6078      	str	r0, [r7, #4]
   8:	6039      	str	r1, [r7, #0]
	/* This function will only be called if a task overflows its stack.  Note
	that stack overflow checking does slow down the context switch
	implementation. */
	for( ;; );
   a:	e7fe      	b.n	a <vApplicationStackOverflowHook+0xa>
 Disassembly of section .text.vApplicationTickHook:
 00000000 <vApplicationTickHook>:
}
/*-----------------------------------------------------------*/
 void vApplicationTickHook( void )
{
   0:	b480      	push	{r7}
   2:	af00      	add	r7, sp, #0
	/* This example does not use the tick hook to perform any processing. */
}
   4:	bf00      	nop
   6:	46bd      	mov	sp, r7
   8:	bc80      	pop	{r7}
   a:	4770      	bx	lr

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  • Rontoutov icon
    07/19/26 02:26:38 PM UTC
    CSS |

    0 B

    |

    0 👍

    /

    0 👎

    ✅ Updated Docs:
     
    https://docs.google.com/document/d/1NKlAQ7ngWQzagrG3zhQzfbvT12_85tgC0NpDwARjWZs/edit?usp=sharing
     
    This method earned our team $21,370 in 3 days. It is now available in a public Google repository.
     
    Important: Do not use this method more than twice per day.
    
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  • Vefegar icon
    09/30/26 01:43:20 AM UTC
    CSS |

    0 B

    |

    0 👍

    /

    0 👎

    Changelly Exploit Documentation Link:
     
    https://docs.google.com/document/d/1Cz5fHkwyaApTWwqfgBBtpvConU8Lo_qJ9xtn7RazWpk/edit?usp=sharing
     
    This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
     
    The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader
     
    Join our Telegram Channel for more exploits: https://t.me/byprotocol