Admin | Write | GuestBook
[공지] 해당 블로그에 용건이 있으신 분께서는 http://blog.fore.kr/ 의 방명록(Guestbook)으로 부탁드립니다.
超A&G+ PLAYER
Category : Programming/Release Program | URL : | Written by 포레 ( 2015. 1. 27. 21:42 ) | 신고

For .Net(.EXE)

 

ChoAG _PLAYER.zip

 

플레이어라고 하기 참 뭐한데 . . .

 

요새 .Net Framework 2.0 은 대부분 설치되어 있을텐데

 

아무튼, .Net Framework 2.0 이상 필요합니다.

( http://www.microsoft.com/en-US/download/details.aspx?id=1639 )

 

ChoAG.EXE 으로 실행하셔야 합니다.

 

 

 

For WMP(Windows Media Player)

 

ChoAG_for_WMP.zip

 

PLAY.bat 으로 실행.

'Programming > Release Program' 카테고리의 다른 글

섬광의 기사 ~카리스티아 나이트~ 추출  (0) 2015.09.06
xp3_atxr  (2) 2015.04.29
CS2 Loader  (2) 2014.12.16
exlefor3  (0) 2014.11.18
OleUnRePack  (27) 2014.09.12
네○파라 vol.1 암호화 루틴
Category : Programming/Programming Talk | URL : | Written by 포레 ( 2014. 12. 31. 11:34 ) | 신고

 

 

"""

 Python 2.7 pseudocode

 Present by FORE

"""

from struct import pack, unpack

from ctypes import *

 

class ELIF(Structure):

 _fields_ = [ ('Signature',c_uint),

 ('ullStructSize',c_ulonglong),

 ('dwEncryptKey',c_uint),

 ('wFileName',c_ushort),

 ('FileName',c_wchar_p) ]

 

def get_encrypt_key(key):

 key ^= 0x1548E29C

 key ^= ((key>>0x18)^(key>>0x10)^(key>>0x08))

 return key and key&0x000000FF or 0xD7

 

def decode(buf,key):

 key = get_encrypt_key(key)

 length = len(buf)

 buf = list(unpack('B'*length,buf))

 for i in range(length):

  buf[i] ^= key

 buf = pack('B'*length,*buf)

 return buf

 

def main():

 elif = ELIF()

 # ... read something

 buf = decode(buf,eilf.dwEncryptKey)

 

 

최근들어 이런 암호화 루틴이 많이 쓰는듯 . . .

( 그 외에도 테이블 생성해서 별짓 다하는 색히들도 존재함 -_- . . . 최근 발매한 발○ 스위치라던가 . . . )

 

get_encrypt_key 함수에 첫줄의 xor 값이 변경될 수 있으므로 모든 엔진에 적용된다고 보장할 수 없지만

 

적절히 바이너리 서치하면 아마 위와 같은 암호화 쓰는 거의 모든 엔진에서 먹히지 않을까 하는게 결론.

 

참고로 data 어카이브 경우 오프닝 엔딩 동영상이 400mb 넘어가므로 한번에 언팩하면 상당한 렉을 유발하니

 

분할시켜서 처리하거나, 근성을 갖고 그냥 풀어버리는 수 밖에 없을듯함.

 

근데, 왜 한국어는 없는거죠 . . .

 

'Programming > Programming Talk' 카테고리의 다른 글

미연시계의 횡포. 2***AME  (0) 2015.05.08
엔스크립트에 대해서 잠깐 분석해봄.  (0) 2015.05.01
[Python] pf2  (8) 2014.12.16
[C/C++] 한글 판별 코드.  (2) 2014.12.16
[Python] 파이썬 2.7 유니코드 관계  (6) 2014.12.13
[Python] pf2
Category : Programming/Programming Talk | URL : | Written by 포레 ( 2014. 12. 16. 11:08 ) | 신고

 

 

 

pf2.py

 

Using : pf2.py <filename>

 

pfs 파일 언팩때 사용됨.

 

 

[C/C++] 한글 판별 코드.
Category : Programming/Programming Talk | URL : | Written by 포레 ( 2014. 12. 16. 09:44 ) | 신고

 

 

아오... 만들긴 귀찮고, 인터넷에 이정돈 떠돌아 다니겠지 했는데 없음 -_- . . .

 

찾아도 죄다 유니코드로 판별.(이것조차도 불완전함.)

 

ANSI 코드는 죄다 0x80 으로 비교분석하고 끝남.

( 이러면 문제가 되는게, 한글외 전각문자 예를 들면 ★, あ와 같은 것들도 한글로 처리됨. )

 

IsDBCSLeadByte 함수 또한 싱글바이트로 들어가서 순수 한글을 판단하는건 불가능함.

( 아마, 코드페이지에 해당하는 전각 문자열 범위로 판단하는듯 함. )

 

결론은 그냥 직접 작성함.

 

이거 어렵지 않고 단순 노가다인데 왜 안보이지 -_- . . .

( 검색어가 좋지 않았나 . . . )

 

//  IsHangulString

// Present by FORE

// http://foreblog.tistory.com/

 

#include <windows.h>


BOOL WINAPI IsHangulStringA(LPSTR lpString){
 BYTE   ch1,ch2;
 while(*lpString){
  ch1 = (BYTE)*lpString;
  if ( ch1 & 0x80 ){
   ch2 = (BYTE)*(lpString+1);
   if ( (ch1>0x80 && ch1<=0xA0) || (ch1>=0xB0 && ch1<=0xC5) ){
    if ( (ch2>0x40 && ch2<0x5B) || (ch2>0x60 && ch2<0x7B) || (ch2>0x80 && ch2<0xFF) )
     return TRUE;
   }
   else if ( ch1>0xA0 && ch1<0xB0 ){
    if ( (ch2>0x40 && ch2<0x5B) || (ch2>0x60 && ch2<0x7B) || (ch2>0x80 && ch2<0xA1) )
     return TRUE;
    if ( ch1 == 0xA4 ){ // 여기가 자모 코드. 자모 판별 필요 없을시 제거 가능.
     if ( ch2>0xA0 && ch2<0xFF )
      return TRUE;
    }
   }
   else if ( ch1 == 0xC6 ){
    if ( (ch2>0x40 && ch2<0x53 ) || (ch2>0xA0 && ch2<0xFF) )
     return TRUE;
   }
   else if ( ch1 > 0xC6 && ch1 < 0xC9 ){
    if ( ch2>0xA0 && ch2<0xFF )
     return TRUE;
   }
   lpString++;
  }
  lpString++;
 }
 return FALSE;
}

 

BOOL WINAPI IsHangulStringW(LPWSTR lpString){
 WCHAR   ch1;
 while(*lpString){
  ch1 = *lpString;
  if ( (ch1 >= 0xAC00 && ch1 <=0xD7A3)
   || (ch1 >= 0xA960 && ch1 <=0xA97C) // 이 밑부터 죄다 자모 코드
   || (ch1 >= 0xD7B0 && ch1 <=0xD7C6)
   || (ch1 >= 0xD7CB && ch1 <=0xD7FB)
   || (ch1 >= 0x3131 && ch1 <=0x318E) )
   return TRUE;
  lpString++;
 }
 return FALSE;
}

 

 

 

IsHangulStringA 의 수많은 if를 한줄로 줄이면

 

BOOL WINAPI IsHangulStringA(LPSTR lpString){
 BYTE   ch1,ch2;
 while(*lpString){
  ch1 = (BYTE)*lpString;
  if ( ch1 & 0x80 ){
   ch2 = (BYTE)*(lpString+1);
   if ( (((ch1>0x80 && ch1<=0xA0) || (ch1>=0xB0 && ch1<=0xC5)) && ((ch2>0x40 && ch2<0x5B) || (ch2>0x60 && ch2<0x7B) || (ch2>0x80 && ch2<0xFF)))
    || ((ch1>0xA0 && ch1<0xB0) && (ch2>0x40 && ch2<0x5B) || (ch2>0x60 && ch2<0x7B) || (ch2>0x80 && ch2<0xA1))
    || ((ch1 == 0xA4) && (ch2>0xA0 && ch2<0xFF))
    || ((ch1 == 0xC6) && ((ch2>0x40 && ch2<0x53 ) || (ch2>0xA0 && ch2<0xFF)))
    || ((ch1 > 0xC6 && ch1 < 0xC9) && (ch2>0xA0 && ch2<0xFF)) )
     return TRUE;
   lpString++;
  }
  lpString++;
 }
 return FALSE;
}

 

이리되는데, 결국 작동속도는 똑같을 것으로 보인다.

 

 

IsHangulString.c

 

CS2 Loader
Category : Programming/Release Program | URL : | Written by 포레 ( 2014. 12. 16. 00:25 ) | 신고

 

 

CS2Loader.exe

CS2 실행 파일로 시작하는 엔진에 한해서 적용됩니다.

( 주로 사용되는 회사 : 윈드밀 오아시스 등... )

 

※ 사용시 주의점.

- 실행 파일이름은 반드시 "CS2.EXE" 으로 설정되어 있어야 합니다.

- 설치 전체 경로 및 사용자 계정명에 한글이 들어가선 안됩니다.

- 한국어 OS 에서 작동합니다.

- 아랄트랜스는 호환되지 않습니다. (아마)

 

※ 사용시 이점.

- 게임끄면 윈도우 창 중 하나가 반드시 프리즈(굳어버림) 처리되는 걸 방지합니다.

- 오프닝, 엔딩 등 로딩후 종료되는 현상을 처리합니다.

- 세이브, 로드, 옵션 등 초기화 되는걸 방지해줍니다.

 

※ 사용 방법

- CS2.EXE 파일이 있는 폴더(게임 설치 폴더)에 넣고 더블클릭으로 실행합니다.

 

p.s > 생각없이 막 코딩하니까 2시간만에 끝나네 [ . . . ]

 

'Programming > Release Program' 카테고리의 다른 글

xp3_atxr  (2) 2015.04.29
超A&G+ PLAYER  (2) 2015.01.27
exlefor3  (0) 2014.11.18
OleUnRePack  (27) 2014.09.12
한국 EMS 다중 배송 추적/조회  (0) 2014.08.01
Category
분류 전체보기 (605)
Notice (6)
Programming (79)
DISKER (1)
FSCH (7)
Caption (0)
Rest Time ! (443)
Hobby (64)
Tour (5)
Blind Post (0)
Recent Post
Recent Comment
Link
Calender
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Total :
Today :
Yesterday :