I'd like to see what kinds of API/framework calls are being made by an arbitrary iOS app. Is there some sort of mechanism or tool that I can use to do this?
For clarification, the term you are looking for is hooking. It can be easily be done on a Windows system.
Excerpt from Wikipedia:
ptrace is a system call found in several Unix and Unix-like operating systems.
Given the design of iOS running one app at a time, I don't believe you can do this. Plus your app will be running in a sandbox environment with each app having it's own virtual address space.
Related
I create simple CLI app on Elixir. Can i release my app and use it on the other PC without Elixir and Erlang? I read a few materials on the CLI and didn't find any release instructions.
You can try this (e.g. using Distillery) but it's not guaranteed that the distributed app will work on all other systems (even within the same OS). So, it's OK if you want to do this for one or two friends but it's a bad idea to publicly distribute your software in this manner.
I've asked this on Adobe's LR SDK forum, thought I'd ask here as well.
I want to create a plugin for Lightroom 6+ that allows two-way communication to take place between a LR plugin and an iOS app. The iOS device would be on the same local network.
What is the best method of accomplishing this? I was thinking about using LRSocket, this is the most direct method? I assume with this method the iOS app would need to act as the server and the LR plugin would be the connecting client? But, all the documentation and examples I’ve found, regarding general LRSocket usage, imply that localhost is used. This would make direct communication with an iOS device over WiFi impossible if it can only use localhost?
Any information would be appreciated.
I've just started out trying to do the same thing, albeit with an Android app, and run into the same (apparently insurmountable) issue that LrSocket.Bind only seems to be able to bind to the localhost interface.
The only way I can think to get around this is to have an intermediary port forwarder on the LR host OS that forwards traffic between localhost:port and ethernet/wifi:port
You could use ssh on a mac, I guess, and there are port-forwarding applications for Windows (ssh is allegedly coming soon). PassPort (an old application from the XP era still seems to work).
It's a bit....messy, though.
Another option would be to use LrHttp.get (and/or .post), but that's going to have to poll for information, and may be a bit laggy for some requirements.
I'm running Arch Linux and the Bluez libraries on my computer, and I'm trying to connect to an iPad [w/ Retina] over BLE. I can see the iPad in bluetoothctl, pair it, trust it, and connect to it. My question is in two parts:
1) I want to be able to select the attributes, more specifically for the MAP service. However, running
list-attributes
either during or outside of the connection returns no information.
2) My iPad cannot see the computer like it can see the iPad, either through the Settings --> Bluetooth menu or the CBCentralManager in an app that I'm developing. My computer is set to be discoverable and pairable forever, but it just doesn't find it.
How would I be able to connect to the iPad appropriately, if there even is a way?
Disclaimer to anyone using BlueZ user space tools:
OP mentioned in the comments that he utilized hcitool. It's best not to use hciconfig nor hcitool as these are in the process of
being phased out of BlueZ and have been unmaintained for a very long
time. They are prone to errors and the raw calls these programs make are blocking and cause interference with other Bluetooth applications.
BlueZ publishes some methods in order for users to use its Bluetooth (LE) functionality for applications or tasks: DBus and a lower-level approach. Programs included in the BlueZ user space package include bluetoothctl, which uses DBus for bluetooth related tasks, such as scanning, advertising and GATT. Tools like btmgmt, which can be considered a maintained version of hcitool, use the lower level libraries. BlueZ recommends using the DBus API for applications. Be sure to have compiled the source code and have followed the recommended instructions to use the mentioned tools. Also always check the licensing on mentioned tools and source files as some can not be included in proprietary software.
DBus-less solution:
If using bluetoothctl or DBus doesn't work out for you, I would suggest you use btmgmt. It can be found in the /tools folder of the user space source code.
If you're looking for or wanting to include GATT-related tasks, you can use btgatt-client to act as a GATT Client or btgatt-server to act as a GATT server from that same /tools folder.
These do not use DBus, nor the corresponding Bluetooth Daemon (bluetoothd) like bluetoothctl does
DBus solution:
What is most likely the cause of you not seeing services using bluetoothctl, however, is that you are not running the aforementioned bluetooth daemon with the -E flag (experimental). Currently, all GATT-related functionality is only usable when running in this experimental mode. (They're working to get it out of experimental-only mode) I think because it's still being developed. If I recall correctly BlueZ can also be configured/installed in this experimental mode, so that no manual actions are required.
To restart the BlueZ Daemon (bluetoothd) with GATT enabled run:
sudo service bluetooth stop && bluetoothd -E
In most cases, when stopping the bluetooth service, your bluetooth controller will power down and bluetoothctl won't respond to user input/freezes on startup. If this is indeed the case, use btmgmt and issue a power on to power the bluetooth controller again.
To VIEW the MAP service attributes, use list-attributes to view them. Ensure proper spelling. To SELECT the MAP service, you need to list-attributes then select-attributes, in that order.
It sounds like your ipad is having a problem. Perhaps try turning it off and on again. Make sure you have bluetooth enabled!
There is always a way!
Is there an api for chrome apps that would allow developers to read (and/or write) environment variables?
Thanks.
No. Chrome Apps are sandboxed, so they shouldn't be able to make those kinds of persistent changes to the system, and they are supposed to be portable across host operating systems, so system-specific concepts like environment variables are generally unavailable.
Sorry, no.
There is another question that is perhaps a little relevant: I want to create a native app that runs in all OS, and can run terminal commands
I want to find one how much memory a bunch of processes are using on the iPhone.
Is there a way to do that programmatically?
Thanks.
AFAIK iOS developer tools will not allow you to check 'other' process memory consumption. You can't ask the OS information about the entire system, but not specify processes. :(
You can, anyways, check that memory by using a Jailbroken device. I do it, using:
ssh access (installing openssh first, off course) and using top or ps aux
system information (from Cydia) SystemInformation
Maybe there is another tool, but I was unable to find (and I tried!) one that give you exact information of each running process.
ps: remember that iOs devices use a default root password as alpine and you should change it on your first access to avoid security risks.