본문 바로가기

Reverse Engineering

[Secuinside 2013] PE time IDA로 열어본다. ... GetWindowTextA(::hWnd, &String, 128); SetWindowTextA(hWnd, &String); v16 = 5; do { String -= v16; String ^= 3u; --v16; } while ( v16 ); v17 = 4; do { v23 -= v17; v23 ^= 4u; --v17; } while ( v17 ); v18 = 3; do { v24 -= v18; v24 ^= 5u; --v18; } while ( v18 ); v19 = 2; do { v25 -= v19; v25 ^= 6u; --v19; } while ( v19 ); v20 = strcmp(&String, "C;@R"); if ( v20 ) v20 = -(v20 >> chr((((.. 더보기
[Codegate 2013] Binary 100 simple write up peid를 통해서, 혹은 그냥 프로그램을 바로 켜봐도 느낌상 C# 파일이라는것을 확인할수 있다. 그러므로, net reflector를 이용해서 디컴파일했다. 코드를 쭉 살펴보다보면, 우리에게 보여주는 중요한 string은 암호화 되어있고 xor과 AES encrypt로 되어있다는것을 알수있다. blocksize가 0x100이므로, Rijndael 방식중에서도 256비트라는것을 알수있고, key값은 9e2ea73295c7201c5ccd044477228527 이다. iv값도 key값과 같은 값을 사용한다. 그리고 중요한점은, utf-8방식으로 해야한다는것이다. 그래서 온라인상에 있는 rijndael decrypt 페이지에서는 안되더라.. 그래서 처음엔 python으로 진행하다가 나중에 php를 이용해서 디코.. 더보기
[PHDays 2012] Binary 100 Write up 문제파일: 저한테는 Binary 100 치고는 어려웠던 문제였습니다. 우선 PEID로 살펴보았습니다. UPX로 패킹이 되어있네요. IDA를 사용하기위해 우선 upx308w를 이용하여 언패킹을 하였습니다. 언패킹을 한후, 파일이름을 unpacked.exe로 바꾸고 작업하였습니다. 그냥 실행하면, "Ups, some calls are wrong or missing" 이라는 말만 하고는 끝납니다.. 올리디버거로 그 부분을 찾아가보면, [403790] 에 있는 값이 0이기때문에 아까와같은 메세지가 떴습니다. 억지로 flag를 보여주는곳으로 점프를 시켜봤자, "HoppaKey"가 뜰 뿐입니다. 하지만, 문제에서 답은 MD5로 주어진다고 했으므로, 이 "HoppaKey"는 답이 아닙니다. 그렇다면, [403790].. 더보기