[C์–ธ์–ด] NBO - HBO ๋น… ์—”๋””์–ธ์„ ๋ฆฌํ‹€ ์—”๋””์–ธ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ

2023. 10. 4. 22:47ยทProgramming Language/C

๐Ÿ“ ๊ณผ์ œ ๋‚ด์šฉ

 

 

๐Ÿงฉ ์ฝ”๋“œ ๊ตฌ์„ฑ ์„ค๋ช…

  1. BigtoLittle() : ๋น… ์—”๋””์–ธ์—์„œ ๋ฆฌํ‹€ ์—”๋””์–ธ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
  2. main() :
    1. ์ž…๋ ฅ ํŒŒ์ผ๊ณผ ์ถœ๋ ฅ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ธ์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.
    2. ์ž…๋ ฅ ํŒŒ์ผ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ฝ์–ด FILE ํ˜• ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.
    3. 4๋ฐ”์ดํŠธ๋งŒ ์ฝ์–ด unint32_t ํ˜• ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.
    4. BigtoLittle() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ๋ณ€ํ™˜ ํ•ด์ค€๋‹ค.
    5. ๋ณ€ํ™˜ํ•ด์ค€ ๊ฐ’์„ ์ถœ๋ ฅ ํŒŒ์ผ์— "์“ฐ๊ธฐ" ํ•ด์ค€๋‹ค.

 

 

๐Ÿ–ฅ๏ธ ์ฝ”๋“œ & ์„ค๋ช…

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>


// ๋น…์—”๋””์–ธ์—์„œ ๋ฆฌํ‹€์—”๋””์–ธ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
int BigtoLittle(uint32_t buf) {
	uint32_t result;

// ๋น„ํŠธ์—ฐ์‚ฐ์„ ์ด์šฉํ•ด ๋ณ€ํ™˜
	result = (buf >> 24) | ((buf >> 8 ) & 0x0000FF00) | ((buf << 8) & 0x00FF0000) | (buf << 24);
	return result;
}


int main(int argc, char *argv[]) {

// ์ž…๋ ฅ ํŒŒ์ผ, ์ถœ๋ ฅ ํŒŒ์ผ ๋ชจ๋‘ ์ฝ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ธ์ž๊ฐ€ ์ œ๋Œ€๋กœ ๋ฐ›์•„์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‹ค์Œ์„ ์ถœ๋ ฅ
  if (argc != 3) {
    printf("Usage: %s <์ž…๋ ฅ ํŒŒ์ผ> <์ถœ๋ ฅ ํŒŒ์ผ>\n", argv[0]);
  }

// ํŒŒ์ผ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ฝ์–ด in_f ์œ„์น˜์— ์ €์žฅ
FILE *in_f = fopen(argv[1], "rb");
// ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ 
if (in_f == NULL ) {
	printf("์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค");}  


// 4๋ฐ”์ดํŠธ ํฌ๊ธฐ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋„ฃ์–ด์ค„ ๋ณ€์ˆ˜ ์„ ์–ธ
uint32_t buffer;

// fread()ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์ง€์ •ํ•œ ํฌ๊ธฐ ๋งŒํผ ์ž๋ฃŒ๋ฅผ ์ฝ์–ด๋“ค์—ฌ ์ €์žฅ
fread(&buffer, 4, 1, in_f); // fread(์ฝ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ํฌ์ธํ„ฐ, ์ฝ์„ ํฌ๊ธฐ, ์ฝ์„ ๊ฐœ์ˆ˜, ์ฝ์„ ํŒŒ์ผ)
fclose(in_f); // ํŒŒ์ผ ๋‹ซ๊ธฐ  

// ๋น…์—”๋””์–ธ์—์„œ ๋ฆฌํ‹€์—”๋””์–ธ์œผ๋กœ ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ
buffer = BigtoLittle(buffer); 

FILE *out_f = fopen(argv[2], "wb"); // ์ถœ๋ ฅ ํŒŒ์ผ ํฌ์ธํ„ฐ ์„ ์–ธ
fwrite(&buffer, 4, 1, out_f); // ์ถœ๋ ฅ ํŒŒ์ผ์— ์“ฐ๊ธฐ
fclose(out_f); // ํŒŒ์ผ ๋‹ซ๊ธฐ
}

 

๐Ÿ“Œ BigtoLittle() ์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช… !

์™ผ์ชฝ์— ๋ณด์ด๋Š” 0x12345678 ์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ 0x78563412๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์‹œํ”„ํŠธ ์—ฐ์‚ฐ( >>, << )๊ณผ and( & ), or( | ) ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ”๊ฟ€ ๊ฒƒ์ด๋‹ค.

 

๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์˜ ์ด๋ฏธ์ง€์˜ ๋นจ๊ฐ„์ƒ‰ ์ˆซ์ž๋“ค์˜ ์œ„์น˜๋ฅผ ์˜ฎ๊ฒจ์ฃผ๊ณ , or ์—ฐ์‚ฐ์„ ํ†ตํ•ด ํ•˜๋‚˜๋กœ ํ•ฉ์ณ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

0x00000012์™€ 0x78000000์€ ์–‘๋์œผ๋กœ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ๋งŒ ํ•ด์ฃผ๋ฉด ๊น”๋”ํ•˜๊ฒŒ ์˜ฎ๊ฒจ์ง€๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ 0x00003400๊ณผ 0x00560000์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

0x00003400๊ณผ 0x00560000์ฒ˜๋Ÿผ ์˜ฎ๊ฒจ์งˆ ์ˆซ์ž๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋‘ 0์ด ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ,

๋ถˆํ•„์š”ํ•œ ์ˆซ์ž๋“ค์ด ์ฑ„์›Œ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Š” and ์—ฐ์‚ฐ์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

and ์—ฐ์‚ฐ์€ ๋‘˜ ๋‹ค 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

์ด๋Ÿฌํ•œ ์ ์„ ์ด์šฉํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋นจ๊ฐ„ ์ˆซ์ž๊ฐ€ ์žˆ๋Š” ์ž๋ฆฌ๋งŒ ๋ชจ๋‘ 1๋กœ ์ฑ„์šด ๊ฐ’๊ณผ ์—ฐ์‚ฐ์„ ํ•ด์คŒ์œผ๋กœ์จ ํ•„์š”์—†๋Š” ์ˆซ์ž๋“ค์„ ์—†์• ์ค€๋‹ค.

๋”ฐ๋ผ์„œ ๊ตฌํ•˜๊ณ ์žํ•œ ๊ฐ’์„ ๋งŒ๋“ค์–ด๋ƒˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๊ตฌํ•ด๋‚ธ ๊ฐ’๋“ค์„ ๊ฐ€์ง€๊ณ  ๋ชจ๋‘ or ์—ฐ์‚ฐ์„ ํ•˜๋ฉด ์ตœ์ข…์ ์œผ๋กœ 0x78563412์˜ ๊ฐ’์„ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

๐ŸŽž๏ธ ์ถœ๋ ฅ ๊ฒฐ๊ณผ

๋จผ์ € gcc๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ํ•ด์ฃผ์—ˆ๋‹ค.

gcc BigtoLittle.c -o BigtoLittle

 

๊ทธ ๋‹ค์Œ, 0x12345678 ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค.

 

hexdump๋กœ ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋น… ์—”๋””์–ธ ํ˜•์‹์œผ๋กœ ์ €์žฅ์ด ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ ๋ณ€ํ™˜์„ ํ•ด๋ณด์ž.

 

hexdump๋กœ result.bin ํŒŒ์ผ์„ ํ™•์ธํ•ด๋ณด๋ฉด ๋น… ์—”๋””์–ธ์—์„œ ๋ฆฌํ‹€ ์—”๋””์–ธ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ €์žฅ์ด ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Programming Language > C' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[C์–ธ์–ด] ๋ฐฑ์ค€ 10810๋ฒˆ : ๊ณต ๋„ฃ๊ธฐ  (1) 2023.09.14
[C์–ธ์–ด] ๋ฐฑ์ค€ 2562๋ฒˆ : ์ตœ๋Œ“๊ฐ’  (0) 2023.09.14
[C์–ธ์–ด] ๋™์  ํ• ๋‹น : malloc()  (0) 2023.09.12
[C์–ธ์–ด] ๋ฐฑ์ค€ 10818๋ฒˆ : ์ตœ์†Œ, ์ตœ๋Œ€  (0) 2023.09.12
[C์–ธ์–ด] Call By Value & Call By Reference  (0) 2023.06.16
'Programming Language/C' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [C์–ธ์–ด] ๋ฐฑ์ค€ 10810๋ฒˆ : ๊ณต ๋„ฃ๊ธฐ
  • [C์–ธ์–ด] ๋ฐฑ์ค€ 2562๋ฒˆ : ์ตœ๋Œ“๊ฐ’
  • [C์–ธ์–ด] ๋™์  ํ• ๋‹น : malloc()
  • [C์–ธ์–ด] ๋ฐฑ์ค€ 10818๋ฒˆ : ์ตœ์†Œ, ์ตœ๋Œ€
602zzang
602zzang
  • 602zzang
    yks_STUDY
    602zzang
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (77)
      • Programming Language (36)
        • C (15)
        • PYTHON (9)
        • RUST (12)
      • Reverse Engineering (3)
      • OS (17)
        • LINUX (17)
      • ๋ณด์•ˆ ์ด์Šˆ (6)
      • Digital Forensics (1)
      • CTF (8)
      • ๊ธฐํƒ€ (6)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ณด์•ˆ๋™ํ–ฅ
    Rocky Linux
    P4C
    ์†Œ์ผ“ ํ†ต์‹ 
    ํŒŒ์ด์ฌ
    TeamH4C
    rustling
    cyberdefenders
    picoCTF
    ๋นก๊ณตํŒŸ
    ๋ฐฑ์ค€
    ๊ณต๊ธ‰๋ง
    c
    bandit
    ๋ณด์•ˆ์ด์Šˆ
    ์ฝ”๋“œ์—…
    ๋“œ๋ฆผํ•ต
    rust
    umassctf2025
    python
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
602zzang
[C์–ธ์–ด] NBO - HBO ๋น… ์—”๋””์–ธ์„ ๋ฆฌํ‹€ ์—”๋””์–ธ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”