Next Generation Browser-based Process Memory Analyser.
All data is bundled in one binary.
Place your PC and iphone in the same network.
Place memory-server and Entitlements.plist in /usr/bin.
Connect to the iphone via ssh.
cd /usr/bin
ldid -SEntitlements.plist memory-server
./memory-server
The httpserver starts at port 3030
.
Set up the same way as FridaGadget to force loading of libmemory_server.dylib.
Connect to the network from Browser as usual.
Log output is written to NSLog.
Connect to memory-server from a browser on your PC.
http://{iPhone's ip}:3030/index.html
The following top page will be displayed.
![img1](https://private-user-images.githubusercontent.com/96031346/318277648-01d846b5-df98-4925-9b3c-b63d66b10d89.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQxMjI0MzEsIm5iZiI6MTcyNDEyMjEzMSwicGF0aCI6Ii85NjAzMTM0Ni8zMTgyNzc2NDgtMDFkODQ2YjUtZGY5OC00OTI1LTliM2MtYjYzZDY2YjEwZDg5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIwVDAyNDg1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY1YTk1MDUwNjBmYTMzMmQ3NTJlZTc1MjYwNTA2YWNhOTI5ODViNzY3ZWM5YTJkY2VkNWQ3OTJmOGRjMjJiZWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.bG0HD4k_D0i2MOW43tNWTZpFaS_mGzVnRntnq-0AOI4)
Enter the ip of the iPhone in the 「IP Address」 field and press the 「Connect」 button.
Next, select a process and press the 「Open Process」 button.
![img2](https://private-user-images.githubusercontent.com/96031346/320213113-4aa7bf02-c97a-4e1b-97da-8778e6017550.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQxMjI0MzEsIm5iZiI6MTcyNDEyMjEzMSwicGF0aCI6Ii85NjAzMTM0Ni8zMjAyMTMxMTMtNGFhN2JmMDItYzk3YS00ZTFiLTk3ZGEtODc3OGU2MDE3NTUwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIwVDAyNDg1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQzNWY3NmFjYTYxODcwYTdmZGM5YzQ0Y2MwM2Q5OTNmNGZmOTI5MmVmODhjMDE3MzQ4MmQ5Zjk2NjIwY2YyNjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.8zezsf76oW0klByCsfLacNk132OBDp9i-O6-Fw8dU6s)
![img3](https://private-user-images.githubusercontent.com/96031346/320213202-f230d850-646f-4fd9-8ee4-4265f2e20e1a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQxMjI0MzEsIm5iZiI6MTcyNDEyMjEzMSwicGF0aCI6Ii85NjAzMTM0Ni8zMjAyMTMyMDItZjIzMGQ4NTAtNjQ2Zi00ZmQ5LThlZTQtNDI2NWYyZTIwZTFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIwVDAyNDg1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM1NDJjMTQxODQ5YzZkZWNiMmMzZWIyODVmNDgyZWYyYTcyMmVlZmE5ZTgzMGQxYTEyODg4NWU0YWZjMzU3YzImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.nToet31uKQDHcUy_X_ybpewfC0e3w5LSvZLNOqoSspw)
Network connection is identical to iphone.
cd /data/local/tmp
su
./memory-server
Set up the same way as FridaGadget to force loading of libmemory_server.so.
This method allows the android device to operate on its own.
![img4](https://private-user-images.githubusercontent.com/96031346/322521569-0a629a2c-6401-4f2c-b67a-bf8b9ad3d682.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQxMjI0MzEsIm5iZiI6MTcyNDEyMjEzMSwicGF0aCI6Ii85NjAzMTM0Ni8zMjI1MjE1NjktMGE2MjlhMmMtNjQwMS00ZjJjLWI2N2EtYmY4YjlhZDNkNjgyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIwVDAyNDg1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZlMzgyMGZiNzM2YmQ0OTU3MGYzNTJhNTUyY2QyOGQ4NjliZmIwMzNhMmQ4Y2M3Y2I0OWE2YmU2MmIzODRiYWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-pR3Cb_tPBPsSeUW4n-xSovSQpARW9Aia_-MNVKczkw)
To build the project using GitHub Actions, follow these steps:
-
Fork this repo
-
Go to the "Actions" tab in your forked repository.
-
In the left sidebar, click on the "Build" workflow.
-
Above the list of workflow runs, click on "Run workflow".
-
In the dialog box that appears:
- Select the branch you want to run the workflow on (usually "main").
- Enter a version tag for this build (e.g., "v1.0.0").
-
Click "Run workflow" to start the build process.
-
The workflow will start running, and you can monitor its progress in the Actions tab.
-
Once the workflow completes successfully, you can download the built artifacts:
- Go to the completed workflow run.
- Scroll down to the "Artifacts" section.
- Click on the artifact names to download:
memory-server-ios-arm64-[version]
memory-server-android-arm64-[version]
Note: Make sure you have the necessary permissions in your forked repository to run workflows and access artifacts.
For more information, please visit Wiki