자바나 C#처럼 리플렉션을 제공하는 경우 클래스파일에 선언된 메소드와 필드를 쉽게 뽑아낼 수 있기 때문에 이걸 다차원 벡터 방식으로 표현하면 일종의 지문처럼 작동하게 됨. 웬만한 프로그램은 이것만 가지고도 쉽게 잡아낼 수가 있음. 여기서 더 나아가서 자바같은 경우 클래스파일을 까보면 메소드 안에 opCode 가 들어있는데 이것도 까보면 클래스간의 의존관계까지 나옴. 의존관계를 tree로 그리면 이건 뭐 빼도박도 못함.
아놔콘다(anwaconda)2012-03-12 00:09
당연하지 오픈소스코드들이랑 유사도 체크해갖고 라이센스 문제될 소지 있는지 검사하는 툴도있음
sloth_(slothchord)2012-03-12 00:37
나 그거 만든적 있음요. GCC를 예로 들면 GIMPLE같은 단순화된 중간코드로 전부 변경이 됨. 요걸 키워드만 추출해서 BLAST에서 먹히는 단백질 코드로 변경해서 계보도 만들어서 비교했었음.-_-)a
아 시바브브아아어어으아 구글링하면 뜸 [i]
변수 이름 바꾸는 정도야 뭐 죽여주십쇼 정도
네
소스통째로 구글링해서 나오나 안나오나 뭐 그런느낌아닐까?
통째 까진 아니여도 대충 프로그램이 알아서 뭉텅뭉텅 잘라서 검색해보는거지
한문장한문장씩 잘라서 구글링해보는거일듯
그거 누가 만들었다더만 ㅋ [핡]
모대학에 비교하는거 있긴함. 그리고 변수만 바꾸는 경우는 컴파일 결과물로 비교하면 됨.
자바나 C#처럼 리플렉션을 제공하는 경우 클래스파일에 선언된 메소드와 필드를 쉽게 뽑아낼 수 있기 때문에 이걸 다차원 벡터 방식으로 표현하면 일종의 지문처럼 작동하게 됨. 웬만한 프로그램은 이것만 가지고도 쉽게 잡아낼 수가 있음. 여기서 더 나아가서 자바같은 경우 클래스파일을 까보면 메소드 안에 opCode 가 들어있는데 이것도 까보면 클래스간의 의존관계까지 나옴. 의존관계를 tree로 그리면 이건 뭐 빼도박도 못함.
당연하지 오픈소스코드들이랑 유사도 체크해갖고 라이센스 문제될 소지 있는지 검사하는 툴도있음
나 그거 만든적 있음요. GCC를 예로 들면 GIMPLE같은 단순화된 중간코드로 전부 변경이 됨. 요걸 키워드만 추출해서 BLAST에서 먹히는 단백질 코드로 변경해서 계보도 만들어서 비교했었음.-_-)a
sloth_횽이 말한건 블랙덕 소프트의 프로텍스인것같은데 초비쌈..ㅎㅎㅎ 갸들은 듣기로 코드지문(?)같은걸 이용한다는데 어째튼 디비 방대함 www.koders.com이 갸들꺼임
있음. 교수들은 그거 씀. ㅋㅋ 코드(변수명)를 보는게 아니라 프로그램 호출과 각종 구조를 분석해서 비교함. 변수이름 바꿔봤자 100% 동일 코드로 나옴
우리학교 교수가 만든 특허작 있던데 에스파 라고. 이것때문에 에프뜨고 플밍과제는 안보여주고 안베낌.