본문 바로가기
반응형

.Net49

.NET - 코드 난독화 .NET 코드는 디컴파일러를 통해 쉽게 복호화가 가능하다. 필자 역시 .NET을 이용하여 코드를 많이 작성하는데, 간혹 비밀키가 들어갔거나 암호화가 필요할 때 난독화를 항상 고민한다. .NET 에서 사용할 수 있는 난독화 도구는 필자 기준으로 추천한다면, .NET기준 현재 유용한 도구는 Eazfuscator.NET이다. .NET 기준 디컴파일러로 가장 많이 손쉽게 이용되는 ILSPY를 통해 Eazfuscator.NET 을 이용하여 암호화 전/후를 비교해 보면 쉽게 차이를 알 수 있다. ILSPY ILSPY는 코드 복호화 도구중 무료이면서 강력한 .NET 코드 복호화 도구 이다. https://github.com/icsharpcode/ILSpy/releases/tag/v6.2.1 만약 Hello World.. 2024. 4. 12.
.NET MAUI - ShellContent 구성 확인 MAUI를 시작하면 가장 기본이 되는 컨텐츠 타입이다. MAUI는 .NET을 이용한 멀티 플랫폼 도구이다. 멀티 플랫폼을 위해서 UI를 구성하는 요소들이 공통적으로 사용할 수 있도록 구성하였는데, 각 구성 요소들에 대해서 알아보도록 하자. ShellContent 는 MAUI 프로젝트를 생성하면 가장 기본적으로 구성되어 있는 화면 UI이다. ShellContent 의 특징은 제목 줄과 같은 타이틀을 명시 할 수 있다는 것이다. 가장 큰 특징은 Tabbar를 이용할 수 있는데 이 부분은 추후에 진행하도록 하자. 기본 프로젝트의 시작점인 App.xaml.cs를 확인해 보면, AppShell()을 MainPage로 실행하는 것을 알 수 있다. 즉 아래 AppShell.xaml를 기본 페이지로 여는 것이다. Ap.. 2024. 2. 28.
.NET - STRING.FORMAT 입력 문자열의 형식이 잘못되었습니다. 처리되지 않은 ‘System.FormatException’ 형식의 예외가 mscorlib.dll에서 발생했습니다. 입력 문자열의 형식이 잘못되었습니다. 중괄호 하나를 사용할 경우 이는 값을 치환하는 용도로 사용된다 JSON 포맷을 만들어야 하는 경우 중괄호를 사용해야 하는 경우가 있습니다. 하지만 String.Format에서는 중괄호는 기본적으로 값을 치환하는 역활을 합니다. String.Format(@"Input: {0}", Test); 하지만 포맷 자체에 중괄호 {} 가 들어가야할 때가 존재 합니다. 대표적으로 JSON과 같은 그룹으로 값을 묶어서 표현해야 하는 경우가 있습니다. String.Format(@"{Input1: {0}, INPUT2: {1}}", Test1, Test2); 위와 같이 중괄.. 2024. 2. 27.
.NET - Better Windows Event Log Conversion to JSON 윈도우 이벤트를 프로그램으로 가져온 경험이 있다면 데이터로 처리하기 어렵다는 점을 많이 느낄것이다. 이글에서는 왜 윈도우 이벤트를 쉽게 가져오기가 힘든지와, 어떻게 하면 최선의 방법으로 이벤트 로그를 JSON으로 가공할 수 있는지에 대해 얘기해보도록 하겠다. 먼저 윈도우 이벤트는 다중언어를 지원하기 위해 XML로 구성되어 있다는 것을 이해할 필요가 있다. 즉 이벤트들은 다중언어(일본어, 한국어, 중국어)별로 동일한 이벤트에 대한 표시 언어를 XML로 만들어 두고, 이에 대한 값, Value만을 저장하는 방식이다. 이벤트 템플릿은은 아래 파워셀 명령을 통해 쉽게 확인 할 수 있다. Widows Event ID Offer Multiple Lang, So they make Lang template like a.. 2024. 2. 27.
.NET - EXE에 모든 Dll, 리소스 포함하여 빌드하기 C# 프로그램을 개발한다면, 누구나 느끼는 Nuget에서 받은 DLL과 리소스들을 합쳐서 깔끔하게 배포하고 싶은 욕구가 있을 것이다. 아래에는 저자가 기존부터 경험했던 리소스를 EXE에 포함하여 배포하는 방법 3가지를 공유해보도록 하겠다. 1. 리소스에서 파일 생성하기 예전에는 DLL과, 리소스 파일들을 포함하기 위해서는 리소스 파일을 만들어서 실행 하는 시점에 해당 파일이 있는지 확인하고, 로드하는 방식을 사용하였다. 아래는 저자가 특정 파일을 리소스에 포함했다가 프로그램 실행시점에 해당 파일이 있는지 확인하여 리소스에서 파일 쓰는 방식이다. 이 방식은 Update.exe와 같은 추가 기능을 EXE 파일에 넣었다가 필요시 리소스에서 꺼내어 사용할 수 있는 방식으로도 활용이 가능하다, 다만 특정 백신에서.. 2024. 2. 24.
.NET/MVC - ActionLink 새창에서 열기 LinkExtensions.ActionLink Method (System.Web.Mvc.Html) | Microsoft Learn 위 글을 읽어보면 4번째 인자는 route 관련 인자로 활용된다. public static System.Web.Mvc.MvcHtmlString ActionLink (this System.Web.Mvc.HtmlHelper htmlHelper, string linkText, string actionName, object routeValues); 아래와 같이 target = "_blank" 로 지정할 경우 브라우저의 새로운 창으로 아래 정보를 전달하게 된다. @Html.ActionLink(item.date.ToString(), "History", new { ip = item.add.. 2024. 2. 24.
.NET/MVC - 기존 프로젝트에 WEB API 추가하기 .Net MVC를 개발하다보면, 프로젝트 초기에는 필요 없던 RestFul을 통한 Web API 기능이 필요할 때가 있다. 여기에서는 기존 MVC 프로젝트에 Web API를 추가하는 방법을 알아보고자 한다. 1. Web API 컨트롤러 추가 먼저 Web API를 추가해보자. 기본 템플릿에서 제공하는 Web API를 추가하면 기본적으로 Get, Post 등의 평션이 생성되어 바로 테스트에 사용할 수 있다. 여기서 주의할 점은 Colltroller 앞에 나오는 이름이 실행하는 REST API 네이밍 구분자가 된다는 것이니 기능에 알맞은 이름을 주면 된다. 여기에서는 Test로 주었다.(대소문자 구분 X) 추가 이후 실행해 보면, 정상적으로 동작을 하지 않는다. 이유는 Web API의 Route 경로를 추가해.. 2024. 2. 24.
C#/.NET - DateTime 문자열 포맷 전체 아래 글에 세부적으로 잘 정리되어 있는데, 시간 값을 표현하는 방식을 하도 자주 사용하다보니, 예제를 갈무리 해봤다. DateTime.Now.ToString("MM/dd/yyyy") 05/29/2015 DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 05:50 DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 05:50 AM DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 5:50 DateTime... 2024. 2. 23.
.NET/MVC - foreach loop 제한하기 .NET MVC에서 View 화면 처리를 위해 foreach를 구사하여 Item을 처리하는데, 화면 구성을 고려하여 특정 갯수 이상을 넘지 않도록 구성할 필요가 종종 발생한다. for 문을 통해서 int i의 증가를 계산해서 하는 방법도 있겠지만 더 간단히 구사할 수 있는 방법이 있다. 바로 Take() 인자를 사용하면 된다. Total Count : @Model.Result.Count() Result Value Limit 10 @foreach (var item in Model.Result.Take(10)) { @Html.DisplayFor(modelItem => item) } 필자는 보통 전체 카운트를 보여주고, 실제 값은 제한적으로 표시하고자 할 때 많이 사용하는 방법중 하나이다. 2024. 2. 23.
반응형