위치로 진입 점

마지막 업데이트: 2022년 4월 22일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
크롬 확장 프로그램 관리 메뉴

Android Entry Points

Note: Examples on this page assume usage of the Gradle plugin. If you are not using the plugin, please read this page for details.

Android types

Once you have enabled members injection in your Application , you can start enabling members injection in your other Android classes using the @AndroidEntryPoint annotation. You can use @AndroidEntryPoint on the following types:

  1. Activity
  2. Fragment
  3. View
  4. Service
  5. BroadcastReceiver 1

Note that ViewModels are 위치로 진입 점 supported via a separate API @HiltViewModel . ContentProviders are not directly supported due to their onCreate being called at startup, but you can access dependencies via an entry point.

The following example shows how to add the annotation to an activity, but the process is the same for other types. When adding to other types, note that as a general rule, Hilt types need to be attached to other Hilt types to work. So before adding [ @AndroidEntryPoint ] to a fragment, the activity must be annotated as well.

To enable members injection in your activity, annotate your class with @AndroidEntryPoint .위치로 진입 점

Note: Hilt currently only supports activities that extend ComponentActivity and fragments that extend androidx library Fragment , not the (now deprecated) Fragment in the Android platform.

Retained Fragments

Calling setRetainInstance(true) in a Fragment’s onCreate method will keep a fragment instance across configuration changes (instead of destroying and recreating it).

A Hilt fragment should never be retained because it holds a reference to the component (responsible for injection), and that component holds references to the previous Activity instance. In addition, scoped bindings and providers that are injected into the fragment can also cause memory leaks if a Hilt fragment is retained. To prevent Hilt fragments from being retained, a runtime exception will be thrown on configuration change if a retained Hilt fragment is detected.

A non-Hilt fragment can be retained, even if attached to a Hilt activity. However, if that fragment contains a Hilt child fragment, a runtime exception will be thrown when a configuration change occurs.

Note: While it’s not recommended, Hilt fragments can be detached and reattached to the same activity instance. In this 위치로 진입 점 위치로 진입 점 case, the Hilt fragment will only be injected on the first call to onAttach . Note that this is not the same as retaining a fragment, because a retained fragment will be reattached to a different instance of the activity. Again, this is not recommended, and it is often less confusing to just create a new fragment instance for each usage.

Views with Fragment bindings

By default, only SingletonComponent and ActivityComponent bindings can be injected into the view. To enable fragment bindings in your view, add the @WithFragmentBindings annotation to your class.

Unlike the other supported Android classes, BroadcastReceivers do not have their own Dagger component and are instead simply injected from the SingletonComponent . ↩

Reversing XignCode3 Driver – Part 1 – Identifying the Driver Entry Point

This will be a series of posts related to XignCode3 (XC3) Driver. I started this at the beginning of 2019 while I was doing my research for Unveiling the underground world of Anti-Cheats. Due to that, you will find that the version of XC3 is not the lastest one available.

Reversing a Driver of this kind is not only fun but also let you learn a lot about Windows Internals. That said, I will be as short and precise as possible, and I will try to write down some highlights of what I think are some interesting code snippets or features of this driver.

What we will go through?

  1. Learn about the DriverEntry
  2. Learn to identify this function on the binary
  3. Identify how the Driver Object is created
  4. Analyze the Major functions implemented, especially the dispatcher one
  5. Detect some additional code, which we don’t know what it does. Yet.

You can also find here the final result of reversing the function DriverEntry.

Where do I begin?

Getting the .sys file, of course. If you want to reverse this by your own, these are the hashes of the file I used:

  • md5: C82DE0BC9A3A08E351B9BFA960F8757A
  • sha1: F3AE1406B4CD7D1394DAC529C62BB01F3EB46D4A
  • sha256: E7994B56152955835B5025049ABEE651E9C52A6CCAD7E04F2C458C8568967245

When I want to reverse a Driver, I usually like to start with the DriverEntry. In this function, we can find some interesting details that will help us identify most of the features that a driver has implemented.

IDA Pro and Ghidra are usually able to detect this function automatically. But sometimes you may have to do this manually. As the Microsoft site says:

“DriverEntry is the first driver-supplied routine that is called after a driver is loaded. It is responsible for initializing the driver.”

Basically we need to look for a function that calls to IoCreateDevice, this is usually done inside of the DriverEntry, and it is used to create a new device object. This is just one way to do it, but since IDA did it automatically for us, let’s jump straight to the reversing phase.

DriverEntry (0x1400047B8)

To keep this post clean, you can see here how DriverEntry was decompiled by IDA Pro at the very beginning, and here the assembly. I encourage you to take a few minutes to read the code and try to identify the main goal of the function before continuing with your reading. Let’s see how we can clean this up. Sometimes renaming and changing the types of the variables can be 50% of the work and of course, will help us to understand the function better.

We know that DriverEntry receives two parameters: a _DRIVER_OBJECT pointer and a PUNICODE_STRING with the registry path. So, we will change the name and type of those two variables.

Something to take 위치로 진입 점 위치로 진입 점 into account is that many of the structure types we need when reversing are not available by default on IDA Pro. Therefore, we can import them by doing: “File->Load File->Parse C Header file…”.

Going back to the code, we have some validations and concatenation of the SymbolicLinkName and the DeviceName, nothing weird. They are just setting up the required strings:

DriverEntry needs to implement some particular “required responsibilities or routines” as explained here. Let’s see how they did it before calling IoCreateDevice:

I renamed a few variables and functions to describe their main purpose. However, let me explain how you can easily identify them:

Here we can see all the IRP Major Function Codes available on Windows. In the previous snippet of code, only the numbers 0, 2 and 4 have been implemented:

  • IRP_MJ_CREATE 0x00
  • IRP_MJ_CLOSE 0x02
  • IRP_MJ_WRITE 0x04

A full list can be found on my github.

IRP_MJ_CREATE and IRP_MJ_CLOSE are just generic functions. The interesting one is IRP_MJ_WRITE, which will handle the requests coming from user-mode and it is implemented on fn_DriverIOCTLDispatcher. I will explain in another post how this function works and how it dispatches every IRP request. For now, we will focus on interesting functions that DriverEntry calls.

After some analysis of the inner behavior of the functions that are being called, we can get to the following code:

Some interesting names have appeared:

  • fn_InitDispatchMethodArray
  • fn_InitRegistrationNotifyAndCallbackRoutines
  • fn_ObtainKernelFunctions
  • and fn_RegisterCreateProcessNotifyRoutine

As you may have noticed I tend to write very descriptive names haha. Those names might be wrong or not, depending on what we discover during the reversing process later. As I mentioned, most of this work has been done months ago. Sometimes reversing has a lot of guessing, so we need to start to imagine what each function could potentially do and give them names so we can picture the goal of every single one of them.

The name is based on what I could infer about those functions. We are going to see them in depth in the following posts.

We can basically separate them into two groups based on their goals. The functions that register some kind of callback; fn_InitRegistrationNotifyAndCallbackRoutines and fn_RegisterCreateProcessNotifyRoutine. And the function that inits basic information that the Driver requires in order to work; fn_InitDispatchMethodArray and fn_ObtainKernelFunctions.

손가락 점 위치로 내 운세 볼 수 있대요

나는 보니 엄지 쪽 중간에 점이 보인다 예전에는 손가락 네 번째 쪽에 있었는데, 지금은 흔적만 있을뿐 거의 보이지 않는다.

신체에 나는 점이란게 그 위치에 따라서 관상학적으로 그 사람의 운명이나 운세를 결정질 수 있다고 하는데 100% 맞는 것은 아니지만 재미로 보긴 좋은거 같아서 내친 김에 한 번 손가락 위치로 내 운세 나오면 성격을 테스트해보는 방법을 찾아 봤다.

1. 우선 첫째 손가락 엄지👍를 보면 다른 손가락과 다르게 마디가 한 개가 보인다. 그래서 단순하게 위와 아래로 구분 되는데 만약에 위쪽에 점이 있다면 리더십 있는 사람으로 융통성은 조금 떨어져 있어도 행동 만큼은 진취적이고 거침이 없다.

반대로 아래 쪽에 난 사람은 감정적이기 쉽고 사랑에 빠지게 쉬운 타입이라고 한다. 이번에 발견한 점도 이 위치였는데 감정 쪽은 확실한 것 같다 분명 위와 아래는 굉장히 정반대인 것을 알 수 있다.

또한 그보다 더 아래쪽에 났다면 더욱 사랑에 쉽게 빠지기 쉬운 타입이라고 하며, 위치는 손바닥에 가까운 쪽으로 표현하고 있다.

2. 다음으로 둘째손가락☝️에 위치로 진입 점 대한 이야기인데 여기부터 마지막 새끼손까지는 두 개씩 마디를 가지고 있다. 그래서 세개의 영역으로 나뉘게 된다.

차례대로 설명하면 둘째 손가락의 맨 윗부분에 있는 사람은 사람들 사이에서 소심하다는 평을 듣기 쉽고 예민하고 사소한 일에도 쉽게 집착을 한다. 또한 미신을 잘 믿는 타입이다.

중간 손가락 마디 안쪽에 점이 있는 사람은 야망이 많고 야심이 가득찬 편이다. 성공한사람 다수. 사업가의 기질이 있다. 기가 센 편.

가장 아래쪽에 점이 난 사람은 질투가 많으며 소유욕이 강하다. 자기만 알아보고 남을 잘 생각하지 않는 이기적인 타입이다. 히스테리적인 면도 보여주고 있다.

3. 이번에는 세 번째 손가락 중지에 대한 이야기인데 이 경우는 위쪽에 있는 점은 급한 성격을 가지고 있고 생각이 깊지 않고 신중한 성격은 절대 아니다. 그래서 덤벙거리거나 실수를 하기도 하고 잃어버리는 것도 잘 잃어버리는 성격을 가지고 있다.

중간 마디에 경우에는 맨 위와 완전히 정반대로 의심도 굉장히 많고 신중한 타임으로 돌다리부터 즐겨보는 타입이다. 그래서 실수나 실패는 적지만 굉장히 안정적이기 때문에 모험심이 부족하여 안전을 추구 하는 타입이라고 볼 수 있다. 사람을 잘 믿지 않고 물질적인 욕심이 많다.

마지막으로 아래 마디에서 점이 난 가운데 손가락은 이기적이고 짠돌이 성향이 강하다고 한다.

4. 약지 손가락에 대한 설명이다. 넷째손가락의 가장 윗마디에 난 점의 운세는 기분에 좌지우지되는 편이라서 기분파라는 이야기를 잘 듣는다.

가운데에 점이 났다면 돈💵의 운이 없는 사람이다. 그렇기 때문에 도박이나 투기는 절대 하면 안 된다.

아래쪽에 점이 보이는 사람은 미적 감각이 뛰어난 반면 애정결핍 있고 이기적인 스타일이다.

5. 마지막으로 새끼손가락🤙 손에 대한 이야기다. 가장 위쪽 마디에 점 위치 하고 있다면 생각에 굉장히 많고 인간관계 서툰 타입이다. 그리고 말을 많이 하기보다는 깊게 생각하는 편인 반면 말 재주가 좋지는 않다.

두 번째로 중간 마디에 새끼손가락 위에 점이 있는 사람이라면 그거와는 반대로 쿨한 성격이고 생각을 크게 두지 않는 스타일이다. 반면 돈에 대한 관념 없을 수 있지만 단순하고 명쾌한 성격으로 볼 수 있다.

아래 마디에 점이 있다면 돈을 헤프게 쓰는 사람으로 충동구매💳가 잦고 지름신💸 자주 오는 타입이라 한다.

지금까지 재미로 본 손가락 점에 따른 자신의 성향과 운세 정보 살펴보았는데, 모두 다 맞는 것도 아니고 재미로 볼 뿐이기 때문에 관상과 마찬가지로 참고만 하시고 만약 이 정보를 보고 좀 찝찝 하다면 병원가서 점을 빼면 될 것이다.

크롬 확장 프로그램 단축 키 지정 후 사용 하는 방법 정리

Chrome❨크롬❩ 브라우저를 사용하게 하는 부분중 하나가 확장 프로그램 일 것이라고 생각하게 됩니다.

필자 또한 많은 익스텐션 들을 활용 해오고 있습니다.

이 처럼 많이 사용 하는 확장 프로그램을 단축키로 실행 할수 있 습니다.

이 내용을 모르는 분들이 많을 것 이라고 생각을 합니다.

그렇기에 오늘은 확장 프로그램에 단축키❨Hotkey❩들을 별도 등록 한 후 사용하는 절차를 체크 해보도록 하겠습니다.

▌안내: 유사한 주제의 포스팅 입니다. 추가 정보가 궁금하시면 참고해 주시면되겠습니다.

1. 확장 프로그램 단축 키 지정 하는 방법

확장 프로그램에 단축키❨Hotkey❩들을 배정 한 후 사용하는 방법은 엄청 쉽습니다.

설정 메뉴에서 단축 키 지정만 하면 되는 것입니다.위치로 진입 점

설정 메뉴에 진입 하고 설정에서 단축키를 지정하는 절차를 정리 해 드리도록 하겠습니다 .

※ 사용된 프로그램 및 환경 : 크롬.

1.1. 크롬 확장 프로그램 관리메뉴

크롬 확장 프로그램 단축 키 관리 메뉴 위치로 진입 하는 순서는 아래의 내용 으로 확인 가능합니다.

ㅤ 주소창 에서 바로 가기 링크 를 이용 한 접속을 할수가 있습니다.

ㅤ 크롬 자체 메뉴 에서 접속을 할수가 있습니다.

이 처럼 두 가지 경로가 있으며 두 가지 모두 설명 드리겠습니다.

1.1.1. URL 주소 입력 을 통해서 진입 하는 방법

브라우저 주소창 메뉴 주소 입력 하게 될시 설정 하는 곳으로 빠르게 이동이 가능 합니다.

크롬 확장 프로그램 관리 메뉴

1 먼저 크롬 브라우저 를 실행을 해줍니다.

2 그 다음 브라우저 실행 한 다음 상단에 위치한 주소입력창 에서 아래 주소 를 입력 해줍니다.

1.1.2. 크롬 위치로 진입 점 설정 을 통해서 진입 하는 방법

크롬 브라우저 내 의 자체 설정에서 진입 하는 절차도 있 습니다.

주소창에서 입력 하는 방식이 편하 겠지만 메뉴를 통해서 접속 하는 절차도 같이 정리 해보도록 하겠습니다.

크롬 설정 메뉴 위치

1 먼저 크롬 브라우저 를 열고 우측 위에 자리 잡고 있는 점3개 [ ⁝ ] ⟮ 1 ⟯ 아이콘 을 클릭 해줍니다.

2 그 다음 컨텍스트 메뉴창에서 하단에 위치한 [설정] ⟮ 2 ⟯ 메뉴 를 클릭 해줍니다.

크롬 브라우저 확장 프로그램 메뉴

3 설정 메뉴 창에서 좌측 아래에 위치하고 있는 사이드 메뉴의 [확장 프로그램] 메뉴 를 클릭 해줍니다.

크롬 설정 확장 관련 메뉴

4 현재 활성화 된 창에서 좌측 위에 자리 잡고 있는 [Ⲷ] 햄버거 아이콘 을 클릭 해줍니다.

크롬 확장 프로그램 단축 키 메뉴

5 다시 좌측 위에 자리 잡고 있는 [단축키] 메뉴 를 선택을 합니다.

1.2. 확장 프로그램 메뉴에서 단축 키 를 지정 하는 방법 정리

확장 메뉴 진입 후 단축키를 지정 하는 순서를 안내합니다.

프로그램 단축 키 등록 방법

1 먼저 단축 키 지정 할 확장 프로그램 을 선택을 합니다.

2 그 다음 수정 아이콘 ⟮ 1 ⟯ 을 클릭 해줍니다.

3 해당 항목 좌측에 위치한 [단축 키 입력] ⟮ 2 ⟯ 창 이 활성화를 완료 했습니다.

4 해당 입력 하는 칸에 위치로 진입 점 자신이 원하는 단축 키 조합 을 입력 해줍니다.

Ctrl 또는 Alt 중 한 가지 를 포함 해야 합니다.

Ctrl 과 Alt 는 동시 에적용이 불가능 합니다.

크롬 확장 프로그램 중 다수의 단축키를 지원 하는 경우도 존재

일부 특정 확장 프로그램 들 은 2개 이상의 단축 키 를 지원 해주는 경우도 존재 합니다 .

2. 마치면서

이 처럼 크롬 브라우저에서 확장 프로그램 등에 자신이 원하는 단축 키 값을 등록해서 사용 하는 세부 방법에 관해 체크 해 보았습니다.

만약에 위치로 진입 점 사용 빈도가 높은 확장 프로그램이 있는 경우 단축키를 지정 해서 이용을 한다면 업무 효율이 향상 되어질 것입니다.

크로미움 브라우저에서는 동일하게 사용이 가능 하니 위 안내드린 부분이 필요한 분들은 위 내용을 참고 하여 한번 사용 을 해보시길 바래 봅니다.

위치로 진입 점

점이 많은 사람도 있고 적은 사람도 있죠. 또 특정 부위에만 점이 많이 나는 사람도 있습니다. 관상학적으로 점의 위치마다 각기 다른 의미를 지닌다고 하는데요. 해외사이트 웰오어다이가 우리 몸에 난 점의 의미를 소개했습니다. ★쇄골에 점이 난 경우 쇄골에 뚜렷하게 점이 있는 경우, 매우 헌신적인 배우자를 만날 가능성이 높다고 합니다. ★눈썹 밑에 점이 난 경우 이 위치에 점이 있는 사람은 인간관계에서 많은 위치로 진입 점 어려움을 겪는다는데요. 심지어 가족 중에도 반감을 드러내는 사람이 있을 정도라고 합니다. ★ 코에 점이 난 경우 코에 점이 있는 사람은 모든 사람들과 썸을 타는 것을 좋아하는데요. 종종 구설에 휘말린다고 합니다. 심지어는 동성과도 썸을 타려는 경향이 있다네요. ★코 한쪽에 점이 난 경우 나중에 서로 열렬히 사랑하는 배우자를 만날 것을 암시하는 점입니다. ★코끝에 점이 난 경우 반드시 제거하는 게 좋은 점인데요. 나중에 이혼을 하거나 연애가 잘 풀리지 않게 된다고 합니다. ★가슴에 점이 난 경우 인생 초년기에는 별로 운이 좋지 않을 수 있는데요. 나이가 들면서 하는 일이 술술 풀린답니다. ★귀 뒤에 점이 난 경우 이런 사람들은 안정적인 직장을 얻고, 행복한 결혼 생활을 할 수 있는 배우자를 만난다고 합니다. ★밑 입술에 점이 난 경우 재밌는 점인데요. 여러 사람과 바람을 피는 듯 보이지만 실제로는 도덕성이 매우 높은 사람입니다. 그저 로맨틱함을 좋아한답니다.


0 개 댓글

답장을 남겨주세요