chiqian2971 2020-02-18 18:20 采纳率: 25%
浏览 1170

ios逆向 如何实现一个app启动弹窗 注入呢

请问 启动弹窗的dylib或者是freamwork 如何Xcode中如何创建,编写代码以及如何生成dylib 或者freamwork动态库呢?

我在一个帖子上按照步骤进行操作。他是用theos方式进行的。
但是我最终安装到手机上是闪退的。
该帖子的tweak.xm 是微信弹窗的。 我如何修改才能实现通用 app 启动弹窗呢?
附上tweak.xm代码


@interface MMUIViewController: UIViewController
- (void)helloWorld;
@end

%hook MMUIViewController

- (void)viewDidAppear:(_Bool)arg1 {
    %orig;
    [self helloWorld];
}

%new
- (void)helloWorld {
    UIAlertController *alertController =({
        UIAlertController *al = [UIAlertController alertControllerWithTitle:@"标题" message:@"这是一些信息" preferredStyle:UIAlertControllerStyleAlert];
        [al addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:nil]];

        al;

    });

    [self presentViewController:alertController animated:YES completion:nil];
}
%end

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-25 20:51
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要使用Objective-C在iOS应用程序中实现启动弹窗(通常是通过通知中心或系统级通知),你可以遵循以下步骤:

    步骤 1:设置通知中心触发器

    首先,你需要为你的应用配置一个通知中心触发器。这通常涉及到创建一个新的通知中心服务,并将其与你的应用程序关联起来。以下是基本的步骤:

    A. 在Xcode中创建通知中心服务

    1. 打开你的Xcode项目。
    2. 点击顶部菜单栏中的“文件” > “新项目”。
    3. 选择“通知中心服务”并点击“下一步”。
    4. 给你的通知中心服务起个名字(例如,“MyAppNotificationCenterService”)并点击“完成”。

    B. 将通知中心服务添加到应用程序

    1. 进入你的Xcode项目目录,找到“Services”文件夹。
    2. 创建一个新的文件,命名为“services.plist”,然后将以下内容粘贴进去:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
        <dict>
            <key>CFBundleIdentifier</key>
            <string>YourApplicationID</string>
            <key>CFBundleName</key>
            <string>YourAppName</string>
            <key>CFBundlePackageType</key>
            <string>iPhoneDistribution</string>
            <key>CFBundleDevelopmentRegion</key>
            <string>zh-CN</string>
            <key>CFBundleVersion</key>
            <string>1.0</string>
            <key>CFBundleIconFile</key>
            <string>icon.png</string>
            <key>CFBundleExecutable</key>
            <string>yourapplicationname</string>
            <key>CFBundleSignature</key>
            <string>com.yourcompany.YourAppName</string>
            <key>NSPrincipalClass</key>
            <string>UIPrincipalClass</string>
        </dict>
    </plist>
    

    确保替换上述内容以匹配你的实际需求。

    C. 将通知中心服务添加到应用程序

    1. 在你的Xcode项目的“Info.plist”文件中,添加以下键值对:
    <key>NSLocalDefaultsKeychainIdentifier</key>
    <string>YOUR_APP_KEYCHAIN_IDENTIFIER</string>
    

    这个值应与你之前创建的通知中心服务的名称相匹配。

    D. 设置通知中心服务

    1. 在Xcode项目中打开“Services”文件夹,找到名为“YourApplicationID”的通知中心服务。
    2. 确保已启用“允许从通知中心接收消息”。如果未启用,请点击“编辑”按钮,然后勾选“允许从通知中心接收消息”选项。

    步骤 2:编写通知中心通知

    现在,你可以开始编写通知中心通知的内容和样式。以下是一个简单的示例:

    #import <Foundation/Foundation.h>
    
    @interface YourViewController : UIViewController
    {
        @private
        UIActivityIndicatorView *activityIndicator;
        NSString *messageText;
    }
    
    @property (nonatomic, strong) IBOutlet UILabel *messageLabel;
    @end
    
    @implementation YourViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
        self.messageText = @"Hello, World!";
        [self.view addSubview:self.activityIndicator];
        [self.activityIndicator startAnimating];
    }
    
    - (IBAction)dismissButtonTapped:(id)sender
    {
        // Hide the activity indicator and dismiss the view controller.
        [self.activityIndicator stopAnimating];
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    
    @end
    

    步骤 3:测试通知中心通知

    最后一步是测试通知中心通知是否正确显示。在Xcode的“TestFlight”窗口中运行你的应用程序,并检查是否有任何通知中心通知被发送。如果你的应用程序没有错误地发送通知,那么你应该能看到一条包含你应用名称的消息。

    注意事项

    • 通知中心通知必须包含一个包含titlebodysoundAVOSMessage对象。注意,sound参数可以省略,因为默认情况下所有通知都会播放铃声。
    • 通知中心通知可以在特定的时间点发送。例如,你可以使用AVOSMessageScheduledNotification来在指定时间发送通知。
    • 通知中心通知不能直接调用,而是需要通过通知中心框架函数来处理。这些函数包括但不限于AVOSMessageComposeDelegateAVOSMessageDidReceiveResponseHandler等。

    以上就是在iOS中使用Objective-C实现启动弹窗的基本步骤。根据你的具体需求,可能还需要考虑其他细节,比如如何防止通知冲突,如何优化通知样式等。

    评论

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格