http://az4n6.blogspot.kr/2013/02/finding-and-reverse-engineering-deleted_1865.html

Posted by binish

욕심쟁이모드로 너무 많은 꿈을 적었다ㅎㅎ

죽도 밥도 안될 것 같은 2013년이 될 순 없지!


꿈을 보다 간소화해서,

2013년도에는 목표했던 모든 꿈을 다 이뤄보자.


카테고리별로 2~3개씩 정해서 우선순위를 정한다음...


ㅇ취미생활

.피아노 배우기

.연필스케치


ㅇ자기계발

.도서12권

.시큐리티플러스 번역팀 활동


ㅇ재테크

.올해 현금 3천


ㅇ경험쌓기

.아이비리그 대학 탐방


ㅇ건강하기

.복근완성

.술자리최소화하기


ㅇ봉사활동

.월드비전

.초한량가이즈 봉사활동



Posted by binish

- Native 영역의 memory leak 검사가 미비함. 그래서 .so에서 키우면 프로세스가 막 재실행됨.


- Dynamic linking : preLinking을 이용해서 매핑 테이블을 미리 만들어주고 해당 주소영역을 사용하도록 했었으나 보안상의 이유로 ASLR 기법을 이용하기 위해 현재는 disable 상태임.(ICS전까지)

- Dynamic Loading


- COW(Copy On Write) : 읽을 당시에는 parent 값을 reference 하다가 실제 write가 수행될 때 copy를 수행함. 아 이거 오랜만에 듣네 ㅎㅎ


- Fork and Exec : 안드로이드에서 프로세스를 생성하는 방법


- TLS(Thread Local Storage) : global한 쓰레드 영역을 정하는거. openGL, View 등을 보면 new 키워드로 인스턴스를 안만들고 바로 사용할 수 있는데 그게 바로 TLS. 즉 다른 쓰레드와 메모리 공유를 원치않을 때 사용됨


- System V IPC(Semaphore) : mutex는 1개만 critical section에 갈 수 있지만 세마포어는 여러개. 이거는 System V에서 기존 pipe와 fifo만 제공하던 IPC에 추가된 기능. Shared memory도..


- 버클리 IPC - anonymous mmap : mmap은 파일을 메모리로 매핑시켜 포인터를 이용해서 조작할 수 있는 방법인데 버클리는 메모리를 파일로 매핑시켰고, fork 시킴. 그래서 소스 프로세스에서 write하면 존재하지 않는 파일(-1)로 쓰이고 fork된 프로세스에서 read하면 IPC가 됨, 우왕짱


- Core vs CPU?


* Understanding the linux virtual memory manager - MEL GORMAN


- Slab allocator :  internal fragmentation.

- Buddy system : page가 연속적으로 할당되도록 유지시켜주는 알고리즘(?). external fragmentation.


- TLB : virtual address가 physical address로 mapping할 때 생성되는 lookup cache table :-) made by OS


- Out of memory management : 예전부터 CPU를 잡고 있던 놈보단 최근에 CPU를 많이 잡은 놈을 찾아서 죽이는 알고리즘


- ashmem : 불필요한 메모리 낭비를 줄이기 위해 사이즈를 줄이는거


- 리눅스의 OOM 킬러는 /proc/<pid>/oom_adj가 높은것중 oom_score가 높은애를 죽임


- LowMemoryKiller는 memfree가 32M일 경우 oom_adj가 15인 프로세스 다 죽임,, 28M는 7,,, 이런식으로 싹 다 죽이는 방법. OOM 킬러는 하나의 프로세스만 죽임


- prelink & ASLR : 고정적인 주소의 symbol table로 인한 해킹 피해를 방지하기 위해 prelink를 disable 시키고 ASLR을 적용시킴. 그리고 preload 방식을 채택함. 현재의 안드로이드 :)


- 안드로이드에서 기본적으로 Handle을 지니고 있지? 핸들을 이용해서 다른 프로세스의 오브젝트 주소를 참조할 때 퍼미션 권한이 수행되겠네? 이거 bypassing은?


- 0x1234 프로세스의 object의 주소를 넘기면 상대방 프로세스 0x2345 에는 handle이 생기고, handle은 0x1234:object의 주소로 표기됨


- call by value가 바로 intent.


- Service : background로 동작되는 프로세스. 시간 소요가 큰 작업이나 항시 동작해야 하는 작업을 서비스로.


- class library를 참조하기 위해 해쉬테이블을 생성한다라..


- Manifest 파일에서,

<intent-filter>

  <action android:name="android.intent.action.MAIN" /> 은 void main(void)를 의미함. 즉 바로 런쳐로 뛰우기 위해 파라미터를 받지도 않고 리턴도 하지 않음을 의미함.


- ActivityManagerService에서는 oom_adjust 값을 관리하는데 만약 Activity에서 생성한 Thread가 있을땐 0이고 Service가 생성한 Thread가 있을땐 7인데,, 이 Service의 핸들을 Activity가 갖고있으면 둘다 0이 된다.


-  2개의 apk 파일을 하나의 프로세스로 띄울 수 있음. 같은 인증서 사http://binishack3r.tistory.com/admin/entry/post/?id=252용, Manifest에서 같은 프로세스로 지정하면 됨. 50M까지 한계일 때 파일을 쪼개서 하나의 프로세스로 진행시켜야 하는 경우에 필요함


- setContentView(R.layout.main)은 XML로 View object를 압축해놨다가 풀어주는 일을 하기 때문에 implation이라고 함(압축해제. deflate는 압축. pkzip 생각하면 되넹)


- Runnable을 이용하면 상대방 T가 호출할 수 있다라. 그러면 CreateRemoteThread를 이용한 DLL Injection과 유사하게 Run 메소드를 재정의하고(악성내용)하면 감염가능할려나?

- SendMessage와 PostMessage 차이점 구별할 것


- SDK 폴더에 하이라키뷰어.bat 구조도식화해줌.


-







'세상을 하나씩 만들다. > 메모 한 장' 카테고리의 다른 글

kandroid 교육정리  (0) 2013.02.18
이제부터라도..  (0) 2013.01.27
유용한 사이트 모음 2013판  (1) 2013.01.21
급여통장 및 CMA통장 비교  (0) 2013.01.10
It's time to say goodbye this year now  (0) 2012.12.27
대전 데이트 코스 정리  (5) 2012.12.27
Posted by binish

블로그 이미지
박보영팬 컴쟁이의 잡다한 블로그
binish
Yesterday0
Today0
Total134,811

달력

 « |  » 2019.7
  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 29 30 31      

최근에 받은 트랙백

글 보관함