본문 바로가기

[Study & Job]

크롤러의 설계 걍 설계전에 그림을 그리는 버릇이 있어서 그리다가 백업용으로 올려둔다.
python hash값 구하기 #!/usr/bin/env python import hashlib def string_to_md5(content): """Calculate the md5 hash of a string. This 'string' can be the binary content of a file too.""" md5 = hashlib.md5() md5.update(content) return md5.hexdigest() def file_to_md5(filename): """Calculate the md5 hash of a file. Memory-friendly solution, it reads the file piece by piece. http://stackoverflow.com/questions/1131220/get-md..
python 앞뒤 공백 제거 strip()함수는 문자열의 앞뒤 공백 뿐만 아니라 '\n'같은 줄바꿈 문자도 뗴어준다.
python에서 리스트내에 중복 값 제거 set_test = set()set_test.add(3)set_test.add(2)set_test.add(3)print(set_test) --> set([2,3]) set 형은 추가되는 요소들이 중복되지 않도록 자동으로 걸러준다. 자동으로 정렬까지 해주는 줄 알았는데 막상 결과를 보면 정렬이 안 되어 있는 경우가 종종 있으므로 정렬이 필요하면 안전하게 sorted를 쓸 것. 그외 다른 버전[code python]#!/usr/bin/env pythonlists=['Admin','Admin','DB','DB','a','b','c','d','Admin']aa=[] for elem in lists: if (elem in aa) == 0: aa.append(elem)print aa[/code]
OEP를 찾아내자 보통 OEP를 찾는 방법은 여러가지가 있습니다. 단순히 코드를 하나하나 분석해가며 진행하는 방법에서부터 Stack을 이용한 방법, VirtualAlloc()를 이용하는 방법, LoadLibrary()를 이용하는 방법, Exception Handler를 이용하는 방법 등 요령껏 Packer마다의 다양한 방법이 이용될 수 있습니다. 1. Stack Based보통 Anti-Reversing 기법이 없는 일반적인 Packer들은 언팩루틴이 끝나고 OEP로 진입하기 전에 반드시 어떠한 현태로든지 스택에 저장된 레지스터를 복구하게 됩니다. 즉, Unpacking이 끝나고 나면 스택에 저장되어 있던 레지스터들을 복구하여 본래 프로그램에 재사용한다는 것입니다. 그럼 스택에서 레지스터들이 POP되는 순간을 잡아내면, O..
패킹 여부 확인법 1. Section의 Naming을 확인하자!Section Table Viewer로 섹션 정보 확인해보면, Yoda Cryrtor는 yC로 UPX는 UPX0, UPX1로 특별한 섹션이 추가됨을 알수 있다. 2. Code Cave여부를 확인해 보장!!코드를 JMP와 NOP으로 조작해둠. 3. Import Table이 눈에 뛰게 작은 경우패킹 되기 전에 Imports를 띄워서 보게되면 로드된 함수들이 엄청 많은데 비해패킹이 되어있을 경우에는 LoadLibraryA()와 GetProcAddress()함수밖에 없다.즉, LoadLibraryA()함수로 DLL파일을 로드하고, GetProcAddress()로 DLL에서 익스포트 된 함수의 주소를 얻어오는 기본적인 작업만을 하게 된다. 4. String Table에..
변수명명법 * 출처 : 포씨소프트(http://www.4csoft.com)사내 게시판 개발자마다 전부 다른 스타일인 부분인데 정리가 되어 있는게 있어서 퍼옵니다. 뭐 소프트웨어공학 같은곳에서 나오는 이야기지만 참고하시면 도움이 될것 같습니다. ========================================================== naming rule 1. PascalCasing (파스칼 케이싱) ■ 클래스, 열거형, 이벤트, 메서드 등의 이름을 만들 때에는 대문자로 시작하는 변수명을 사용한다.■ 복합어일 경우 중간에 시작하는 새로운 단어는 대문자로 적는다.예) UtilityBox, MainFrame 2. CamelCasing (카멜 케이싱)■ 메서드의 매개변수의 이름에 적용되는데 첫번째 문자는 소..
지금 현재 쓰고 있는 비쥬얼 스튜디어 에딧 스타일이다.. http://studiostyl.es/schemes/son-of-obsidian-with-resharper 개인적으로 마음에 드는 스타일이다!