iOS程序 防止动态调试和代码注入

http://ruixiazun.blog.163.com/blog/static/9068791820141173588694/

iPhone真实的运行环境是没有sys/ptrace.h抛出。ptrace 方法没有被抛出, 可以通过dlopen拿到它。
dlopen: 当path 参数为0是,他会自动查找 $LD_LIBRARY_PATH,$DYLD_LIBRARY_PATH, $DYLD_FALLBACK_LIBRARY_PATH 和 当前工作目录中的动态链接库.

#import <dlfcn.h>  
#import <sys/types.h>  
  
typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);  
#if !defined(PT_DENY_ATTACH)  
#define PT_DENY_ATTACH 31  
#endif  // !defined(PT_DENY_ATTACH)  
  
void disable_gdb() {  
    void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);  
    ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");  
    ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);  
    dlclose(handle);  
}  
  
int main(int argc, charchar *argv[])  
{  
#ifndef DEBUG  
    disable_gdb();  
#endif  
    @autoreleasepool {  
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class]));  
    }  
}

时间: 2024-08-27 14:48:57

iOS程序 防止动态调试和代码注入的相关文章

android动态调试samli代码

转载自看雪http://bbs.pediy.com/showthread.php?t=189610,非常感谢原作者分享! 初涉移动端,请各位前辈多多指教! 本文参考http://www.kaifazhe.com/android_school/380973.html在此,对作者表示感谢! 跟踪apk一般的做法是在反编译的smali代码中插入log输出,然后重新编译运行看输出日志,这种方法费时费力,如果能够动态调试就最好了.下面就给大家介绍apk+eclipse来调试smali. 前期准备:ecli

【iOS开发-32】iOS程序真机调试需要购买调试证书怎么办?

一.情况 我们在开发iOS程序的时候,一般都是在模拟器上运行查看效果的.但是,当开完完成,需要在真机上调试怎么办? 二.官方解决办法 苹果有为个人和企业开发者提供调试证书和发布证书,个人版99美元吧.购买后,发两个证书给你,你用调试证书可以在真机上进行调试. 三.万能的淘宝 无意中发现在淘宝上有出售调试证书的,价格在10元左右. 注意:该证书仅仅能用来进行调试,不能进行发布. 但,一般开发者开发程序都是为了发布,最终还是要付99美元,所以一般人都是直接向苹果购买两个证书.估计这也是为什么淘宝上得

【iOS开发-32】iOS程序真机调试须要购买调试证书怎么办?

一.情况 我们在开发iOS程序的时候,一般都是在模拟器上执行查看效果的. 可是,当开完完毕.须要在真机上调试怎么办? 二.官方解决的方法 苹果有为个人和企业开发人员提供调试证书和公布证书.个人版99美元吧. 购买后,发两个证书给你,你用调试证书能够在真机上进行调试. 三.万能的淘宝 无意中发如今淘宝上有出售调试证书的,价格在10元左右. 注意:该证书只能用来进行调试.不能进行公布. 但,一般开发人员开发程序都是为了公布.终于还是要付99美元,所以一般人都是直接向苹果购买两个证书. 预计这也是为什

Android逆向 Android Studio动态调试smali代码

工具: Android Studio版本: 3.0.1 smalidea插件: https://github.com/JesusFreke/smali/wiki/smalidea. 反编译工具:本节先用Android Killer,后面介绍apktool. 一 配置插件 下载smalidea插件,然后打卡Android Studio,点击File->Setting->Plugins->Install plugin from disk,选择下载的smalidea.zip文件,安装成功后显示

动态调试smali代码

Android Killer对应用进行反编译为smali代码,看看Manifest文件中application标签里面是否有android:debuggable="true",没有的话自己添加,在工程管理器中找到smali文件夹,右键打开路径然后将smali文件夹复制出来并重命名为src 为Android Studio安装smaliidea插件 启动android device monitor,AS 3.0+已经不支持内部直接启动ADM了,路径切换至${PATH}\Sdk\tools然

AndroidStudio安装ideasmali插件,动态调试smali代码

1.打开AndroidStudio 2. 安装ideasmali插件,File->Settings->Plugins->install plugin from disk,下载安装ideasmali插件. ideasmali下载链接:链接:https://pan.baidu.com/s/1htl26qS 密码:0pre 3. 打开Android Device Monitor Tools->android 原文地址:https://www.cnblogs.com/hyh123/p/12

针对 Linux 环境下 gdb 动态调试获取的局部变量地址与直接运行程序时不一致问题的解决方案

基础的缓冲区溢出实践通常需要确定运行状态下程序中的某些局部变量的地址,如需要确定输入缓冲区的起始地址从而获得注入缓冲区中的机器指令的起始地址等.在 Linux 环境下,可通过 gdb 对程序进行动态调试,从而获得程序运行状态下的信息( 关闭 ALSR 机制 ),基础的 gdb 操作可参见笔者的文章Linux下编辑.编译.调试命令总结--gcc和gdb描述.使用 gdb 可以方便的获取程序动态运行状态下的信息,但通过 gdb 动态调试获取的诸如缓冲区的起始地址等信息可能与程序实际运行时的信息并不相

利用IDA6.6进行apk dex代码动态调试

网上公开IDA6.6已经有一段时间,这个版本有个好处就是可以动态调试java代码.正好现在需要动态调试,所以顺便练习一下. 根据android的官方文档,如果要调试一个apk里面的dex代码,必须满足以下两个条件中的任何一个: 1.apk中的AndroidManifest.xml文件中的Application标签包含属性android:debuggable=”true” 2./default.prop中ro.debuggable的值为1 由于一般软件发布时都会把android:debuggabl

Android逆向之动态调试so库JNI_Onload函数-----基于IDA实现

之前看过吾爱破解论坛一个关于Android'逆向动态调试的经验总结帖,那个帖子写的很好,对Android的脱壳和破解很有帮助,之前我们老师在上课的时候也讲过集中调试的方法,但是现在不太实用.对吾爱破解论坛的该贴,我也是看了很多遍,自己也查了不少资料,但是自己动手的时候总觉比较繁琐,并且很多细节的地方没有注意到,按照那个帖子尝试了几遍但是却出现了错误(后面会提到),今天周末重新拾起来试了试,终于把遇到的问题给解决了,顺便做个记录以免忘记了,其中的一些细节我也不是太明白,忘知道的人给指出. 第一步.