相关疑难解决方法(0)

iPhone/iPad应用程序代码混淆 - 可能吗?值得?

我已经研究了很多,无论是在SO还是google-ing到处,但我似乎找不到关于用Objective-C编写的iPhone/iPad应用程序的代码混淆的直接答案.

我的问题是这些:

  1. 有办法吗?如果是这样,怎么样?
  2. 这值得么?
  3. 当应用程序提交给他们时,Apple是允许它还是有问题?

iphone obfuscation store ipad

66
推荐指数
3
解决办法
4万
查看次数

如何加密或混淆客观c代码?

可能重复:
iPhone/iPad应用程序代码混淆 - 可能吗?值得?

我花了很多时间在这上面,我无法找到一个完美的答案.这就是我决定在这里提出问题的原因.我有一个iPhone应用程序,并希望加密代码,以防止类转储或otool实用程序.(用于从可执行文件中转储标头的工具).我想知道有没有办法加密源代码或混淆源代码?

obfuscation objective-c ios

26
推荐指数
2
解决办法
2万
查看次数

如何避免iOS二进制文件中的符号和源路径?

当我编译我的iOS应用程序的发布版本(基于标准的Apple提供的iOS应用程序模板)时,查看生成的可执行二进制文件,我看到各种符号甚至本地cpp源文件和标题路径.我真的很难过为什么会这样(我没有启用RTTI*).特别是源文件路径让我感到不舒服在全球范围内发送这个应用程序(为什么每个人都能看到我的开发机器的目录布局?).

这是两个(随机选择,主持)摘录:

TS/../ACTORS/CActorCanvasCharPart.cpplastMeshcapVerticesOFF BOUNDSupload VERTICES: %d 20CActorCanvasCharPartgrassscrub/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame2_grass.cppbaseShadowmowerstartmowerloopmowermowerCharcutGrassChargrassStuffgrassParticles/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame2_grass.h17CStateGame2_grasssinwriteStroke/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame2_flowers.hflowerBedsandTrailclickstart3inplace2sandDrag/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame

以下是自定义类型和结构的许多符号:

CAssetMgr="_vptr$CMgrBase"^^?"pMain"^{CMain}"inited"B"curveCount"S"curveSpecs"^{CCurveSpec}"gameSpecs"[23{CGameStateSpec="header"{SpecDiskHeader="type"i"version"S}"gameID"C"backgroundColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}"clickPointColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}"clickPointIconColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}"hintColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}}]"currentFont"^{CCharset}"userCharParts"^^{CCharPart}"words"{CDataSet<CName4,CCharArray>="_vptr$CObjectBase"^^?"pMain"^{CMain}"count"i"data"*"dataSize"l}"sets"{CDataSet<CName16,CCharArray>="_vptr$CObjectBase"^^?"pMain"^{CMain}"count"i"data"*"dataSize"l

这可以避免,怎么样?

*更新:我刚发现RTTI默认开启.所以我清理了目标,禁用了RTTI(GCC_ENABLE_CPP_RTTI = NO)并重新编译.我仍然在二进制文件中看到很多符号和源路径.

更新2:我从应用程序商店检查了一些其他应用程序,其中许多也显示了他们的源文件路径.非常可怕,如果你问我:

Joined Up Lite
/Users/lloydy/Documents/Development/iPhone/ABC Joined Up/main.m
/Users/lloydy/Documents/Development/iPhone/ABC Joined Up/Classes/SettingsView.m

Crayon Physics
/Users/smproot/Desktop/unzip/CrayonPhysics/v104/Classes/crayon/src/ceng/gameutils/killspriteslowly/killspriteslowly.cpp
/Users/smproot/Desktop/unzip/CrayonPhysics/v104/Classes/crayon/src/ceng/tasks/task/sdl/mixer/ctaskaudiosdlmixer.cpp

Wall Times
/Users/fred/_WORK/ZDNDRP/WallTimes/main.m
/Users/fred/_WORK/ZDNDRP/WallTimes/Classes/SystemCategories.m

Jumbo Calculator
/Users/Christopher/Documents/Development/JumboCalculator 1.0.3/main.m
/Users/Christopher/Documents/Development/JumboCalculator 1.0.3/Classes/CalculatorFaceViewController.m

c++ xcode symbols ios

8
推荐指数
3
解决办法
2613
查看次数

如何隐藏objective-c库中的对象

我正在尝试创建一个用Objective-C编写的静态库.我想隐藏这个库的消费者的所有实现细节.在此示例中,"OneThing"对象使用库内部的其他功能,包括"SecretThing",它可能被库中的许多内容使用(并且不能隐藏在OneThing内部).但是我不希望库的用户看到OneThing使用SecretThing,或者甚至存在SecretThing,即使他们在.a文件中查找.

@interface OneThing
+ (void) do;
@end
@interface SecretThing
+ (void) undo;
@end
@implementation OneThing
+ (void) do
{
    [SecretThing undo];
}
@end
@implementation SecretThing
+ (void) undo { }
@end
Run Code Online (Sandbox Code Playgroud)

如果我们编译它,并检查符号表:

% cc -c onething.m
% nm onething.o | grep Thing
0000000000000000 t +[OneThing do]
00000000000002f8 s +[OneThing do].eh
0000000000000040 t +[SecretThing undo]
0000000000000320 s +[SecretThing undo].eh
0000000000000078 S _OBJC_CLASS_$_OneThing
0000000000000050 S _OBJC_CLASS_$_SecretThing
00000000000000a0 S _OBJC_METACLASS_$_OneThing
00000000000000c8 S _OBJC_METACLASS_$_SecretThing
0000000000000128 s l_OBJC_$_CLASS_METHODS_OneThing
00000000000001d8 s l_OBJC_$_CLASS_METHODS_SecretThing
0000000000000190 s l_OBJC_CLASS_RO_$_OneThing
0000000000000240 …
Run Code Online (Sandbox Code Playgroud)

objective-c static-libraries

5
推荐指数
1
解决办法
2242
查看次数

标签 统计

ios ×2

obfuscation ×2

objective-c ×2

c++ ×1

ipad ×1

iphone ×1

static-libraries ×1

store ×1

symbols ×1

xcode ×1