• .Title|raw

    IOS11越狱状态下运行Root权限App


    首先, 使用THEOS创建 [2.] iphone/application_modern 项目. 剩下的内容分为以下几步. 1. main.m 中增加代码. //请注意这个是针对 coolstar的electra越狱(绝大大部分越狱用户使用的都是electra). 而非pwn20wnd的unc0ver [https://github.com/pwn20wndstuff/Undecimus] //原因请参考 https://github.com/coolstar/electra/blob/master/docs/getting-started.md #i

imxz | 发布于 2019-06-21 22:42:51 | 阅读量 453 |
发布于 2019-06-21 22:42:51 |
工作上可能需要用到 C++ 与 Lua 交互 . 所以就想找一个能联调的方法. 百度很久也是没有人给出想要的方法. 所以研究了一下,踩了一些坑,终于是找到了办法.
继续阅读
imxz | 发布于 2018-12-21 14:24:19 | 阅读量 1657 |
发布于 2018-12-21 14:24:19 |


开始学习IOS逆向踩了很多坑,

尤其是使用Theos编写Tweak插件的时候需要Hook一些地方,

查阅了很多资料,整理了以下几点

环境:

IOS11.3.1

MAC OS

THEOS

需要了解的

Logos语法 请自行百度

1.对地址函数的Hook

//引入一些必要的头文件
#import "substrate.h"
#import <Foundation/Foundation.h>
#import <dlfcn.h>
#import <mach-o/dyld.h>
//我要HOOK的地址是 静态下的 0x1000083B0 
//它有一个参数
//先声明一个旧的函数(名称随意)(这是个解密函数地址)
char* (*Old_1000083B0)(const char* base64);
//然后实现一个新的函数(名称随意)
//内容根据情况编写
char* New_1000083B0(const char* base64)
{
  NSString * str_q = [NSString stringWithUTF8String:base64];
  NSLog(@"IMXZ_Q:%@",str_q);
  char* ret = Old_1000083B0(base64);
  NSString * str_h = [NSString stringWithUTF8String:ret];
  NSLog(@"IMXZ_H:%@",str_h);
  return ret;
}

//Logos语法
%ctor {
    //获取动态时的函数地址
    unsigned long base_1000083B0 = _dyld_get_image_vmaddr_slide(0) + 0x1000083B0;
    //替换需要Hook的函数
    MSHookFunction(
    (void *)base_1000083B0,
    (void *)&New_1000083B0,
    (void **)&Old_1000083B0);

}


2.对C函数的Hook

#import "substrate.h"
#import <Foundation/Foundation.h>
#import <dlfcn.h>
#import <mach-o/dyld.h>

//
继续阅读
imxz | 发布于 2018-12-18 14:03:22 | 阅读量 1545 |
发布于 2018-12-18 14:03:22 |

首先,

使用THEOS创建 [2.] iphone/application_modern 项目.

剩下的内容分为以下几步.

1. main.m 中增加代码.

//请注意这个是针对 coolstar的electra越狱(绝大大部分越狱用户使用的都是electra). 而非pwn20wnd的unc0ver [https://github.com/pwn20wndstuff/Undecimus]
//原因请参考 https://github.com/coolstar/electra/blob/master/docs/getting-started.md

#import "XYAppDelegate.h"
#include <dlfcn.h>

void patch_setuidandplatformize()
{
	  void* handle = dlopen("/usr/lib/libjailbreak.dylib", 1);
	  if (handle)
		{
			dlerror();
			typedef void (*fix_setuid_prt_t)(pid_t pid);
			fix_setuid_prt_t ptr_setuid = (fix_setuid_prt_t)dlsym(handle, "jb_oneshot_fix_setuid_now");
			typedef void (*fix_entitle_prt_t)(pid_t pid, uint32_t what);
			fix_entitle_prt_t ptr_entitle = (fix_entitle_prt_t)dlsym(handle, "jb_oneshot_entitle_now");
			if(!dlerror())
			{
					ptr_setuid(getpid());
			}
			setuid(0);
			setgid(0);
			setuid(0);
			if(!dlerror())
			{
				ptr_entitle(getpid(),2LL);
			}
		}
}

int main(int argc, char *argv[]) {
	patch_setuidandplatformize();
	@autoreleasepool {
继续阅读