๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ง ๋ฆฌ๋ฒ„์‹ฑ

Dreamhack ๋ฆฌ๋ฒ„์‹ฑ ๋ฌธ์ œํ’€์ด: rev-basic-7

by ๋ถˆํƒ€๋Š” ์ฐธ์ƒˆ 2023. 11. 1.

cmd ์ฐฝ ์—ด์–ด์„œ ์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅ.

ํ‹€๋ ธ๋‹ค.

๋””๋ฒ„๊ฑฐ๋กœ ์—ด์–ด์„œ ์‚ดํŽด๋ดค๋‹ค.

์šฐ์„  ๋ฌธ์ž์—ด ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๋ฉ”์ธํ•จ์ˆ˜๋ฅผ ์ฐพ์•„์ฃผ๊ณ 

์ด ์ „๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ test, je ์ง์ „ ํ•จ์ˆ˜๊ฐ€ ์ค‘์š”ํ•˜๋‹ˆ๊นŒ ๊ฑฐ๊ธฐ๋กœ ์ด๋™ํ•ด์ค€๋‹ค.

ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์œ„ ์บก์ณ ํ™”๋ฉด ์ฃผ์„์— ๋‹ฌ์•„ ๋†“์•˜๋‹ค.

์ •๋‹ต ์ฃผ์†Œ ๋“  ๊ณณ์„ ๋คํ”„๋กœ ๋”ฐ๋ผ๊ฐ”๋‹ค.

์ด์ œ ์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ ์œ„ํ•ด IDA๋กœ ์—ด์–ด์คฌ๋‹ค. sub ์–ด์ฉŒ๊ตฌ ํ•จ์ˆ˜๋กœ ๋“ค์–ด๊ฐ€์ฃผ๋ฉด

___ROL1___ ํ•จ์ˆ˜๊ฐ€ ๋ˆˆ์— ๋ˆ๋‹ค.

์ธํ„ฐ๋„ท์— ์ฐพ์•„๋ณด๋‹ˆ shift ์—ฐ์‚ฐ๊ณผ ๊ด€๋ จ๋œ ํ•จ์ˆ˜์ด๋‹ค.

#include<stdio.h>

int ror(int x, int n) {
    int shift = x >> n;
    int src = x << (8-n);
    src &= 255;
    return shift | src;
}


int main()
{
	int arr[0x1F]={0x52, 0xDF, 0xB3, 0x60, 0xF1, 0x8B, 0x1C, 0xB5, 0x57, 0xD1, 0x9F, 0x38, 0x4B, 0x29, 0xD9, 0x26, 0x7F, 0xC9, 0xA3, 0xE9, 0x53, 0x18, 0x4F, 0xB8, 0x6A, 0xCB, 0x87, 0x58, 0x5B, 0x39, 0x1E};
	int a, i, b;

	for(i=0; i<0x1F; i++)
	{
		a=i^arr[i];
		b=ror(a, i&7);
		printf("%c", b);
	}
}

rol์„ ๋ฐ˜๋Œ€๋กœ ํ•ด์ค˜์•ผ ํ•˜๋‹ˆ๊นŒ ror ํ•จ์ˆ˜๋ฅผ ์ผ๋‹ค. ror ํ•จ์ˆ˜๋Š” ์ธํ„ฐ๋„ท์—์„œ ์ฐพ์•„ ์ผ๋‹ค..ใ…Žใ…Ž

C++ ๋Œ๋ฆฌ๋ฉด ์ด๋ ‡๊ฒŒ ๋‚˜์˜จ๋‹ค.

Correct~๏ผˆ๏ฟฃ๏ธถ๏ฟฃ๏ผ‰โ†—ใ€€