C샵 2020. 4. 16. 20:32

 

C#은 .NET Framework 버전 및 Visual Studio 버전과 밀접한 관련이 있으며, 다음 도표에서 각 버젼별 연관성을 살펴 볼 수 있다.

 

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가
  • 6행 선택6행 다음에 행 추가
  • 7행 선택7행 다음에 행 추가
  • 8행 선택8행 다음에 행 추가
  • 9행 선택9행 다음에 행 추가
  • 10행 선택10행 다음에 행 추가
  • 11행 선택11행 다음에 행 추가
  • 12행 선택12행 다음에 행 추가
  • 13행 선택13행 다음에 행 추가

열 너비 조절

행 높이 조절

.NET 버전

C# 버전

Visual Studio

.NET 1.0

C# 1.0

Visual Studio .NET

.NET 1.1

C# 1.1

Visual Studio .NET 2003

.NET 2.0

C# 2.0

Visual Studio 2005

.NET 3.0

C# 2.0

Visual Studio 2005 Extensions

.NET 3.5

C# 3.0

Visual Studio 2008

.NET 4.0

C# 4.0

Visual Studio 2010

.NET 4.5

C# 5.0

Visual Studio 2012

Visual Studio 2013

.NET 4.6

C# 6.0

Visual Studio 2015

.NET 4.6.2

C# 7.0

Visual Studio 2017

.NET 4.7

C# 7.1

Visual Studio 2017 Update 15.3

.NET 4.7.1

C# 7.2

Visual Studio 2017 Update 15.5

.NET 4.7.2

C# 7.3

Visual Studio 2017 Update 15.7

.NET Core 3.0

C# 8.0

Visual Studio 2019 Update 16.3 + .NET Core 3.0

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Visual Studio 2010은 .NET 4.0 뿐만 아니라 .NET 2.0, .NET 3.0, .NET 3.5도 지원한다.

Visual Studio 2008은 .NET 3.5 뿐만 아니라 .NET 2.0, .NET 3.0도 지원한다.

C# 7.1, C# 7.2, C# 7.3은 Minor 버전으로 자동으로 Enable되지 않으며, VS에서 C# 프로젝트 속성창 => Build 탭 => Advanced 버튼 => Language Version 콤보박스에서 해당 버전을 선택해야 한다.

C# 8.0을 사용하기 위해서는 VS 2019를 Update 16.3 이상으로 업데이트하고 .NET Core 3.0 을 설치한 후 사용한다. C# 8.0은 .NET Framework 4.8에서 사용할 수 없다.

 

 


C# 버전별 주요 기능

 

다음은 C# 버전별로 새로 추가된 주요 기능들을 요약한 것이다.

 

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가
  • 6행 선택6행 다음에 행 추가
  • 7행 선택7행 다음에 행 추가

열 너비 조절

행 높이 조절

C# 버전

주요 기능

C# 2.0

C# Generics

Anonymous Method (무명 메서드)

Nullable Type

Partial Type

C# yield 키워드

Delegate에 대한 Covariance / Contravariance

C# 3.0

Lambda Expression (람다식)

Anonymous Type (익명 타입)

Extension Method (확장 메서드)

C# var 키워드 (implicit type)

LINQ

Expression Tree

C# 4.0

C# dynamic (Late binding)

Named Argument

Optional Argument

Indexed Property

보다 쉬운 Office COM API 지원

C# 5.0

C# async / await

Caller Information

C# 6.0

널 조건 연산자 (Null-conditional operator)

문자열 내삽(內揷) 기능 (String Interpolation)

Dictionary Initializer

nameof 연산자

using static 문

catch/finally 블럭에서 await 사용

Exception Filter 지원

자동 속성 초기자 (Auto-Property Initializer)

읽기전용 자동 속성 (Getter only)

Expression-bodied member 사용

C# 7.0

C# 7.0: 패턴 매칭

C# 7.0: 튜플 (Tuple)

C# 7.0: 로컬 함수 (Local Function)

C# 7.0: out 파라미터

C# 7.0: 자리수 분리자와 이진 리터럴

C# 7.0: Deconstructor

C# 7.0: ref local 과 ref return

C# 7.0: async 커스텀 리턴 타입

C# 7.0: 향상된 Expression-bodied 표현

C# 7.0: throw expression

C# 8.0

C# 8.0: 디폴트 인터페이스 멤버 (Default Inteface Members)

C# 8.0: 향상된 패턴 매칭 기능 (Pattern Matching)

C# 8.0: Nullable Reference Type

C# 8.0: 인덱싱과 슬라이싱 (Indexing / Slicing)

C# 8.0: 비동기 스트림 (Async Stream)

C# 8.0: using 선언

C# 8.0: 널 병합 할당 연산자 (Null-coalescing assignment)

C# 8.0: 구조체(struct) 읽기 전용 멤버

C# 8.0: 기타 기능들

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

 

posted by 핵커 커뮤니티
:
C샵 2020. 4. 16. 20:29

C# 프로그래밍 언어 

C#은 마이크로소프트에서 개발된 객체 지향 프로그래밍 언어로서 Java 나 C++와 비슷한 면들을 많이 가지고 있다. C#을 이야기 하면 자연스럽게 .NET Framework을 함께 이야기 해야할 정도로 C#은 .NET Framework을 이용하여 프로그래밍하는 대표적인 언어이다. C#은 윈도우 프로그래밍, 웹 프로그래밍, 게임 및 모바일 프로그래밍 등 모든 영역에서 사용되는 범용 프로그래밍 언어이다 


C# 프로그램 소스코드 

C# 프로그램은 .cs 라는 확장자를 사용한다.
   예) test.cs, test.aspx.cs, test.xaml.cs 
C++와 다르게 C#은 *.h과 같은 별도의 헤더 파일이 없다.

C# 프로그램으로부터 실행 파일을 만들기 위해서는 (1) Visual Studio를 사용하는 경우 C# 프로젝트를 빌드하여 실행파일을 생성하며 (2) Visual Studio 없이 .NET Framework에서 제공되는 C# 컴파일러인 csc.exe를 이용하여 실행파일을 생성할 수 있다. 


 

 

 

 


아주 간단한 C# 프로그램 

다음은 아주 간단한 C# 프로그램 예제로서 Hello World 라는 텍스트를 콘솔 화면에 출력하는 프로그램이다. 

예제

namespace Intro_Ex1 {     class Program     {         static void Main(string[] args)         {             System.Console.WriteLine("Hello World...");         }     } }

  • 모든 C# 프로그램은 Main()이라는 시작 함수(메서드)를 가져야 한다. Main() 메소드는 임의의 클래스 안에서 존재하며, 프로그램 상에 단 1개만 있어야 한다.
  • Main()는 static으로 선언되며, 메소드 인자는 string[] 문자열이다.
  • System.Console은 .NET Framework 클래스이며, WriteLine은 화면에 데이타를 Console클래스의 출력하는 메서드이다.

C# 코멘트 

C# 에서 코멘트를 사용하기 위해서는 (1) 한 라인에 대해 코멘트할 경우 // 을 사용하고 (2) 복수 라인에 대해 코멘트를 할 경우는 /* */ 를 사용한다. 

예제

namespace Intro_Ex2 {         class Program     {         static void Main(string[] args)         {             // 코멘트: 한 라인 코멘트는 두개의 슬래시 사용함                    int a = 1;             int b = 1;  // 코멘트: 하나의 문장 뒤에 코멘트를 달 수 있음             /*                복수 라인에 대한 코멘트                int c;                int d;              */         }     } }

'C샵' 카테고리의 다른 글

[C#] C# 데이터 타입 배워보기 (종류)  (1) 2020.04.16
[C#] C#의 버전 알아보자  (0) 2020.04.16
[C#] TXT 불러오기 소스  (0) 2020.04.13
[C#] 네이버 카페 인증소스  (0) 2020.04.13
posted by 핵커 커뮤니티
:
Cheat Engine 2020. 4. 15. 09:15

준비물

1. 치트엔진 6.8src https://hackbox.tistory.com/m/90

2. 라자루스 http://www.lazarus.freepascal.org/index.php?page=downloads

3. asr http://gusqls9901.tnaru.com/files/mc/board/0/220/actualsr_lbr_1_rbr_.zip

4. windows driver kit http://software.naver.com/software/summary.nhn?softwareId=MFS_104443

5. 아크로 에디터 http://www.acrosoft.pe.kr/board/63446

 

주의사항

driver kit 설치시 전부 체크후 설치할 것!

 

1. 6.8src를 c드라이브에 압축해제후 DBKKernel 풀더안의 ce.bet을 오른쪽 클릭후 아크로에디터로 열기

 

2.copy .\obj%BUILD_ALT_DIR%\i386\지정하고픈 엔진의 이름 5글자.sys "..\Cheat Engine\bin\지정하고픈 엔진의 이름 5글자.sys" goto successend: x86success:

  copy .\obj%BUILD_ALT_DIR%\amd64\지정하고픈 엔진의 이름 5글자.sys "..\Cheat Engine\bin\지정하고픈 엔진의 이름 5글자.sys" goto successend

 

굵게 처리된 부분을 수정해야하며 영어와 숫자로만 엔진의 이름을 정해야함. 수정후 꼭 좌상당의 저장을 누를것.

 

ex) obj%BUILD_ALT_DIR%\i386\star1.sys"

 

3. 저장을 완료한 후 다시 DbkKernel 풀더의 sources.ce를 열어 targetname에 앞서 ce.bet에 수정했던 엔진의 이름을 입력후 저장

 

ex) targetname=star1

 

4. windows driver kit에 Checked Build Environment을 열게되면 명령프롬포트창이 열림. (32비트용 x86, 64비트용 x64) 

   프롬포트창에 cd c:\CheatEngine64src\DBKKernel 을 입력해준다. (이는 자신이 소스파일을 설치한 경로를 설정해 주어야하며 앞의 예제는 c드라이브에 압축을 풀었을시 기본경로임.)

   입력후 다시 ce를 입력. 

   "1개의 파일이 복사되었습니다." 라는 말이 나와야 정상적으로 성공. 만약 실패시 처음부터 다시 시도할것.

 

5. cheatengine64src풀더안의 bin풀더를 열게되면 새롭게 복사한 sys파일이 생성되어 있어야함. 

 

ex) ...\bin\star1.sys

 

6. 다시 src풀더로 돌아가 cheatengine.lpi를 실행. 뭔가 복잡한 창이 뜨지만 우리와는 별 관계없음. 

   상단 툴바에 project->project inspector 실행.

   검색창에 main을 검색후 mainunit2.pas를 더블클릭

 

7. resoursestring부분의 ceneme='엔진의 이름' 부분을 입맛에 맞게 변경후 컴파일 진행 (단축키 F8)

 

ex) ceneme='핵커엔진' 

 

8. 다시 DBKKernnel풀더로 돌아가  IOPLDispatcher.c 파일을 아크로에디터로 열기

   많은 단어들이 나오는데 우리가 수정해야할 부분을 검색(ctrl+f)하여 찾아줌

   우리가 수정해야하는 부분은 ReadProcessMemory, WriteProcessMemory, GetMemoryRegionData 임.

   검색하게되면 ntStatus=ReadProcessMemory( (DWORD)pinp->processid-0x0000,null, (PVOID)pinp 블라블라 나올텐데

   빨간부분을 수정해야함. 자신이 원하는 우회값을 숫자로 입력 단, IOPLDispatcher.c를 수정할땐 반드시 -를 붙여야함.

 

ex) processid-0x5480

   

    3개(ReadProcessMemory, WriteProcessMemory, GetMemoryRegionData)를 검색하여 모두 같은값으로 수정해야함. 

 

9. 다시 6번과 같이 치트엔진을 열어주고 마찬가지로 상단 툴바의 project->project inspector를 실행. 검색창에 dbk를 검색하고 dbk32\DBK32functions.pas를 더블클릭후

   검색기능으로 input.ProcessID:=handlelist[i].processid 를 검색후 input.ProcessID:=handlelist[i].processid+0x0000의 빨간부분에 8번에서 설정한 우회값을 재입력

   단, 8번에서는 반드시 '-'를 붙여야 했지만 여기서는 반드시 '+'를 붙여야함.

 

ex)input.ProcessID:=handlelist[i].processid+0x5480

*프로세스 아이디 제일 쉬운 우회방법입니다. 실제사용은 매우 불가능합니다! 참고바랍니다.

posted by 핵커 커뮤니티
:
컴파일러 자료실 2020. 4. 15. 09:13

패치내역

Fixes:

Fixed some more high dpi issues

Fixed issues with the dropdown list in memory records

Fixed pointer offset symbols not calculating properly

Fixed registered binutils

Fixed graphical issues with the tablist

Fixed issue where memory blocks would get cut of before the page end

Fixed some memory leaks

Fixed some graphical issues in the addresslist

Fixed rightclick on r8 and r9 in memoryview

Fixed disassembling some instructions

Fixed DBVM so it works on windows 1709 and later (tested on 1803)

Fixed several DBVM offload crashes

Fixed freeze with allow increase/decrease for 8 byte long values

Fixed several issues where minimizing a window and then close it would hang CE

Fixed file scanning

Fixed crashes when editing memory in some some emulators

Additions and changes:

Text editor improvements

Added hundreds of new cpu instructions

Mono now has some new features like instancing of objects

Mono instances window is now a treeview where you can see the fields and values

"find what addresses this code accesses" can also be used on RET instructions now (useful to find callers)

The graphical memory view now has a lot more options to set it just the way you need

Codepage support in hexview

structure data from PDB files can now be used, and are stored in a database for lookup later

dissect structures form can now show a list of known structures (pdb, mono, ...)

Added a "revert to saved scan" option (lets you undo changes)

Added a "forgot scan" option (in case you forgot what you're doing)

Pointerscan limit nodes is default on in a new ce install (remembers your choice when you disable it)

Autoattach now happens using a thread instead of a gui blocking timer

Some colorscheme enhancements

Added a DBVM based "Find what writes/accesses" feature. (For pro users, enable kernelmode options for it to show)

Changed the dissect data setup from seperate yes/no/value dialogs to a single window

Added a bypass option for ultimap2 on windows 1709. When using ranges, do not use interrupts, or use DBVM

Added find what writes/access to the foundlist

Autoassembler scriptblocks are now grouped when written to memory

Added {$try}/{$except} to auto assembler scripts

Added an extra tutorial/practice target

Added cut/copy/paste context menu items to pointer offset fields in add/change address, and added a context menu to the pointer destination

Added an automated structure compare for two groups of addresses to find ways to distinguish between them

lua:

added automatic garbage collection and settings to configure it

added new functions:

gc_setPassive

gc_setActive

reinitializeSelfSymbolhandler

registerStructureAndElementListCallback

showSelectionList

changed the getWindowlist output

MainForm.OnProcessOpened (better use this instead of onOpenProcess)

enumStructureForms

cpuid

getHotkeyHandlerThread

bunch of dbvm_ functions (needs dbvm capable cpu, and intel only atm)

and more, including class methods and fields (read celua.txt)

출처 치트엔진깃허브

'컴파일러 자료실' 카테고리의 다른 글

[VB] 네이버 로그인 소스  (2) 2020.04.11
posted by 핵커 커뮤니티
:
C++ 2020. 4. 15. 09:11

<stdio.h>#include <Windows.h>#include <conio.h> //로컬디스크 D 에 ID 라는 파일을 생성해주세요 (대문자)#include <string.h> //프로젝트 - 속성 - c/c++ - 전처리기 ;_CRT_SECURE_NO_WARNINGS 를 추가#include <stdlib.h>#include <ctype.h>

void menu(int*); //로그인프로그램메뉴void login(char*, char*); //로그인void singup(char*, char*); //회원가입

int main(void){ int cho; //선택화면에서 선택값을 저장하는곳 char loginid[15]; //로그인에서 아이디를 저장하는곳 char loginpassword[15]; //로그인에서 비밀번호를 저장하는곳 char singupid[15]; //회원가입에서 아이디를 저장하는곳 char singuppassword[15]; //회원가입에서 비밀번호를 저장하는곳

menu(&cho);

switch (cho) { case 1: login(loginid, loginpassword); break; case 2: singup(singupid, singuppassword); break; default: printf("잘못입력하셨습니다."); main(); break; }}

void menu(int *cho) //메인화면{ printf_s("제작자 : staff2303@gmail.com \n"); printf_s("==============================================. \n"); printf_s("1.login \n"); printf_s("2.sing up \n"); printf_s("주의! 문자입력시오류! (수정중)\n"); scanf_s("%d", cho); system("cls");

}

void login(char *loginid, char *loginpassword) //로그인화면

{ FILE *rfp; char file[50]; char loginpassword2[15]; int amo; printf_s("login. \n"); printf_s("==========================================. \n"); printf_s("  I  D   : "); scanf_s("%s", loginid, 15); sprintf_s(file, "D:\\ID\\%s.txt", loginid); // 아이디와 똑같은 파일을 오픈 fopen_s(&rfp, file, "r"); // 파일이없어서열수없을경우 rfp에는 NULL이들어온다. 

if (rfp == NULL) { system("cls"); printf_s("아이디가없습니다. \n"); printf_s("==========================================. \n"); system("Pause"); system("cls"); main(); }

printf_s("PASSWORD : "); scanf_s("%s", loginpassword, 15); printf("암 호 키 : "); scanf_s("%d", &amo); FILE* fp = fopen(file, "r");   //파일오픈 fgets(loginpassword2, 15, fp); //메모장에서 password를  password2로 저장 fclose(fp); for (int i = 0; loginpassword2[i] != '\0'; i++) //password 복호화 { if (isalpha(loginpassword[i])) { if (loginpassword2[i] - amo < 'a') { int plus = 'a' + amo - 1 - loginpassword2[i]; loginpassword2[i] = 'z'; loginpassword2[i] -= plus; } else loginpassword2[i] -= amo; } else { if (loginpassword2[i] - amo < '0') { int plus = '0' + amo - 1 - loginpassword2[i]; loginpassword2[i] = '9'; loginpassword2[i] -= plus; } else loginpassword2[i] -= amo; } }

if (strcmp(loginpassword, loginpassword2) == 0) // 입력한 password와 복호화된 password를 비교 { printf_s("\n로그인완료\n"); system("Pause"); system("cls"); exit(1); } else { system("cls"); printf_s("비밀번호 혹은 암호키가 틀립니다.\n"); system("Pause"); system("cls"); main(); }}

void singup(char *singupid, char *singuppassword)

{ FILE *fp; char file[50]; int amo; printf_s("sing up. \n"); printf_s("==========================================. \n"); printf_s("아이디를입력하시오(15자이내). \n"); scanf_s("%s", singupid, 15); sprintf(file, "D:\\ID\\%s.txt", singupid); // 폴더의 이름과 경로를 file 에 저장 (아이디 = 폴더의 이름) fp = fopen(file, "w+"); fclose(fp); Sleep(1000); system("cls");

printf_s("sing up. \n"); printf_s("==========================================. \n"); printf_s("비밀번호를입력하세요(영문, 숫자 15자이내).\n"); scanf_s("%s", singuppassword, 15); printf_s("암호키를 입력하세요(1~5) \n"); scanf_s("%d", &amo);

for (int i = 0; singuppassword[i] != '\0'; i++) //password 암호화 { if (isalpha(singuppassword[i])) { if (singuppassword[i] + amo > 'z')

{ int less = singuppassword[i] - 'z';

singuppassword[i] = 'a' + amo - 1; singuppassword[i] += less; } else singuppassword[i] += amo; } else { if (singuppassword[i] + amo > '9')

{ int less = singuppassword[i] - '9';

singuppassword[i] = '0' + amo - 1; singuppassword[i] += less; } else singuppassword[i] += amo; } } fp = fopen(file, "w+"); fprintf(fp, "%s", singuppassword); fclose(fp); Sleep(1000); system("cls"); //완료창  printf_s("회원가입완료. \n"); printf_s("==========================================. \n"); Sleep(1000); system("cls"); main();}

'C++' 카테고리의 다른 글

[C++] 네이버 RSA 로그인 소스  (0) 2020.04.14
posted by 핵커 커뮤니티
:
VB 2020. 4. 15. 09:08

먼저 폼에 커맨드버튼 1개, 텍스트 박스 1개를 준비한후,

프로젝트▶구성 요소로 들어간다음 잘 찾아보시면

Microsoft Internet controls 가 있습니다. 그것을 체크하신후,

확인을 누르면 도구 탭에 지구(?)가 등록되는 대요,

그걸 클릭하고 폼에 추가 해 줍니다.

커맨드버튼에 무엇을 입력하냐면

Private sub CommandButton1_click()

WebBrowser1.Navigate (Text1)

End sub 가 되겠죠.

그리고 Text1에 주소를 입력하고 커맨드 버튼을 누르면 웹 브라우저에 인터넷이 표시됩니다.

만약 뒤로, 앞으로, 홈으로, 새로고침 을 추가 하고 싶다면,

뒤로는

Private sub CommandButton1_click()

WebBrowser1.GoBack

End sub 이고

앞으로는

Private sub CommandButton1_click()

WebBrowser1.GoForward

End sub 이고

홈으로는

Private sub CommandButton1_click()

WebBrowser1.GoHome

End sub 이고

새로고침은

Private sub CommandButton1_click()

WebBrowser1.Refresh 가 되겠죠.

만약 웹브라우저에서 새로운 창을 추가하면,

Internet Explorer 로 새 창이 나옵니다.

만약 만든 브라우저로 새 창을 열고 싶을때는,

이 코드를 폼에 추가 하면 됩니다.

Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)

Dim frm As Form1

Set frm = New Form1

Set ppDisp = frm.WebBrowser1.Object

frm.Show

End Sud

'VB' 카테고리의 다른 글

[VB] 랜덤숫자을 출력해보자  (0) 2020.04.15
[VB] 다음 로그인 소스  (0) 2020.04.15
[VB] 스마일파일 로그인 소스  (0) 2020.04.15
[VB] 한글판 패치하기  (0) 2020.04.15
posted by 핵커 커뮤니티
:
VB 2020. 4. 15. 09:06

Private Sub Form_Load()

Timer1.Enabled = True

Timer1.Interval = 1

End Sub

Private Sub Timer1_Timer()

Dim Notice As String

Notice = Int(Rnd * 100000) + 1

Form1.Caption = Notice

End Sub

'VB' 카테고리의 다른 글

[VB] 인터넷창 띄우기 (소스)  (0) 2020.04.15
[VB] 다음 로그인 소스  (0) 2020.04.15
[VB] 스마일파일 로그인 소스  (0) 2020.04.15
[VB] 한글판 패치하기  (0) 2020.04.15
posted by 핵커 커뮤니티
:
VB 2020. 4. 15. 09:05

Function DaumLogin(id As String, Pw As String) As Boolean

winhttp.Open "POST", "https://logins.daum.net/accounts/login.do?slogin=2", True

winhttp.SetRequestHeader "Host", "logins.daum.net"

winhttp.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0"

winhttp.SetRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"

winhttp.SetRequestHeader "Referer", "https://logins.daum.net/accounts/loginform.do"

winhttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"

winhttp.Send "id=" & id & "&pw=" & Pw

winhttp.WaitForResponse

 

If InStr(winhttp.ResponseText, "Daum 로그인 오류") = 0 Then

 

Login = True

Else

Login = False

 

End If

 

End Function

'VB' 카테고리의 다른 글

[VB] 인터넷창 띄우기 (소스)  (0) 2020.04.15
[VB] 랜덤숫자을 출력해보자  (0) 2020.04.15
[VB] 스마일파일 로그인 소스  (0) 2020.04.15
[VB] 한글판 패치하기  (0) 2020.04.15
posted by 핵커 커뮤니티
: