[BETA] RT Desktop Store (moved from RT General forum, NOT Subvert) - Windows RT Development and Hacking

(got enough posts so I could move this thread here)
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Desktop Store
(didn't habe the brains to come up with a nice name like "Subvert", if you have something good in mind, tell me, but I still would be glad to merge with toxickills project, even if it's only for the cool name )
Screenshots
Program Download Links:
RT Desktop Store Installer
Features
50 apps packaged
install/uninstall packages
all items on the startpage get shuffled
tile creation
start apps directly from the store
Todo
sometimes uninstalled packages are still displayed as installed (restarting the store currently fixes this)
tile management (delete, check for already existant tile)
add store tile to the start screen
add screenshots to existing packages
pack the remaining packages
distributed repositories
package/installation updates
and much more - if you have ideas, tell me
How can you help?
If you would like to help me with the packages until I release the package manager: send me screenshots from the packaged applications available in the store, as this is hard for me to do (I don't even use every application myself).
Here are some criteria for screenshots I would like you to check before sending them to me:
make the size exactly 1366x768 or 683x384, so that they don't scale bad in the screenshots control
If the app can't run fullscreen or maximized window, its always nice to have the pc property window in the background showing the Windows RT logo text
you can also make only screenshots from the application window itself and place them on a canvas complying to point 1., maybe applying a nice dropshadow
don't edit the screenshots in any other way, let them look natural
and if you can: screenshot them in a productive/properly used scenario, that's always the best to see
Mail adress should be viewable in my profile, just sent it there, or if you have mailbox space issues, sent me a link to the screenshot(s), Thanks!
Further information:
Pretext
Hey guys, so i have been sitting some hours and tried to take up what djboo (thread) had no time to continue on.
I've build a little RT Desktop Store based on his idea on getting a repository to present packages and let you download them via a custom store client.
If you are confused: No this is not the store called "Subvert" build by Toxickill, which he posted on this thread.
So what's the reason for this "duplicate" ? Well i wrote my own store during the same time Toxickill did, but when i released my first screenshots, i saw he had released his first beta only a few hours earlier. We used the same UI Framework it seems, so our applications even look similar. I wrote him asking what to do, if we could work together, etc. because it would be dumb not to use our resources together, to make this work for you even better. But since he hasn't been answering my PM and I don't have the permission to post in his development thread as of yet, I thought i could at least release what i have build so far, let you review it and maybe even Toxickill will notice me And if not? Well i don't mind doing this alone since I already spent all this time doing it this way, and im so glad of being able to give back something to the community (This is my first ever publicly released application!). If you like my store (or don't like it), please comment so that I can make it better
And while I'm on the road, i can as well earn my 10+ posts, so that i can post in the development threads
If you are interested in working together: i have setup a TFS on my server which we can use for working on this project.
Ok now for the application.
Concept
Basically, it's the same concept djboo originally pointed out: have a repository with packages, let a store client download, unpack and install them. So far so good.
I've gone a bit further and tried to make the client look & feel like the normal windows store app (still a lot to be done, but it really looks alike).
The current repository is hosted on my server. While i have plans to release my the package creator too, i will first release the client, because the package creator is not that, erm, user friendly right now. In fact i have, because of my store client design, divided packaging and the repository, because the basic packages that can be build contain more that what is needed to simply install the application. After building a package you can add it to a repository (using a repository manager) which then will unwrap all that is only needed for the store client presentation of the package (tile images, screenshots, etc.) and present the rest of the package as downloadable file for the store client.
If you want to see it, here is a screenshot from my package builder application that I will release once all the applications available have been packaged and added to my repository (thinking of a simple package creation service that spawns new guids, so that ppl creating packages for the same application will get the same application guid to prevent presentation of duplicate entries by the store client)
Installation & Files
First and foremost: you need to jailbreak your device (Windows 8.0 only, hopefully 8.1 will follow soon)
To install the store client, simply download and run this Installer from my server.
The store client will get installed under your Program Files folder, creating a new Folder named "RT Desktop Store". Installation consists of 2 steps:
The Installer downloads and then and runs the launcher for the store client
The Launcher downloads the latest store client files and starts the RT Desktop store (this will happen every time you start the store client)
Packages that you install from the store will not be installed under your Program Files folder, but a Folder called "Program Files (RTDS)" (same parent directory as your Program Files folder). This is for not confusing the packages installed from the store with any existing applications in your Program Files folder. Uninstallers for all all installed packages will be held in the "__storepackages" folder of your RT Desktop Store installation directory (like C:\Program Files\RT Desktop Store\__storepackages).
If you install an app, the store client will also create a Tile on your start screen, using the command line interface of OblyTile - if a tile is supported by the package. If no tile is specified by the package, the application will start after installation, so that you can at least pin it directly to your task bar. Unfortunately, programmatic removal of tiles via OblyTile is not possible as of yet, so you would need to unpin them yourself. The same goes for checking of already existing tiles. The same tile will just get created a gain. But the will most likely be pointing to the same file, so just delete all but one of the tiles.
Shortcuts
As long as i dont release a proper installer that creates shortcuts, start menu entries and/or a live tile, you will have to pin the store client yourself. I recommend you to create a shortcut to "RTDStore.exe", not "RTDStore.Launcher.exe", because the launcher application may get renamed during an update process. That aside, it doesn't matter if you run the launcher or the store client directly, the launcher will be called either way to check for updates.
Packages
I have yet to package every application that has been ported already, but i got roughly 1/3 of them already packaged (they may not all include screenshots, tiles etc, but that will follow this week, along with the remaining ported apps i think.
Finally
Have fun and i hope everything works well. If you experience any errors, please comment here or sent me a PM, so that i can fix them and let the new versions get pushed to you by my launcher as soon as possible
Disclaimer
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

NICE WORK BRO!!!
Question) after installing an app though your store, could we specify the desktop-shortcut-Icon in your package Manager? (Im asking this because some of my Projects use a cmd file to start the app, and the Icon is pretty boring)[subvert has NOT this Feature]
Cheers
Blade
EDIT:
Just tested it. it Looks AWESOME
Notes:
-No Settings available (how to add own repo-URLs?)
-We Need your Package-Manager
Improvements:
-small visual bugs while going through. Perhaps you can include a "wait-till-loaded"-function, this will solve all visual bugs and make it all soo much smoother
-Possible to add "touch-scrolling"? that would be soo cool, if we dont Need to use the scrollbar at the bottom and are able to also scroll via dragging in the middle...just like the real store
(also the scrolling brings visual bugs while moving. Bug disappear on stopping...)
I think this has got a HUGE potential! Please Keep it up the good work.

BIade said:
NICE WORK BRO!!!
Question) after installing an app though your store, could we specify the desktop-shortcut-Icon in your package Manager? (Im asking this because some of my Projects use a cmd file to start the app, and the Icon is pretty boring)[subvert has NOT this Feature]
Cheers
Blade
Click to expand...
Click to collapse
Hi Blade! (Cheers from Cologne)
If I understand you correctly, you use some kind of launcher for some of your programs, which in turn starts your program (i guess you mean something like ClassicStartMenu, where you need to restart the explorer after launching the start menu, because otherwise it won't show up in the taskbar). And because of this, you pin, of course, your launcher to the desktop instead of the program that's getting started - makes sense. In my package manager you can specify a list of applications that are included in the package and, as of now, a small and normal sized tile for OblyTile to generate the start screen tile for each application. I guess i could extend this to support desktop shortcuts, but would have to look into the windows shortcut file format (.lnk) - which I had planned anyway, because I need more control over the created tiles than simply creating them, and they're essentially .lnk files, too. Currently you can put a launcher in the package and run it via the tile that will get created for it - I will show you how that works once I've released the package manager.
BIade said:
EDIT:
Just tested it. it Looks AWESOME
Notes:
-No Settings available (how to add own repo-URLs?)
-We Need your Package-Manager
Click to expand...
Click to collapse
As I've written in my todo-list above, distributed repositories are yet to come, I just have to find a way to make the packages unique - maybe by providing a packaging service for the package manager, that spawns a GUID for a given application name, so that the same package doesn't get listed twice in the store. But that in turn would create a new problem: how do you decide from where to get a package? As there is no real server behind an application that could work as some kind of load balancer. I would display a message from which hosting the package is being retrieved upon installation, but rather not show them as separate repositories in the store. But I think it would be reasonable to give the user the opportunity to select from which repository to get the package if he wants to install it - if a package is broken, or not available on the repository automatically selected by the store.
But furthermore, what about a package where someone includes a nice launcher and someone else doesn't? Need to think about it.
Today I will try to get over with packaging most of the remaining apps. After that's done, I will take up getting the package manager ready to release accompanied by a distributed repository mechanism, as those two go hand in hand.
BIade said:
Improvements:
-small visual bugs while going through. Perhaps you can include a "wait-till-loaded"-function, this will solve all visual bugs and make it all soo much smoother
Click to expand...
Click to collapse
Yeah I did most of it with the new async-feature of C#, for the smaller installations that works perfectly, but larger ones make the application hang - that was to be expected because async just executes on the GUI thread too, just does lazy evaluation. I already moved a part of the installation to background threads, but will move the whole thing. And the last few days were just dirty hacking, so i don't have a centralized installation overview as of yet, that's why the installation messages start bugging once you switch to another app page.
BIade said:
-Possible to add "touch-scrolling"? that would be soo cool, if we dont Need to use the scrollbar at the bottom and are able to also scroll via dragging in the middle...just like the real store
Click to expand...
Click to collapse
I guess that's somehow possible, just wasn't on the top of my list.
BIade said:
(also the scrolling brings visual bugs while moving. Bug disappear on stopping...)
Click to expand...
Click to collapse
I daresay that's an issue with the not-so-lightning-fast ARM processor, as this runs perfectly fine on my desktop pc. Surely GDI+ related, but i guess there is something that can be done for some smooth animation.
BIade said:
I think this has got a HUGE potential! Please Keep it up the good work.
Click to expand...
Click to collapse
Thank you very much!

Cheers back from Cologne
For the repos:
Adding a Settings-tab with a list of repos, where only your repo is listened, but where users can add/delete custom repos.
For the "not duplicated" and the "from whom" problem:
Custom-repos could get their own tab like:
[Available(perhaps rename it to "Main") | Custom1 | Custom2 | Installed | Settings]
And Custom-Titles could been set in settings to make it look like:
[Main Apps | Blade's Apps | xda-Apps | Installed | Settings]
Totally off topic:
On the 12.12 I write an important exam in the uni. But after that I would like to meet you for a coffee, if you want. Since we both live in cologne, perhaps we can share some ideas or/and learn something from each other. I would love to help you with your store, and perhaps i got some cool stuff for you:
(ps3-hacking, Android-app-development, Micro-controller-programming, home-automation, and many many more....)

Your idea for the different repositories is quite nice, I will implement this soon, as it will be quite easy I think. But for the long run I will still be looking for a more integrated solution.
Offtopic too:
Sure why not! Just PM me the details of the approximate when and where and we'll go for it You can also write your PM in german

Hit the 50 packages mark! Hurray!
And ~160 RT Desktop Store Downloads!
If you would like to help me with the packages until I release the package manager: send me screenshots from the packaged applications available in the store, as this is hard for me to do (I don't even use every application myself). Here are some criteria for screenshots I would like you to check before sending them to me:
make the size exactly 1366x768 or 683x384, so that they don't scale bad in the screenshots control
If the app can't run fullscreen or maximized window, its always nice to have the pc property window in the background showing the Windows RT logo text
you can also make only screenshots from the application window itself and place them on a canvas complying to point 1., maybe applying a nice dropshadow
don't edit the screenshots in any other way, let them look natural
and if you can: screenshot them in a productive/properly used scenario, that's always the best to see
Mail adress should be viewable in my profile, just sent it there, or if you have mailbox space issues, sent me a link to the screenshot(s), Thanks!

Hi
Tried to install it today but cannot.
My device is nokia lumia 2520
Before installation i did jailbreak, looks done well.
When im trying install desktop store getting info there is it not possible, please visit market etc.8

wojtas29 said:
My device is nokia lumia 2520
Before installation i did jailbreak, looks done well.
Click to expand...
Click to collapse
You didnt do the jailbreak then. the jailbreak works on RT 8.0 only, it does not function on 8.1 and the lumia 2520 comes pre loaded with 8.1.

wojtas29 said:
Hi
Tried to install it today but cannot.
My device is nokia lumia 2520
Before installation i did jailbreak, looks done well.
When im trying install desktop store getting info there is it not possible, please visit market etc.8
Click to expand...
Click to collapse
Just as SixSixSevenSeven mentioned: if you didn't downgrade your lumia to Windows 8.0 (don't know if it's possible), it won't work. Maybe you ran the jailbreak, but it failed for sure. If not, this would be breaking news for Myriachan and the others xD

Short update:
I'm currently working an a packaging modification. I'll package the apps directly as .appx files using the windows store package builder shipped with visual studio. Toxickill told me, that despite this, the Original Windows store won't install the packages directly, so I'll be building an appx installer afterwards. And if we ever get the Windows Store to install our custom .appx packages without a custom installer, we will already have the correct package format Furthermore, the windows store package format is quite convenient regarding structure of package information and files. And in any case better than me trying to reinvent the package-format-wheel.
For the store client/repositoriy, the packages will be wrapped with additionaly info (images and other stuff, and I'm modifying my package builder to be a combination of the visual studio built-in package manifest editor and the devcenter web page for publishing windows store apps (some of you may know what I'm talking about, the others will just get to see the new package builder in a few days^^). This way, ppl can create packages of ported apps, without needing their own repository to publish it, but send it to someone hosting a package repository, who can simple import the package, which then gets unwrapped and put into the repository, presenting it's information to the store client.
In my opinion, microsoft has done some nice work, streamlining the app creation and publishing process for the windows store. And by trying to comply to their application, packaging, redistribution standards, I hope we may be able to get something out of them regarding jailbreak and such, making them see, that, if correctly managed, desktop apps are not lowering the user experience on windows rt at all, but are an enrichment instead

Fasin said:
if you didn't downgrade your lumia to Windows 8.0 (don't know if it's possible)
Click to expand...
Click to collapse
It isn't possible unfortunately :/

SixSixSevenSeven said:
It isn't possible unfortunately :/
Click to expand...
Click to collapse
That's rather unfortunate :/ Then the only hope for you, wojtas29, is the next jailbreak...

Just to let you know, I'm not dead yet Sadly I don't get as much time as I would like to. I'll package some more apps when I have some spare minutes at work this week and hopefully I will get a huge step done with the package manager this weekend, so that you can use it. Bear with me

Yeah!
Inviato dal mio Nexus 4 utilizzando Tapatalk

not installing on surface rt
I don't if your still working on this project or not but I need your help!!
I can't install this app on surface rt 8.1 jailbreak.
when I want to run this app it sez "this app can't run on your pc to find apps on this pc, open the windows store."
and then I tried to open it using the x86 emulator and then the notepad opened. at the last line it seas :
[ 6500]E: Error loading program: 1168
(I don't known if this in the emulator error or D.stores error.
helllllp!!!!

Dead horse LoL
Anyway, I did get the installer to launch after signing the file using the 'signtool', however it looks like the dependencies aren't available (probably dead server). Stuck at 'Downloading Launcher' ... 0/0B
Windows 8.1 Jailbroke.
Happily, the 2017 community edition of Visual Studio still let's us compile apps as 'Any CPU', so at least I can still build stuff.

brandoncomputer said:
Dead horse LoL
Anyway, I did get the installer to launch after signing the file using the 'signtool', however it looks like the dependencies aren't available (probably dead server). Stuck at 'Downloading Launcher' ... 0/0B
Windows 8.1 Jailbroke.
Happily, the 2017 community edition of Visual Studio still let's us compile apps as 'Any CPU', so at least I can still build stuff.
Click to expand...
Click to collapse
hey did you get it to work Im having the same problem .

trying this in 2019 on my surface RT Win8.1 jailbreak with no luck. Is the app dead?

frayes said:
trying this in 2019 on my surface RT Win8.1 jailbreak with no luck. Is the app dead?
Click to expand...
Click to collapse
Yes

frayes said:
trying this in 2019 on my surface RT Win8.1 jailbreak with no luck. Is the app dead?
Click to expand...
Click to collapse
It says it can only work on Windows 8.0, not 8.1. Did you also try that? I want to try this on my RT too but I am reading into the downgrade first.

Related

[REQUEST] Remote foobar

I would donate money to someone who made a remote app to foobar2000 for android.
Maybe there already is but I've searched a lot and cant find it =(
There is this http://www.hydrogenaudio.org/forums/index.php?showtopic=38114 control.dll wich handles some commands and the connection over tcp/ip.
But the rest I can't do on my own
I also would like a foobar remote. I've done the android tutorials on the sdk website but I'm by no means an experienced developer.
I thought I would base it around the android-vlc-remote interface.
Perhaps a google code project is a good idea?
I have written a remote controller for foobar2000 a while ago. It's not very beautiful, but at least it works. It's not a plugin for foobar though, it's a server program written in Java. It still just has the basic controls, but I'm about to make it good and release it after my exams (in a couple of weeks or so).
Try out foo_httpcontrol. Then there are a few templates that look good on the Android (I use the ones by KEVO).
I can't post a link, but here is the URL, but Google and there is a thread on Hydrogen Audio dot org
tberman333 said:
Try out foo_httpcontrol. Then there are a few templates that look good on the Android (I use the ones by KEVO).
I can't post a link, but here is the URL, but Google and there is a thread on Hydrogen Audio dot org
Click to expand...
Click to collapse
i am using that too , but do u have resolution problem, becoz it is designed for G1
beware, shameless self-plug follows:
i've written an app to control foobar2k over wifi. uses the foo_httpcontrol plugin to send commands/get data.
the website is: foodroid.net84.net (has the QR-Code). or simply search for "foodroid" in the market.
please note, if you already have foo-httpcontrol installed: you also need to have the "ajquery" template installed.
if you don't have it installed: i made a setup to install foo-httpcontrol including "ajquery".
it's currently in beta, but pretty useable IMHO.
cheers, bugramovic
bugramovic said:
beware, shameless self-plug follows:
i've written an app to control foobar2k over wifi. uses the foo_httpcontrol plugin to send commands/get data.
the website is: foodroid.net84.net (has the QR-Code). or simply search for "foodroid" in the market.
please note, if you already have foo-httpcontrol installed: you also need to have the "ajquery" template installed.
if you don't have it installed: i made a setup to install foo-httpcontrol including "ajquery".
it's currently in beta, but pretty useable IMHO.
cheers, bugramovic
Click to expand...
Click to collapse
Big thx!!! Need cover
Check this out, you might like it.
foobar2000controller.blogspot.com

[Release] RT Jailbreak Tool

RT Jailbreak Tool
By Netham45, Version 1.20
An all-in-one program to jailbreak Windows RT tablets using the method recently released by clrokr​
Usage
Boot your RT device and log in, allow it to sit on the desktop for about a minute.
Extract all files out of the latest version of the .ZIP attached to this post. To do this on Windows RT, right-click on the .zip, choose 'Extract all', and select the destination folder.
Run runExploit.bat. It'll prompt you to either install the jailbreak to run on login, uninstall it not to, or run the jailbreak once.
Choose an option and follow all subsequent prompts. They're all quite easy and self-explanatory.
FAQ
Q) What does this do, in layman's terms?
A) It allows non-Microsoft ARM-compiled .exes to run on the desktop. That is it.
Update (03/01/2013): The jailbreak now allows unsigned drivers to load.
Q) Can I use this to run Photoshop, Steam, AutoCAD, <Insert commercial product here>?
A) While it is -technically- possible for the companies to port their stuff over to Windows RT using the hack it is extremely unlikely. As a rule of thumb, if it's a commercial piece of software it won't run on the ARM.
Q) Can I use this to run PuTTY, VNC, X-Chat, <Insert open-source product here>?
A) Yes! Open-source programs are ones that you, having the source code, can recompile to work on the ARM. If it's not already available (A small but growing number of programs are) it's easy to get started. There are some useful threads in the Windows 8 Development and Hacking board on XDA-Developers.
Please note that not all programs can reasonably be ported over to ARM, due to either program complexity, overuse of inline assembly, or the current lack of a GNU Compiler
Q) Can I use this to run any random x86 app I find on the internet?
A) No. Apps must be recompiled for ARM. Stop asking why Chrome doesn't run.
Q) Can I use this to hack my Android tablet?
A) Not really. Most Android hacks require custom kernel-mode drivers (APX, Odin, ADB all require drivers that are unavailable), and this hack only allows us to run unsigned User-mode code.
If you don't know the difference between User-mode and Kernel-mode, I'm sure Wikipedia has a good article on the subject.
Q) Will Chrome/Firefox be ported over?
A) I don't see any major technical hurdles for those, but I probably won't be the one to do it.
Q) Are there any precompiled apps for this available?
A) Check out THIS THREAD for a list of all currently known compiled apps.
Q) I ran the jailbreak, now where can I download pirated apps from?
A) Nowhere. This jailbreak does not allow for pirated apps, and it is a long ways off from actually supporting pirated apps. If you manage to get pirated apps to run on Windows RT you will be doing the entire community a large disservice, along with ruining what credibility this hack may have in Microsoft's eyes.
Q) I don't know how to recompile code, can I get someone else to do it?
A) If it's a simple project you can likely find someone who will be more than happy to recompile it for you. If it's a large project with numerous dependencies, or a commercial project, I will be willing to take a look at it and quote a price to do it. (On that note, please realize that I am not affiliated with XDA-Developers at all.)
Q) I keep BSoD'ing! What's up?
A) I haven't managed to track down the cause of the BSoDs, except that they seem to happen when the exploit is ran within the first minute or so of the tablet booting and logging in. If you're getting BSoDs, boot your tablet to the desktop and wait 2 or 3 minutes before trying the exploit. Also, make sure that you're up to date with Windows Updates, as of 2/26/2013.
Q) I ran the .bat and it told me it couldn't find it's bin folder. What's wrong?
A) Extract the ZIP in entirety. Don't just open the ZIP and double-click on the runExploit.bat.
Q) It's not working! What do?
A) Post in this thread describing what you're doing and the issue you're having, do not PM me, even if you don't have the number of posts to post in the developer sections. I'll consider it spam and disregard it. Don't message me on Twitter either, the only place that I will provide support for this tool is in this thread.
Q) Is this persistent across reboots?
A) No, it resets every time the device reboots.
Q) Is this a tethered exploit?
A) No. Tethering is connecting the device to a computer, or other device to jailbreak it. This is done entirely on the device. It just has to be redone at reboot.
Q) Will this work with all the latest updates, as of 02/26/2013?
A) There was an updated .zip posted for the latest update (Patch Tuesday, Feburary 2013.) It should work.
Q) How do I compile apps for the Surface RT? It says I'm missing a bunch of .libs!
A) Visual Studio 2012 does not come with all the required ARM .libs for compiling most desktop apps. Please see THIS post by _peterdn for a useful utility for generating .libs and .exps from the .dlls on the tablet.
Q) Why would you want desktop apps? They suck for touch.
A) Mainly for the library of easily ported software, along with the things that metro apps just can't do. I agree, they're more inconvenient to use with touch, but that's the tradeoff for having a huge library of software. You also don't have to use desktop mode, the tablet still is quite good without it (Except the mail client). I also believe that since it's my device I should be able to do whatever I want with it, regardless of what MS says. Traditionally MS has leaned the same way with Windows, which makes it rather disappointing they chose to lock this platform down.
Q) Will this void my warranty?
A) Since it doesn't persist across reboots chances are the support center will never know, though it may be against the terms of your devices warranty.
Q) Is there any warranty for this program?
A) No express or implied warranty exists.
Q) Your hack caused the paint to chip off my tablet, the felt to peel off my type keyboard, the kickstand to fall off, and my tablet to display nothing but satanic messages while it's on! I want you to buy me a new one!
A) No it didn't, and see my warranty policy.
Q) Can Microsoft patch this?
A) Yes and no. They can patch it through Windows Update, but since we have the ability to reinstall from recovery partitions we can revert any Windows Updates they release.
Q) Will this allow people to run viruses on my tablet?
A) Yes and no, if something malicious is compiled and ran while jailbroken it could act like a virus, yes. Once you reset, though, it'll be gone.
Q) I came across a malicious RT application! Who do I tell?
A) If it's a jailbroken application then the most you can do is make a post informing about it. That's one downside to having unsigned code, there's no one regulating body who can decide what is and isn't available, and manage safety. If it's a store application then I suggest you contact Microsoft. If it's a Modern UI app that requires the jailbreak to run you still may have luck contacting Microsoft, as they can blacklist the developer's certificate.
Q) Can any random Store app do this?
A) No, this requires tools and privileges that Windows Store apps can't possess. The appcontainer model that MS uses is very strict and good at preventing things like this from happening. There's a number of things that flat-out aren't possible to do from a Store app that this uses, not to mention that it would get rejected by MS.
Q) Will I (The user) get my developer license banned?
A) It's possible, though I doubt that MS will do that.
Update: With the new payload (as of 1/18/2013) users no longer need to get their own developer certificate.
Q) Won't you (Netham45) get your developer license banned?
A) Time will tell, I knew the risk when I posted this. I suspect that their banning system is more geared towards piracy, though, which this doesn't really enable.
Update: With the new payload (as of 1/18/2013) my developer certificate is no longer required.
Q) I've got this great feature/idea for the jailbreak! Where can I tell you at?
A) Post it in this thread. Note that the area where we can script and such before the exploit is limited and restricted to pretty much batch scripts, and that I am under no obligation to implement a feature if you suggest it. And, seriously, do not PM me about it. If you don't have the prerequisite number of posts to post in the developer section then go get them.
Q) Can I throw money at you for writing the tool to automate this?
A) There's a donate link on the side of this post. (I'd love to get a Surface Pro. )
Q) Can I throw money at clrokr for documenting the exploit?
A) You'll have to talk to him about that.Here's his profile.
FAQ last updated 2/26/2013 10:17 PM MST
Thanks to clrokr for documenting the usage of the exploit, and to the numerous people who contributed positively in the [Q] Hacking Windows RT to Run Desktop Apps thread
Download is attached to this post.
Update log
Update 1.01(1/10/2013): Uncommented pause in the PS script to install the ModernUI app -- It was causing it not to prompt to install a developer license/my cert for some reason.
Update 1.02(1/10/2013): Fixed issue on non-English devices.
Update 1.03(1/11/2013): Fixed issue with usernames with spaces in them, fixed issue where the user running the jailbreak isn't the first user logged in
Update 1.1(1/18/2013): Redid functionality; it now gets the kernel base inside the payload, instead of requiring a Metro application. Added a startup folder that gets ran after jailbreak. Cleaned up output. Click for more info
Update 1.11(1/18/2013): Added commandline options, added a simple interface to handle creating scheduled tasks to run, added a powershell script to keep it from running if the system hasn't been up for two minutes, added missing startup folder, added sanity check so it doesn't freak out if the startup folder isn't there
Update 1.12(2/12/2013): Fixed the scheduled task to not require AC power to run, tweaked script to not crash on latest patches, Fixed startup folder not getting executed properly
Update 1.12a(2/12/2013): Fixed it to actually work on the latest updates. Oops.
Update 1.13(2/14/2013): Added the ability to dynamically get the signing level. It now requires internet on the first launch, and after an update changes ntoskrnl.exe. This version is slightly experimental, so if it doesn't work use one of the older versions.
Update 1.13a(2/15/2013): Tweaked the script to return from the hook in a way that seems more robust. If 1.12a or 1.13 work for you there's no need for an update.
Update 1.20(3/01/2013): Made the bat use registry keys instead of files in system32, added registry-based startup folder, altered payload to support unlocking kernel-mode code
Click here to download the latest version​
Older versions may be downloaded here
(Note: If you wish to mirror this post please retain a link to it at http://forum.xda-developers.com/showthread.php?t=2092158 so users can always get the latest version.)
Nice job! Good to have an all-in-one. Is this tool using the decrement by 0x80000 or trying the option of a slightly lesser decrement?
Also, it would be good to have a unified selection of RT-compiled desktop apps. I'm working on porting Pidgin (the Windows Store IM clients kind of suck...) but it's not easy; the "build under Windows" instructions boil down to "make your Windows system as Unix-y as possible, then build it there". There may be a way to target RT from GCC, but I am not aware of it.
EDIT: What I meant to say is, perhaps a thread linking all the various apps that people have built (preferably with links to their source, for those of us mildly paranoid types who like to see what other peoples' code is doing on our systems) would be a good idea.
GoodDayToDie said:
Nice job! Good to have an all-in-one. Is this tool using the decrement by 0x80000 or trying the option of a slightly lesser decrement?
Also, it would be good to have a unified selection of RT-compiled desktop apps. I'm working on porting Pidgin (the Windows Store IM clients kind of suck...) but it's not easy; the "build under Windows" instructions boil down to "make your Windows system as Unix-y as possible, then build it there". There may be a way to target RT from GCC, but I am not aware of it.
Click to expand...
Click to collapse
I'm decrementing by 0x7EFF0, it seems to not get the 0x18 bugcheck at all with that number. The one it gets if you run it too soon is a different bugcheck.
Install Fails
Brilliant!
I tried running it but it keeps going in an endless cycle because the Metro app fails to install.
Using a Surface with the latest patches from Microsoft.
merill said:
Brilliant!
I tried running it but it keeps going in an endless cycle because the Metro app fails to install.
Using a Surface with the latest patches from Microsoft.
Click to expand...
Click to collapse
Does it give you any error messages when it fails to install?
netham45 said:
Does it give you any error messages when it fails to install?
Click to expand...
Click to collapse
When installing the metro app, the installation fails because the certificate isn't added to the cert-store by default and the batch just tries again.
I uncommented the #Pause in PrintMessageAndExit to read the error message and that made it possible to choose to install the certificate, the powershell just closed otherwise.
After that the metro app installs fine, and tries to start it. I can see the app start, though the cmd still doesn't recognize it and tries to install it again...
I wrote my own metro app for that today and installed it instead of yours and it worked fine with mine.
My App is just this:
protected override void OnFileActivated(FileActivatedEventArgs args) {
WriteAddress((StorageFile)args.Files[0]);
}
private async void WriteAddress(StorageFile file) {
using (Stream s = await file.OpenStreamForWriteAsync()) {
using (StreamWriter wrt = new StreamWriter(s)) {
uint adr = GetKernelAddress.Address.Get() + 0x19FFBC;
await wrt.WriteAsync((adr & 255).ToString("X2") + " " + ((adr >> 8) & 255).ToString("X2") + " " + ((adr >> 16) & 255).ToString("X2") + " " + ((adr >> 24) & 255).ToString("X2"));
}
}
App.Current.Exit();
}
Click to expand...
Click to collapse
sebmaster16 said:
When installing the metro app, the installation fails because the certificate isn't added to the cert-store by default and the batch just tries again.
I uncommented the #Pause in PrintMessageAndExit to read the error message and that made it possible to choose to install the certificate, the powershell just closed otherwise.
After that the metro app installs fine, and tries to start it. I can see the app start, though the cmd still doesn't recognize it and tries to install it again...
Click to expand...
Click to collapse
Having the same issue, uncommenting the pause seems to fix it all for me. I'll update the zip in the top in just a second.
Edit: New zip with that uncommented uploaded.
Metro app failed to run. Trying to (re)install the metro app...
Found certificate: C:\Users\Merill\Downloads\RT_Jailbreak\bin\ModernUI_App\Get Kernel Base_1.0.
Before installing this package, you need to do the following:
- Install the signing certificate
Cannot invoke method. Method invocation is supported only on core types in this language mode.
At C:\Users\Merill\Downloads\RT_Jailbreak\bin\ModernUI_App\Add-AppDevPackage.ps1:497 char:9
+ $IsAlreadyElevated = ([Security.Principal.WindowsIdentity]::GetCurrent() ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: ) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MethodInvocationNotSupportedInConstrainedLanguage
merill said:
Metro app failed to run. Trying to (re)install the metro app...
Found certificate: C:\Users\Merill\Downloads\RT_Jailbreak\bin\ModernUI_App\Get Kernel Base_1.0.
Before installing this package, you need to do the following:
- Install the signing certificate
Cannot invoke method. Method invocation is supported only on core types in this language mode.
At C:\Users\Merill\Downloads\RT_Jailbreak\bin\ModernUI_App\Add-AppDevPackage.ps1:497 char:9
+ $IsAlreadyElevated = ([Security.Principal.WindowsIdentity]::GetCurrent() ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: ) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MethodInvocationNotSupportedInConstrainedLanguage
Click to expand...
Click to collapse
Try the new zip I just uploaded, I believe I fixed that.
Edit: I see what happened. The file that MS distributes has a signature at the bottom which allows it to make unrestricted system calls and when I commented out the pause I broke that.
Very Nice job! Thank you again!
Yahoo!!! Works. Have PuTTY running. Now to get all ARM compatible apps in one place!
merill said:
Yahoo!!! Works. Have PuTTY running. Now to get all ARM compatible apps in one place!
Click to expand...
Click to collapse
Glad to hear it's working.
Now, 6 AM, time to go to bed.
merill said:
Yahoo!!! Works. Have PuTTY running. Now to get all ARM compatible apps in one place!
Click to expand...
Click to collapse
I agree! If anyone gets Utorrent working ill be eternally greatful
Sent from my HTC One X using xda premium
vincepg13 said:
I agree! If anyone gets Utorrent working ill be eternally greatful
Click to expand...
Click to collapse
With 7Zip, Putty and an .Net 4.0 FTP Uploader app... all I need now is a Transmission console and I no longer really need my laptop.
Would be great to associate .torrent with Transmission on the Surface.
What other "needed" apps that are projects (like SourceForge) that people can think of?
MediaInfo would be handy... wonder if it could also integrate with explorer...
Perhaps this discussion needs its own thread
I'm actually starting a thread for this topic... but since we're here, one thing that would be awesome (instantly add support for a ton of software) would be a Java runtime. Unfortunately, they're huge and complex beasts, and tend to either require assembly or be buildable only on Linux (sometimes both...).
in asus vivo tab rt , I can not go where I say,
please press the volume down now
Silverlight ideally. But it sounds like thats a no go.
Also Chrome or Firefox would be good!
Filezilla would also be nice.
Nice work guys.
It works, but I still get the SmartScreen filter when I try to run apps from Explorer. When I run them from command line, it works fine.
I believe there's a registry entry that needs to be changed, but I don't remember what it is.
randomned said:
It works, but I still get the SmartScreen filter when I try to run apps from Explorer. When I run them from command line, it works fine.
I believe there's a registry entry that needs to be changed, but I don't remember what it is.
Click to expand...
Click to collapse
in the pop up, click more info then click 'run anyway' - itll never bother you again for that app.
will this work with the latest updates installed

[Dev] Kernel code execution

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Decrement ci.dll!g_CiOptions(ci.dll+0xF984) by 0x08 using the exploit (It is 0x26, we need the 0x08 bit high, I chose 0x1E as the result since it's the closest we can get to the original mask).
I haven't actually compiled a driver for it yet, but I'm working on that.
Edit: Played with loading a default system driver with modified code and a custom signature. Instead of subtracting 0x08 to set testsigning high, subtract 0x25 to set all but the 1 bit low. Seems to be working, now. There is absolutely no driver signing now, though. Perhaps setting only 0x08 high would give a similar result but still require a test signature. Not sure, I don't like kernel driver signatures anyways.
More edit: Fun fact: Windows acts odd if null.sys is unloaded.
Even more edit: I'm going to get this, along with a couple other small tweaks, such as a registry-based startup, pushed in the next Jailbreak release, too.
Now, to get the DDK working. I haven't had any luck getting a driver compiled for ARM so far. I heard that there was a leaked DDK out there, anyone happen to know where it is?
oh hoo... awesome! :good:
I was able to use a tweaked version of THIS to get a driver built that loads into the kernel. I had to dump my own libs for ntoskrnl.exe (and somehow managed to get it to look for ntoskrnl.dll, blah), but I did get a Hello BSoD driver to run.
Also I've been looking for ARM DDK, but still not find yet.
It must be only released to device manufacture, but that also can be meaning that it already might have been leaked.
M-m-m, Netham45 I'm not so perfect Guru as you. Please, tell me, using "english", what are we allowed to obtain? Persistent JB or possibility to use/install system drivers w/o signaturest?
Denis_63 said:
M-m-m, Netham45 I'm not so perfect Guru as you. Please, tell me, using "english", what are we allowed to obtain? Persistent JB or possibility to use/install system drivers w/o signaturest?
Click to expand...
Click to collapse
Second part, this lets you get system drivers loaded without valid signatures. It's not ready for the average joe quite yet, but I'm working on getting it implemented into the jailbreak so everyone can use it.
Edit: Latest version of the jailbreak should support kernel-mode code unlocking now.
I've been working on the same thing, to allow unsigned drivers to dynamically load
I decrement by 0x22
I would strongly suggest keeping this separate from the run unsigned user mode win32 code jailbreak
as most people wont need it except in rare circumstances
(and its more likely to lead to the vunerability we all need being closed off)
xsoliman3 said:
I've been working on the same thing, to allow unsigned drivers to dynamically load
I decrement by 0x22
I would strongly suggest keeping this separate from the run unsigned user mode win32 code jailbreak
as most people wont need it except in rare circumstances
(and its more likely to lead to the vunerability we all need being closed off)
Click to expand...
Click to collapse
I think it'd be better if they were both loaded at the same time, so tools like OpenVPN and whatnot that require kernel-mode drivers can still function properly.
By the way, would the drivers work on the RT without this hack (but with a jailbreak) if they were signed with my own (bought, not self signed) code signing certificate or is there a specific list of trusted publishers (ony Microsoft?) that are allowed?
DarkoLord said:
By the way, would the drivers work on the RT without this hack (but with a jailbreak) if they were signed with my own (bought, not self signed) code signing certificate or is there a specific list of trusted publishers (ony Microsoft?) that are allowed?
Click to expand...
Click to collapse
I think the certificate for drivers is different from the certificate for applications.
Nice job, netham.
I'll try incorporating this into what I'm working on. My implementation works like this:
1. Start Notepad with a specific name in the title bar.
2. Attach nonobtrustively to Notepad with cdb.exe.
3. Overwrite user32!GetMessageW using a cdb.exe script.
4. Use taskkill to send a WM_CLOSE to that Notepad, causing the GetMessageW overwrite to execute.
5. The injected code I wrote with cdb.exe loads a DLL and runs it. It loads the DLL by mapping it as a file instead of an image, then marks it PAGE_EXECUTE_READWRITE with VirtualProtect.
6. The initialization sequence of the DLL fixes relocations and loads imports.
7. The DLL finds csrss.exe in the current session.
8. Open ntoskrnl.exe and ci.dll to look for the needed addresses.
9. EnumDeviceDrivers to find the ntoskrnl.exe and ci.dll base addresses.
10. The DLL injects itself into csrss.exe using NtMapViewOfSection and RtlCreateUserThread. (CreateRemoteThread can't be used on csrss.exe, because the new thread will try to connect to csrss over LPC.)
Steps 1-10 are already implemented and working. This leaves the next few steps:
11. Use the exploit to set g_CiOptions as per this thread.
12. Load the driver using NtSetSystemInformation(SystemLoadAndCallImage).
13. Use DeviceIoControl to communicate with the driver in order to set the variables we want.
14. Unload the driver somehow.
Myriachan said:
Nice job, netham.
I'll try incorporating this into what I'm working on. My implementation works like this:
1. Start Notepad with a specific name in the title bar.
2. Attach nonobtrustively to Notepad with cdb.exe.
3. Overwrite user32!GetMessageW using a cdb.exe script.
4. Use taskkill to send a WM_CLOSE to that Notepad, causing the GetMessageW overwrite to execute.
5. The injected code I wrote with cdb.exe loads a DLL and runs it. It loads the DLL by mapping it as a file instead of an image, then marks it PAGE_EXECUTE_READWRITE with VirtualProtect.
6. The initialization sequence of the DLL fixes relocations and loads imports.
7. The DLL finds csrss.exe in the current session.
8. Open ntoskrnl.exe and ci.dll to look for the needed addresses.
9. EnumDeviceDrivers to find the ntoskrnl.exe and ci.dll base addresses.
10. The DLL injects itself into csrss.exe using NtMapViewOfSection and RtlCreateUserThread. (CreateRemoteThread can't be used on csrss.exe, because the new thread will try to connect to csrss over LPC.)
Steps 1-10 are already implemented and working. This leaves the next few steps:
11. Use the exploit to set g_CiOptions as per this thread.
12. Load the driver using NtSetSystemInformation(SystemLoadAndCallImage).
13. Use DeviceIoControl to communicate with the driver in order to set the variables we want.
14. Unload the driver somehow.
Click to expand...
Click to collapse
I really don't get the point of this, we already have an established and working "jailbreak" (god I really hate this term) procedure.
lilstevie said:
I really don't get the point of this, we already have an established and working "jailbreak" (god I really hate this term) procedure.
Click to expand...
Click to collapse
No volume button required. No 2 minute delay after boot. No hardwired addresses - the last remaining one in the .bat file, in winsrv.dll, is obviated by thread injection. Higher stability, because we're not messing with csrss.exe's existing threads. No Internet access needed, because the code can find addresses without symbols.
By the way, Windows RT does not require validate signatures on .msi files. You'll get the otherwise-never-seen yellow UAC dialog box, and then it will install. So another part of my jailbreak is that you'll install it by double-clicking an .msi file. I've tested the .msi functionality. You could then even uninstall the jailbreak the usual way.
These are just improvements to make jailbreaking more user-friendly.
I'm not a fan of the term "jailbreak" either, but it's the current one.
Myriachan said:
I'm not a fan of the term "jailbreak" either, but it's the current one.
Click to expand...
Click to collapse
Me either, I always rename the bat FreeRT.
lilstevie said:
I really don't get the point of this, we already have an established and working "jailbreak" (god I really hate this term) procedure.
Click to expand...
Click to collapse
It's also got the benefit of not being automatic at reboot, unlike what he's talking about. I think that this is part of the reason that MS decided it wasn't a security issue because it requires user interaction every single boot, and a malicious program couldn't possibly install it silently.
Wow, a lot of news, GOOD news!!!
Myriachan
By the way, Windows RT does not require validate signatures on .msi files. You'll get the otherwise-never-seen yellow UAC dialog box, and then it will install. So another part of my jailbreak is that you'll install it by double-clicking an .msi file. I've tested the .msi functionality. You could then even uninstall the jailbreak the usual way.
Click to expand...
Click to collapse
First, that .msi container doesn't need signature for installing - this fact simplifies installation process! And now, if anyone wants to create programs for non-JB devices with Win RT on board, all he needs - is to make out the program in .msi formfactor. Magnificently!!!
No volume button required. No 2 minute delay after boot. No hardwired addresses - the last remaining one in the .bat file, in winsrv.dll, is obviated by thread injection. Higher stability, because we're not messing with csrss.exe's existing threads. No Internet access needed, because the code can find addresses without symbols.
These are just improvements to make jailbreaking more user-friendly.
Click to expand...
Click to collapse
Heavenly!!! When ordinary users (like me) will obtain user-friendly variant of your product? Next moment - will your variant of JB be persistenet, or non-persistent, just like actual (Netham45)? If even non-persistent, it won't be the problem with those perfect features ))) We'll place it in auto-startup
Netham45
About unsigned drivers. Should unsigned drivers be recompilled for Win RT (ARM), or non-modified drivers for Win7 (8) usage is possible (in .msi variant or by right-button clicking on .inf file) ??? And, also, when your usefull decision with user-friendly interface will be available for ordinary users???
Guys, thanks for your work and for your help from all Win RT users community :good:
netham45 said:
It's also got the benefit of not being automatic at reboot, unlike what he's talking about.
Click to expand...
Click to collapse
I was referring to what he was talking about
Denis_63 said:
Wow, a lot of news, GOOD news!!!
Myriachan
First, that .msi container doesn't need signature for installing - this fact simplifies installation process! And now, if anyone wants to create programs for non-JB devices with Win RT on board, all he needs - is to make out the program in .msi formfactor. Magnificently!!!
Heavenly!!! When ordinary users (like me) will obtain user-friendly variant of your product? Next moment - will your variant of JB be persistenet, or non-persistent, just like actual (Netham45)? If even non-persistent, it won't be the problem with those perfect features ))) We'll place it in auto-startup
Netham45
About unsigned drivers. Should unsigned drivers be recompilled for Win RT (ARM), or non-modified drivers for Win7 (8) usage is possible (in .msi variant or by right-button clicking on .inf file) ??? And, also, when your usefull decision with user-friendly interface will be available for ordinary users???
Guys, thanks for your work and for your help from all Win RT users community :good:
Click to expand...
Click to collapse
We've been able to use MSIs for a while, I documented it in the desktop apps thread, I believe. I've even posted some MSIs (MWB, DosBOX). They're just a pain in the ass to deal with right now, and most people don't feel like it.
His jailbreak will also be non-persistent. The persistence is because we are not saving any changes to Windows files, but only overwriting bits in memory (which are reset on next boot). I would love to have a persistent JB, but we just don't.
Unsigned drivers need to be compiled for Windows RT. That should be obvious, it's an ARM process and kernel-space has no knowledge of any JIT languages, so everything is compiled into assembly before being ran. x86 assembly will not run on ARM.
As far as the kernel exploit, it's available in the latest version of my jailbreak (1.2.0). There are also some other tweaks in there (registry-based startup, cleaned up how I check for admin, etc...), but since there are no ARM-compiled drivers available it's not really required to update right now.
lilstevie said:
I was referring to what he was talking about
Click to expand...
Click to collapse
And I was referring to my jailbreak in relation to his.
His jailbreak will also be non-persistent.
Click to expand...
Click to collapse
Clear... but what about uselessness of "Vol -" button pressing? Its the great step forward, I think :good: Automatical startup will be the solution for non-persisting
but since there are no ARM-compiled drivers available it's not really required to update right now.
Click to expand...
Click to collapse
Sad, but true (c)... but what about non-system, for example, peripheral drivers - printers, scanners etc. Its very simple, does peripheral drivers also need recompilling? :crying:
netham45 said:
And I was referring to my jailbreak in relation to his.
Click to expand...
Click to collapse
Ah right.
Denis_63 said:
Clear... but what about uselessness of "Vol -" button pressing? Its the great step forward, I think :good: Automatical startup will be the solution for non-persisting
Click to expand...
Click to collapse
Personally I think it is a great step back, the step requiring you to press "vol-" is one of the reasons microsoft aren't as interested in patching the exploit at this point in time, the more "Automatical" it becomes, the bigger the chance of it being used malliciously becomes, at which point microsoft will be forced to act (infact it would be rather irresponsible of them to not patch it at the first signs of mallicious use).
Denis_63 said:
Sad, but true (c)... but what about non-system, for example, peripheral drivers - printers, scanners etc. Its very simple, does peripheral drivers also need recompilling? :crying:
Click to expand...
Click to collapse
Yes

Trident Sandbox : Sandbox Scripting IDE

View attachment 2813343
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
This is an effort to make the best out of what Microsoft gave us 'out of the box' with Windows RT as far as on-device scripting and coding.
It is an browser-app development environment which runs within a browser itself. It was originally intended to fill a void in the Windows RT app development ecosystem. Internet Explorer's rendering engine is called Trident (version 7 in IE11), and it is a sandboxed environment, so the 'sandboxing' is at the browser level.
It now supports WinJS 4.0 library, supports linting, code completion, backup and restore and the sandbox api has been reorganized into a namespace-like hierarchy you can traverse with code completion or view an api reference with a keyboard shortcut. Keyboard shortcuts are now rebindable, and for users running directly off their device I now support an in-memory database adapter where you can set up an elaborate database of saves, script and markup units, and data to be backed up and restored as a single file.
All you have to do to install this native web app is visit this web site :
http://www.obeliskos.com/TridentSandbox
This project is hosted on GitHub at :
https://github.com/obeliskos/TridentSandbox
Trident Sandbox now supports the Microsoft WinJS 4.0 framework which used to be intended for JavaScript Windows Store Apps, but now work outside the appstore, in the browser, and are cross-browser compliant. WinJS allows for browser apps which behave like native apps. For more information on the WinJS framework go here : http://dev.windows.com/en-us/develop/winjs.
There are two ways to install Trident Sandbox and both offer advantages over the other so you may want both:
(1) Run off Local Filesystem. For this method, you can just download the attached zip, then right click on it and choose properties and unblock it. Then extract it... when its done you can double click the TridentSandbox.htm file or drag and drop the .htm file onto your desktop Internet Explorer and then make it a favorite. Running off local filesystem you have the ability to make web requests to the internet to grab data.
(2) AppCache install. For this method you just visit this page : http://www.obeliskos.com/TridentSandbox . Wait until the AppCache status changes from 'Downloading' to 'Idle' and then the site will continue to run this 'cached' version indefinitely (even if you have no internet connectivity). Running using this method you cannot make internet request but you can use LocalStorage and IndexedDB... two very useful storage mechanisms.
There is a workaround for making ajax requests using the AppCached install, which may or may not be appropriate for your particular concerns. It is described in the 'Making Data Requests in Hosted/AppCached environment' section of this help page : http://www.obeliskos.com/TridentSandbox/docs/HostingAndAppCache.htm
Upgrading an AppCache version :
If you already have an AppCache for an older version of TridentSandbox, you can upgrade to the latest version using either of the following two methods. (1) go into internet options/settings/caches and databases and delete the old obeliskos.com entry, then revisit the site at link below. If you want to preserve the data you have stored in the TridentDB/IndexedDB, you can visit the site using the desktop Internet Explorer and it will show 'Downloading' and then 'Update Ready', then press F12. This brings up the developer's tools from which you go to the console and type applicationCache.swapCache() and then reload the page... you should be updated.
Additionally (for users of my AppCache site) : When using an appcache website while online it will check for updates by downloading the appcache.mf manifest file... if that file does not exist and the response code is something like file not found, then the appcache will be invalidated. So if you expect/want the appcache site to work even after I may have taken the site down (which I have no intention of doing anytime soon), then you might want to host block the site in your windows hosts file. I believe it would run forever in that mode with no online dependencies (or updates). If you see I have created a new update, you can unblock it to update. The version which is downloaded and run from local filesystem has no such dependencies so this does not apply to the zip download install.
Hosting your own TridentSandbox Server :
You don't need to do this since I offer my own webserver, but if you want to can can host TridentSandbox on your own website. If you just want to host the files on a server of your own and do not need appcache functionality, then edit the TridentSandbox.htm main page and find (near the beginning of the file) the HTML tag and remove the reference to appcache.mf. If you want to use appcache, then leave the html tag at its default. You might need to register mime types for .mf files (text/cache-manifest) and .prg files (application/json). The newly added Awesome Fonts library may also need mime types configured for a few fonts, you can either add these mime types or remove them from the appcache.mf file (and lose offline support for those). You should be able to use F12 on the desktop IE and monitor the Debugger window as it downloads the appcache and if it fails it will usually tell you the file it had trouble with.
Within TridentSandbox, there are Help pages which provide much better overall information.
TridentSandbox comes with some third party javascript libraries which are made available for you to use in your own scripts.... these include jQuery, jQuery-UI, alertify, jqPlot, jqGrid, fullcalendar, dynatree, highcharts, CryptoJS, Loki.JS (simple JSON object database), Metro.JS, Springy, FontAwesome, Pixi.js, EaselJS, Mathjs. It's structured into a file system hierarchy so you can add your own libraries (local filesystem version only) and register them with the main webpage if you want to extend the environment.
To install local filesystem version :
- Download TridentSandbox.zip to an area like your Documents or Downloads folder.
- IMPORTANT : If you are on Windows RT, Windows 8 or 8.1, right click on the downloaded zip file and choose properties... it may say the file came from the web and give you an option to unblock it... unblock it. Then extract it. If you already extracted it you can right click on the TridentSandbox.htm file choose properties and it will have same option to unblock it... so unblock it.
- Go into the newly extracted directory and run TridentSandbox.htm (it will run in either metro or desktop ie, but I prefer desktop ie, which in that case you might need to drag and drop the htm file onto desktop ie program to load (then bookmark).
- If it asks you to enable scripts, choose yes
- You can load samples which are located in the samples subfolder.
- You can save samples into that folder as well as anywhere else... like SkyDrive. Files manually loaded and saved can be located anywhere but assets referenced as urls within your programs need to be in folder hierarchy (at or below the Trident Sandbox web page you loaded).
Downloads (If you prefer to download and run off your device or server) are now available here :
https://github.com/obeliskos/TridentSandbox/releases
Now something really interesting is coming...
deleted
deleted
I updated to version 1.6 which you can either download or run from my hosted AppCache version. This appcache version will download all files to allow you to run offline. Running this appcache version will let you use local storage and indexeddb as well as some other options.
See first post for link to AppCache version or download attachment for local filesystem (or both).
Help system also covers this in detail.
As far as on-device, in-browser scripting environment for Surface/Windows RT, I consider the latest 1.76 version to be 'Done'. I have opened up a github site where I will host future development at :
https://github.com/obeliskos/TridentSandbox
I will continue to run my AppCache site at http://obeliskos.com/TridentSandbox/ and keep it updated since that is the primary method of distribution still... but at github you can download ZIP of source tree (unblock zip if on Windows 8/8/1/RT), extract, and use the same way as the zip download hosted here.
If you want to contribute to development or make change request you can do that at the github site.
I'll still be around here waiting for announcements by netham :victory:
I was trying Trident on my Surface (which is very cool and useful by the way) and I found that Windows RT (not RT 8.1) doesn't have WebGL support so the 3D demos didn't work. This is supposed to be a limitation of IE 10 which comes with the surface. IE 11 which comes with Windows RT 8.1. I was wondering if anyone knows what files I should copy from a WIndows RT 8.1 tablet to get the files necessary for IE 11 to work with WebGl.
Everything else works so well.
Yep that was a new feature Microsoft added for Windows 8.1 (and updated for more complete implementation in 8.1 update 1). For what its worth my Surface 1 upgraded to 8.1 runs the opengl demos fine... so once jb for 8.1 comes out it should upgrade to full functionality. I'll probably put a notice in those samples if I detect rt 8.0.
I do not know about which files are needed, sorry... you might need updated video drivers too.
On an unrelated note, I just discovered that the AppCache version CAN do internet ajax requests. You can go into Tools/Internet Options/Security/Custom Level... and scroll down to the 'Miscellaneous' section and the first 'Access data sources across domains' setting to Enable. You should then be able to make your ajax calls assuming the website allows requests from outside its own domain. Not sure if there is any reason why you would want to leave this disabled, if you are worried you might try the prompt setting to approve requests... most times this is enforced at the web server level. I'm pretty sure the same workaround applies to IE 10 but I can't test that.
So while I am pretty much feature complete on the local filesystem version, I will probably continue to update my AppCache site (and github) with new features in the future. I will probably update the file hosted here to a 1.82 version with updated help system and samples to clear this up in a few days... after that I will probably just update the github site (with its zip download).
The reason for "Access data sources across domains" usually being restricted is that sites which aren't explicitly configured for safe CORS (Cross-Origin Resource Sharing) may leak information to an attacking website (things like authentication credentials, for example) if the browser doesn't check to ensure CORS is safe before sending the request. Basically, it breaks the same-origin policy which protects sites from one another. If you're signed into A.com and visit B.com, and B.com wants to get resources from A.com, the browser usually first checks with A.com to see if this is permitted. Disabling that check is very dangerous.
That sounds like good advice...
This is the guidance I have put in the help pages starting in version 1.82 :
Making Data Requests in Hosted/AppCached environment : By default, you can only make AJAX calls to websites to get data when you are running off of your local filesystem (zip file distribution). If you are running Hosted or AppCached, this ability to make AJAX requests is disabled by default. There is a workaround (which I will describe here) that may or may not be appropriate depending on how you use it. In Internet Explorer, if you go into Tools/Internet Options/Security, you have Zones like 'Internet', 'Trusted', 'Restricted', 'Intranet'. If you do not currently have sites in the 'Trusted' Zone, then you can add the Trident Sandbox AppCache domain (http://www.obeliskos.com) to that zone. In order to do that you will have to disable the checkbox 'Require server verification (https for all sites in this zone' since my AppCache site does not support SSL. Now, if the 'Trusted' Zone is highlighted click on 'Custom level...', scroll down to the 'Miscellaneous' section and set the 'Access data sources across domains' option to 'Enable' for your data requests to work. It is important to not to apply this setting to the 'Internet' Zone for security purposes that would open this feature to pretty much every site you visit. If you already have sites in your 'Trusted' zone you probably don't want to do this, and you should just do this temporarily when you need internet access not as a permanent policy. Do not visit any untrusted sites while the setting is active. When you are done you can re-apply the https: required checkbox and set the 'Access data sources across domains' back to disabled. If you host Trident Sandbox yourself on a server with https enabled and your site was the only site in the Trusted zone, then you could safely leave it enabled all of the time. That said, and all warnings duly noted, this workaround opens the possibly of implementing all sorts of creations which require internet ajax web requests -and- data storage capabilities.
Now including WinJS framework
I now include and support Microsoft's WinJS library which allows browser apps to behave more like native apps. This WinJS library originally (and still is) used to create JavaScript AppStore apps, but it has been open sourced and made available to use in regular browser apps, as well as now having cross browser support.
If you visit my new landing page at : http://www.obeliskos.com/TridentSandbox you will be able to see some examples (HieroCryptes Notepad, Antikythera, and JSON Databank) which use a few of the new controls.
To see all available controls included with this WInJS library, you can try out Microsoft's own sandbox here : http://try.buildwinjs.com/
WinJS provide many UI controls like Hub, ListView, AppBar, NavBar, FlipView, ContentDialog, Pivot control, toggle buttons, as well as structural mechanisms like data binding, promises, javascript scheduler, etc.
If you have an old version of TridentSandbox it should update automatically and afterwards you may need to reload the page and you should be taken to a new landing page. If your version is very old, you might to delete the old appcache from (in Internet Explorer) Settings/Internet Options/Browsing History/Settings/Caching and Databases.

Wayland server for Android

ABANDONED
Hi! Does anyone here use Linux desktop distributions in chroot environment on Android device?
I am developing wayland protocol server for Android devices. If anyone is interested in checking my project, latest version of apk is always available here:
ftp://ftp.drivehq.com/mogryph/sparkle/
Currently I am only focused on running Xwayland as client. Also apk supports audio output.
Simplest instruction:
1. Android 6 or newer required, busybox required, root required
2. Prepare linux distribution in directory, image or on partition. Make sure you have Xwayland installed in it. Make sure you specify which DE to run (or at least xterm) in ~/.xinitrc
3. Install and start sparkle.apk
4. Press "edit user.sh", uncomment (remove #) line starting with start_generic_container. Change rest of this line to match your device:
first arg - image or partition where distribution is installed. If distribution is installed in directory and mouting is not needed, leave this arg unchanged.
second arg - mount point or directory with distribution. If you use mounting (first arg), this arg can be left unchanged.
third arg - name of the user which will be used to start Xwayland and DE. Its better to specify non-root. Also this is the user who must have .xinitrc in his home dir (see step 2).
5. Save user.sh and click "Start".
6. Any problems and crashes will be reflected in the log.
If you want audio output:
1. Compile and install driver from pcm_sparkle.tar.gz in your distribtion
2. cp 1.asoundrc ~/.asoundrc
If you have blinking problem, change upload_mode from 1 to 2 in settings. If you have bad performance, setting no_damage to true may help, but in most cases no_damage=false is better. Fastest upload mode is 0 (if it works).
If you don't trust me and don't want to give sparkle root permissions (I perfectly understand this) you don't have to. Also you can do without busybox.
But in this case, you need to understand and do a lot of things. Check sparkle's user.sh to get idea about what needs to be done. Basically:
1. You need to make /data/data/com.sion.sparkle/files accessible from inside chroot container. You can use bind bound.
2. Make sure you have tmpfs mounted over /tmp in container.
3. You may need to change selinux context on /tmp to match sparkle's context or disable SELinux.
4. You need to create new directory in /tmp, symlink sparkle's wayland socket from /data/data/com.sion.sparkle/files/wayland-0 to this dir. And export XDG_RUNTIME_DIR to point to this dir. Dir must be (ch)owned by user who will be running Xwayland and DE.
5. After all this, you can try to start Xwayland and your DE.
new version
New version
rgho.st/8Fbz64Rxj
Added x86 and x86_64 support. Actually it is rewritten almost from scratch but x86 support is the only thing others can notice...
Hello! This project is interesting. I tried you app and it works on my Xiaomi Redmi Note 4X(chromium and glmark from chrooted environment works very well)! Can you publish source code on Github, because it really interesting project?
Also I'm interested, please post it on github!
Did you put this up on github or move this thread? Looks very interesting.
1
Argh, sorry, I decided to abandon this project. You are free to delete thread. Also no copyleft-licensed components were used so I don't have to bother releasing sources.
Hentacler said:
Argh, sorry, I decided to abandon this project. You are free to delete thread. Also no copyleft-licensed components were used so I don't have to bother releasing sources.
Click to expand...
Click to collapse
Check your PM please!
1
Hello again.
For last two weeks I was rewriting it from scratch (yes. again... yes, third time).
Probably need another week to make it stable.
Currently I am not sure it runs on any device except my own 5-year old phone (LineageOS 14).
I will maintain last version here:
ftp://ftp.drivehq.com/mogryph/sparkle/
There is no English documentation, but you can see script "user.sh" to get idea about how to start xwayland. In most cases it should be enough to edit few lines in that script to make it work on another device. If you execute this script on your device with "install" argument, it is supposed to place itself into sparkle's directory and sparkle is supposed to run it ("start" function) automatically. Sparkle doesn't request root unless script does.
Here is video of sparkle working:
https://www.youtube.com/watch?v=tOSFYxCF7Q8
But it seems that KDE + video recording was too much for my old phone
Still, if you going to see video, don't close it until 2:00 where I turned of composition which caused lags.
Also on device everything looks much smoother than on video, even after 2:00.
When I watch fullscreen (1280x720) video on my device, sparkle + xwayland together add just 5% of CPU load (20% load of single core).
Thats it I guess... I tried to to discuss sparkle on 4pda.ru (russian forums), but got very bad reception. "xsdl is perfect, dont reinvent the wheel" they say. So I started to hate humanity and I decided to make sparkle personal project. Also this is last time I am solving reCAPTCHA to leave post on XDA.
Still alive
We are still alive. I've changed first post to reflect actual state. Now sparkle supports audio, auto-mouting containers and is lot more stable.
Yet there are still many things I want to improve in sparkle's core before adding new functions.
Also there are few demo videos on ftp.
Amazing!
Working great on my redmi 6 pro. Stock miui 9.9.3 rom. With linuxdeploy and sparkle from your ftp. No lag on visual and sound. My Linux distribution is alpinelinux arm64 arch.
Since first time I see your posting on 4pda. I'm interested in it. And finally it's on xda.
Thanks dev.
---------- Post added at 02:52 AM ---------- Previous post was at 02:44 AM ----------
For anyone interested in the topic. Please follow the instructions in documentation from ftp. And Translate it to eng from rus.
This sounds amazing! Just curious, is it related to https://github.com/twaik/sparkle ?
I now have it working very well on my Samsung Tab S3 using Xwayland and a tiling window manager. Firefox runs amazingly well!
Is it meant to be used only with Xwayland or will it also work with native Wayland applications?
BTW, I think if you open sourced this project and promoted it a bit, it could become quite popular. It's basically the first way to run X11 GUI applications on Android devices at full speed. If you set up a donation link, you could also get compensated for your time and effort. I'll personally contribute $20 if it's open sourced, and I'm sure others will chip in as well.
robsmith11 said:
This sounds amazing! Just curious, is it related to https://github.com/twaik/sparkle ?
Click to expand...
Click to collapse
Thanks for feedback. Nice to hear that someone managed to start this thing
Twaik's repository is clone of my very very old version of sparkle. I made that version years ago when I was just starting to learn linux and C++. Sparkle was rewritten from scratch two or three times since that version. And (I believe) current version is much better.
Regarding making it open source... Few months ago I had to find real job. Can't spend much time on personal projects any more. But I have my own strange programming style and my own vision of what sparkle should be. Not sure I want others to paint on my picture. It's probably all because of Twaik! I hate how he used old open source version of sparkle. He did terrible things to it, outraging all my beliefs Sorry!
P.S.: Yesterday I've uploaded another apk to my ftp. The file is called "sparkle-testing.apk". This version is much newer and has many fixes. But I've also changed to many things since tested version including some fundamental changes. No guarantee it will run at all on other devices. Interest is mega low and I get no test reports at all.
Hi Hentacler, I've just found your project - it looks really promising. Unfortunately, the only link currently working on this thread is to github. Is this project still live?
I have a samsung galaxy note 10+, and am using it as a laptop replacement. In addition to the android apps using Samsung Dex (Samsung's desktop solution), I have several linux distributions installed inside a chroot using userLand - so far, its working great. I'd be keen to give you project a try if it's still live, and am happy to help out with testing from my device.
Re open source - while I like your project, I'm not super interested in investing time into something that's not open sourced - I appreciate your concerns about wanting to maintain the direction, but having transparent development is pretty important to me. Is Twaik's fork of your project a better place to go?
Cheers.
tillum said:
Hi Hentacler, I've just found your project - it looks really promising. Unfortunately, the only link currently working on this thread is to github. Is this project still live?
I have a samsung galaxy note 10+, and am using it as a laptop replacement. In addition to the android apps using Samsung Dex (Samsung's desktop solution), I have several linux distributions installed inside a chroot using userLand - so far, its working great. I'd be keen to give you project a try if it's still live, and am happy to help out with testing from my device.
Re open source - while I like your project, I'm not super interested in investing time into something that's not open sourced - I appreciate your concerns about wanting to maintain the direction, but having transparent development is pretty important to me. Is Twaik's fork of your project a better place to go?
Cheers.
Click to expand...
Click to collapse
ftp://ftp.drivehq.com/mogryph/sparkle/
Link to FTP should work and there you can get two versions:
sparkle.apk - old version, but confirmed to work by 3-4 people.
sparkle-testing.apk - latest version, but only briefly tested by me.
I don't ask anyone to invest anything... Sparkle doesn't request root access or any other dangerous permissions (unless you enable automatic container mounting and starting) so it's safe to try for anyone who wants.
Btw, somewhere between these two versions I've replaced BASH container initialization script with LUA version. That was probably a bad idea. LUA script is harder to start directly as root and hacks I used may not work (currently may even cause application freeze if root access is denied). Going to revert to BASH probably. But this only touches people who want sparkle to mount container and launch everything automatically on single button press.
p.s.: Why I need to solve captcha every time I post something?
Thanks for the new release! I've updated and everything seems to be working without any changes on my Samsung Tab S3 with chroot and Arch Arm Linux.
Your changes also solved the flickering for me! The old version would flicker the screen whenever my keyboard's trackpoint activated, but it's not flickering at all any more. Performance seems to be about the same.
I think this could be quite popular, but not many people know about it. Perhaps a post on Hacker News or Reddit would raise awareness.
I understand your position on open source and maintaining control. One idea if you haven't already considered it is releasing the code with a restrictive license that forbids any forks. But either way, I'm enjoying being to properly use X11 on my tablet.
BTW, have you tried any native Wayland compositors? I don't really understand the Wayland ecosystem that well. I gave Sway a brief try, but it didn't seem to work. I've only been using XWayland.
@Hentacler Thanks for your reply! Very keen to get this working, but having a few issues. I'm unsure how to configure the user.lua file - I'm using your latest apk.
I have a non-rooted device, and am running archlinux under termux. Works fine with xsdl. I have installed xorg-server-wayland for X11. I'd appreciate any advice you have.
@robsmith11 Are you able to share how you got this working on Arch? Thanks!!!!
tillum said:
@Hentacler Thanks for your reply! Very keen to get this working, but having a few issues. I'm unsure how to configure the user.lua file - I'm using your latest apk.
I have a non-rooted device, and am running archlinux under termux. Works fine with xsdl. I have installed xorg-server-wayland for X11. I'd appreciate any advice you have.
@robsmith11 Are you able to share how you got this working on Arch? Thanks!!!!
Click to expand...
Click to collapse
I am not sure it is possible to use sparkle without root...
Sparkle makes it's directory accessible for everyone (chmod 777). Before Android 8 or 9 this was enough and xwayland from termux was able to connect to sparkle. Here is how people used to start it:
export XDG_RUNTIME_DIR=/data/data/com.sion.sparkle/files
Xwayland
But newer versions of Android brought more restrictions and termux can no longer connect to sparkle. These new restrictions are implemented using SELinux if you know what it is. Applications now have different security contexts.
But that is not all. Newest versions of android brought even more terrible meaningless restrictions effectively "killing" applications like termux and many others.
In short, from now one applications are not allowed to execute code (binary) that comes from "untrusted" sources. Termux used to download a lot of such code from it's own repositories. And now it can't. We can't even unpack binaries from assets.
So I can only help with rooted devices.
P.S. Please forgive me, but I am leaving this website. Making people solve recaptcha every time they want to post something is unacceptable level of contempt.
My mail: [email protected]
Thanks for that, will have a play. I could always just root my device. Weird about recaptcha, not having this issue. Currently through termux I have access to the whole sdcard, and am able to download packages (and distros) in it - will have a play and see what else is possible.
@tillum
I basically just followed the instructions on the first post for using Sparkle without busybox. I didn't need to modify the Lua scripts.
I'm guessing SELinux may be a problem without root. I'll try setting it up without root when I have a chance later.

Categories

Resources