Hacking&Security/리버싱[reversing]
어셈블리 ROL, ROR 코드 구현
보안&인공지능
2021. 2. 4. 21:16
리버싱 문제를 풀다가 ROL, ROR이 나왔는데, 기드라의 경우 디컴파일 결과가 단지 >>와 같이 쉬프트 연산만 수행하는 방식으로 나오는 문제를 겪었다.
따라서, 이를 해결하기 위해 파이썬으로 ROL, ROR 함수를 따로 구현하였다.
ROR: 00010001이면, 10001000이 된다.
def ror(x, n):
shiftBit = x >> n
carryBit = x << (8 - n)
carryBit &= 255
return shiftBit | carryBit
ROL: 10010000이면, 00100001이 된다.
def rol(x, n):
shiftBit = x << n
shiftBit &= 255
carryBit = x >> 8 - n
return shiftBit | carryBit
반응형