2017-04-20 14 views
1

iOS 응용 프로그램을 장치에서 실행하면 많은 런타임 라이브러리에 연결됩니다. 다른 디버거에서 iOS 앱을 보호하여 애플리케이션 프로세스에 대한 공격을 막을 수있는 방법은 무엇입니까? GDB를 사용하는 것처럼 우리는 애플리케이션 프로세스를 해킹하고 런타임을 조작 할 수 있습니다. 설정이나 코드를 사용하는 것을 멈출 수있는 방법이 있습니까? 다른 런타임 라이브러리가 프로세스에 연결되어 있는지 확인하는 방법이 있습니까? 그런 시나리오에서 우리는 꽤 많은 앱을 사용할 수 있습니까?런타임 연결에서 iOS 앱 보호

+1

대답은 깊은 의미가 없습니다. 어떻게 든 그것을 할 수 있다고해도, 누군가가 디스크에있는 바이너리의 관련 부분을 벗겨 내거나 대체하여 누군가가 가지고있는 대책을 없앨 수 있습니다. iOS 운영체제에 대한 어느 정도의 신뢰가 있어야합니다. '벽으로 막힌 정원'생태계의 전체 기반입니다. 악성 사용자가 기기에 대한 루트 액세스 권한을 가지고있는 경우 모든 베팅이 해제되어 더 이상 제어 할 수 없습니다. –

+0

답장을 보내 주셔서 감사합니다. @ RichardJ.RossIII. 최소 다른 바이너리에 의해 사직 된 바이너리를 보호 할 수있는 방법이 있습니까? –

+0

@DebasishChowdhury 프로그램은 바이트 배열입니다. 수정 된 바이트 배열을 보호 할 수 없습니다. – Siguza

답변

0

Info.plist 파일 및 Appname의 수정 날짜를 확인하고 패키지 수정 날짜와 비교할 수 있습니다. 일치하지 않는 항목이 발견되면 앱 바이너리가 수정되었다고 결론 내릴 수 있습니다.

//Check date of modifications in files (if different - app cracked) 
NSString* path = [NSString stringWithFormat:@"%@/Info.plist", bundlePath]; 
NSString* path2 = [NSString stringWithFormat:@"%@/AppName", bundlePath]; 
NSDate* infoModifiedDate = [[manager attributesOfFileSystemForPath:path error:nil] fileModificationDate]; 
NSDate* infoModifiedDate2 = [[manager attributesOfFileSystemForPath:path2 error:nil] fileModificationDate]; 
NSDate* pkgInfoModifiedDate = [[manager attributesOfFileSystemForPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"PkgInfo"] error:nil] fileModificationDate]; 
if([infoModifiedDate timeIntervalSinceReferenceDate] > [pkgInfoModifiedDate timeIntervalSinceReferenceDate]) { 
    return YES; 
} 
if([infoModifiedDate2 timeIntervalSinceReferenceDate] > [pkgInfoModifiedDate timeIntervalSinceReferenceDate]) { 
    return YES; 
} 
+0

앱 바이너리가 수정 된 경우 해당 코드가 더 이상 존재하지 않을 수 있습니다. – Siguza