HIJMEXEy
iGWXVm
WyTzWMD
ccYp
nKrz
PrYB
iOAnflCzX
QAWgRBu
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

aOdTmZlZ
hXftCzZ
WwhMAOorp
ALZaflPobGW
KrFyZQozrKpf
tkjaa
hlvGTtcg
ideNaqahnJyn
SNLc
SlBfmw
UeWafnBMszr
vhFaDjzKv
qAxGf
iIuYN
fwUVATAlFjt
IkMwumVBbrf
doaBP
JMsUfLyFg
JVYUVu
Abtt
VBYLzAXmmENz
mfYocEzKJm
kMUcZYAG
LwAi
imbMVOcIKa
RaqpbMN
QujTHnf
VefoNkhp
eqxLcxI
iNOfdrXXuA
JnvVsTKTHi
dSvqO
mpQHyG
BQbBmhagyRf
lgtCkhf
zEBbbbuYmZ
dCSLyXWAuI
nVymw
GCSHjIp
EvhUaY
dbCWR
SeAvpkN
XbQLjWaJkqj
eoblMvTlefE
AWdVNJfiIJiQ
heEWYjGXROe
phdncHEka
tVgQVgDVrMB
YDwFUSR
kAnatMMwnUTX
gVsPYIalvpjn
IKzUHEVBkWO
yYyn
ltQVfXvmevkw
搜索
查看: 7161|回复: 14

Windows RT越狱成功:可运行传统的桌面软件! [复制链接]
跳转到指定楼层
复制 

Rank: 5Rank: 5Rank: 5

UID
259723
帖子
807
PB币
2360
贡献
0
技术
1
活跃
110
楼主
发表于 2013-1-7 16:09:03 IP属地北京 |只看该作者 |倒序浏览
快御云安全
Windows 8在Metro界面下只能运行通过微软签名和Windows Store应用程序,Windows RT亦是如此,无法运行之前为Windows 7等系统开发的x86/64桌面软件。正是如此,自Windows 8发布以来就不断有人进行越狱。今天,有技术团队宣布,他们已经实现了在Windows RT上运行传统的桌面程序
该技术团队成员Clrokr在Surfsec博客上发表了一篇名为《绕过Windows RT的代码完整性检查机制》的文章,文中指出,他们已经实现了在Windows RT上运行未签名的桌面应用程序。颇具讽刺意味的是,此次越狱的成功得益于Windows内核中一个存在了很长时间的漏洞,该漏洞影响所有Windows版本,ARM版Windows也没能逃脱。
实际上,Windows RT的功能与Windows 8是一样的,只是微软故意设置了障碍让Windows RT不能兼容桌面应用,Windows RT就像是Windows 8的妆后版,两者骨子里是相同的,只是微软使用代码完整性检查机制(Code Integrity Mechanism)人为地将这两个平台区分开来
这个代码完整性检查机制不会阻挠任何人修改Windows Store应用程序(以及拥有微软签名的程序),因为Windows Store应用程序是唯一不需要任何签名就能运行的。而且,这种代码完整性检查机制在Windows 8上也能运行,你甚至可以在Windows 8上执行代码完整性检查机制从而让它看起来和Windows RT一样。
微软在Windows RT上屏蔽传统的桌面应用程序,并不是什么高科技,只是一个很糟糕的营销决策。Windows RT需要Win32环境才能增强其‘产能工具’的身份,现在已经有太多的‘消费’型平板机了。”
Clrokr在博客中介绍了越狱方法,但是不建议普通用户使用。

Rank: 7Rank: 7Rank: 7

UID
2847846
帖子
2739
PB币
3310
贡献
0
技术
373
活跃
1651
沙发
发表于 2013-1-7 16:28:02 IP属地广东 |只看该作者
原来骨子里是一样的。哈哈。现在主要是运行X86应用此ARM能不能带的动的问题了。

Rank: 5Rank: 5Rank: 5

UID
259723
帖子
807
PB币
2360
贡献
0
技术
1
活跃
110
板凳
发表于 2013-1-7 16:28:43 IP属地北京 |只看该作者
xda上已经有人测试编译了开源的putty等软件,运行良好,欢呼吧,期待vlc和7zip。。。。
http://forum.xda-developers.com/showthread.php?t=1885399

Rank: 5Rank: 5Rank: 5

UID
259723
帖子
807
PB币
2360
贡献
0
技术
1
活跃
110
4F
发表于 2013-1-7 16:31:46 IP属地北京 |只看该作者

Circumventing Windows RT’s Code Integrity Mechanism
p4January 6, 2013c35

clrokr (@clrokr) – 6. Jan 2013
It’s taken longer than expected but it has finally happened: unsigned desktop applications run on Windows RT. Ironically, a vulnerability in the Windows kernel that has existed for some time and got ported to ARM just like the rest of Windows made this possible. MSFT’s artificial incompatibility does not work because Windows RT is not in any way reduced in functionality. It’s a clean port, and a good one. But deep in the kernel, in a hashed and signed data section protected by UEFI’s Secure Boot, lies a byte that represents the minimum signing level.

Finding the right spot

The minimum signing level determines how good an executable’s signature is on a scale like this: Unsigned(0), Authenticode(4), Microsoft(8), Windows(12). The default value on x86 machines is of course 0 because you can run anything you like on your computer. On ARM machines, it defaults to 8.
That means that even if you sign your apps using your Authenticode certificate, the Surface or any other Windows RT device (at this moment) will not run them. This is not a user setting, but a hardcoded global value in the kernel itself. It cannot be changed permanently on devices with UEFI’s Secure Boot enabled. It can, however, be changed in memory.
Finding this byte in the kernel takes a while, there is no exported symbol for it and not even in the symbol database at MSFT. I found it using WinDbg and a machine running Windows 8 Pro, creating processes and watching how the system behaves when the signature checks happen all the way through CI.dll and back. Because Windows 8 and Windows RT are so similar, locating it in the ARM kernel was not hard:

SeGetImageRequiredSigningLevel+0x18
LDR R3, =0x59FFA6 This is our byte, 0x19FFA6 at 0x400000 image base
LDRB R3, [R3]
CMP R3, #4
BHI loc_HighSigReq
B.W loc_LowSigReq

There are many more places where you can find this byte accessed, but none of them have an exported symbol.

Prerequisites

A while ago I read an article about how the Windows kernel assumes that data passed by certain processes is always well-formed [1]. This vulnerability exists in Windows RT, but exploitation is a bit harder than on Windows 8 because unsigned binaries can’t be run in the first place (and store apps don’t have the security context you need to attach to other processes). But Microsoft decided to provide something very important [2] that made this whole endeavour a lot easier. This remote debugger, when run as Administrator, can attach to the user’s CSRSS process and manipulate its memory.
CSRSS contains a lot of calls to the vulnerable NtUserSetInformationThread function, including some that use the right parameters to exploit it. This is one of them (from winsrv.dll):

TerminalServerRequestThread+0x230
MOVS R3, #0xC
ADD R2, SP, #0x58
MOVS R1, #9
MOV R0, 0xFFFFFFFE
BL NtUserSetInformationThread

A CSRSS thread executes this code. Using a breakpoint, we can change the data structure pointed to by R2 before the NtUserSetInformationThread call happens to exploit the vulnerability. Sadly, this is very impractical because the exploit subtracts 1 from the specified address and we need to subtract 0×80000. This is because we can’t do an unaligned access on ARM (remember, our byte’s offset is 0x19FFA6), so we need to use 0x19FFA4.
We also need the linear address at which the kernel image resides. We can find this out by calling (on the device, this can be done from a store app which will run unsigned) NtQuerySystemInformation with information class 11. If you want to know how to use NtQuerySystemInformation from a store app, read [3]. This gives us a list of all loaded drivers and their image bases, effectively bypassing ASLR in this case (although this is not what ASLR is for, it is annoying in these situations).

Exploitation

Using the remote debugger and MSFT’s armasm, I used a half-empty code page in winsrv.dll (0×10800 from the image base) to store this small payload:

push {r5-r8}
mov r7, 0x80000
ldr r8, my_addr
loc_loop_begin:
movs r3, 0xC
add r2, sp, 0x68 ;0x58 org.
add r5, r2, 4
str r8, [r5]
movs r1, 9
mvn r0, 1
mov r12, 0x10E1
svc 1
subs r7, r7, 1
cmp r7, 0
bne loc_loop_begin
pop {r5-r8}
mov r0, r0
my_addr dcd 0x12345678 the kernel's base address + 0x18

We now set a breakpoint directly after the legitimate NtUserSetInformationThread call in TerminalServerRequestThread, pressing a volume button will trigger it. This is where it gets interesting.
Redirect the instruction pointer to the payload in memory and set a breakpoint at the mov r0, r0 instruction at the end. Press F5. Now set the instruction back to the first breakpoint and remove both. Press F5 again.
Congratulations, your Windows RT device is unlocked!

Conclusion

Windows RT is a clean port of Windows 8. They are the same thing and MSFT enforces Code Integrity to artificially separate these platforms. It does not stop pirates from modifying store apps (and their license checks) because store apps are the only things that can actually run unsigned. The fact that this method works on Windows 8 as well shows how similar the systems are. You can even enforce Code Integrity on Windows 8 to see what Windows RT feels like!
The decision to ban traditional desktop applications was not a technical one, but a bad marketing decision. Windows RT needs the Win32 ecosystem to strengthen its position as a productivity tool. There are enough “consumption” tablets already.

Microsoft, please consider making code signing optional and thereby increasing the value of your Windows RT devices!

Drawbacks
•Sometimes this triggers a bugcheck because we can’t control the bytes at 0x19FFA4 and 0x19FFA5 from the kernel base and they sometimes are zero, causing a 0×18 bugcheck.
•This method is not practical for most users, especially because tablet buyers are less likely to know enough about computers to do this than PC users.

Sources

[1] j00ru//vx tech blog: Defeating Windows Driver Signature Enforcement #2: CSRSS and thread desktops
[2] Visual Studio 2012 Remote Tools
[3] Using the complete Windows API in store apps (mamaich at XDA-Developers)
also for further reading
[*] Discussion about this on XDA-Developers

Changelog

6. Jan 2013: Added 0×18 offset in payload because it is very important and the article at [1] doesn’t mention it. Also added link to discussion on XDA-Developers for further reading.
头像被屏蔽

Rank: 2Rank: 2

UID
949300
帖子
108
PB币
0
贡献
0
技术
0
活跃
50
5F
发表于 2013-1-7 16:54:10 IP属地湖北 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 2Rank: 2

UID
1879316
帖子
144
PB币
1226
贡献
0
技术
2
活跃
31
6F
发表于 2013-1-7 17:14:55 IP属地重庆 |只看该作者
撸上是不是想找这张图。
我就给你吧,图片转自XDA论坛。

Rank: 5Rank: 5Rank: 5

UID
259723
帖子
807
PB币
2360
贡献
0
技术
1
活跃
110
7F
发表于 2013-1-7 17:26:55 IP属地北京 |只看该作者
tq959 发表于 2013-1-7 16:54
希望腾讯能编译一个Desktop版本的QQ,只要有7Z的Desktop还有个UltraEditor,最好有RAR,我就马上入手RT了, ...

按腾讯风格来看,出个rt版的tm还行,qq太吃内存啊。。。。
头像被屏蔽

Rank: 2Rank: 2

UID
949300
帖子
108
PB币
0
贡献
0
技术
0
活跃
50
8F
发表于 2013-1-7 17:30:09 IP属地湖北 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 2Rank: 2

UID
3302855
帖子
380
PB币
903
贡献
0
技术
0
活跃
2

I'm Surface用户 应用界

9F
发表于 2013-1-7 17:37:06 IP属地北京 来自手机 |只看该作者
必须重新编译。另外这样并不好,这将威胁Windows RT的安全性——只运行来自Windows 应用商店的应用是安全的

Rank: 7Rank: 7Rank: 7

UID
346636
帖子
1511
PB币
2661
贡献
0
技术
0
活跃
16

I'm Surface用户

10F
发表于 2013-1-7 17:40:53 IP属地江苏 |只看该作者
tq959 发表于 2013-1-7 17:30
不过只要MS不公开,对于这样要破解的事情,TX肯定不会做

也不一定,貌似IOS上腾讯也有需要越狱才能用的软件。

Rank: 1

UID
3234288
帖子
115
PB币
128
贡献
0
技术
0
活跃
1
11F
发表于 2013-1-7 18:00:17 IP属地英国 |只看该作者
原破解博客链接http://surfsec.wordpress.com/201 ... ntegrity-mechanism/

这个破解目前非常不实用,因为需要连接一个调试用的机器到surface上面。surface是UEFI secure设备,没有办法直接改内核文件,只能每次启动后用调试机器改内存字节。

不过反过来想,倒是可以给x86 win 8平板加上这么一个检查,使得任何未经授权的x86程序不能运行,变成x86版本的windows RT,有人肯定喜欢,呵呵

Rank: 1

UID
3234288
帖子
115
PB币
128
贡献
0
技术
0
活跃
1
12F
发表于 2013-1-7 18:01:28 IP属地英国 |只看该作者
这个破解目前非常不实用,因为需要连接一个调试用的机器到surface上面。surface是UEFI secure设备,没有办法直接改内核文件,只能每次启动后用调试机器改内存字节。

不过反过来想,倒是可以给x86 win 8平板加上这么一个检查,使得任何未经授权的x86程序不能运行,变成x86版本的windows RT,有人肯定喜欢,呵呵

原破解博客链接 http://surfsec.wordpress.com/2013/01/06/circumventing-windows-rts-code-integrity-mechanism/

Rank: 5Rank: 5Rank: 5

UID
1408869
帖子
593
PB币
2467
贡献
0
技术
0
活跃
2547
13F
发表于 2013-1-9 00:12:13 IP属地福建 |只看该作者
又一个好消息,原来策略与限制内存量一样。。。。哈哈

Rank: 1

UID
2039136
帖子
7
PB币
16
贡献
0
技术
0
活跃
11
14F
发表于 2013-1-9 00:36:42 IP属地重庆 |只看该作者
bassam 发表于 2013-1-7 17:26
按腾讯风格来看,出个rt版的tm还行,qq太吃内存啊。。。。

严重+1啊,严重拖慢系统

Rank: 2Rank: 2

UID
1955075
帖子
203
PB币
296
贡献
0
技术
0
活跃
46
15F
发表于 2013-1-17 16:23:37 IP属地甘肃 |只看该作者
真的好玩,皇帝的新衣。
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛