Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Esign won’t work #146

Open
Blockr22 opened this issue Sep 2, 2024 · 10 comments
Open

Esign won’t work #146

Blockr22 opened this issue Sep 2, 2024 · 10 comments

Comments

@Blockr22
Copy link

Blockr22 commented Sep 2, 2024

Describe the issue

I tried latest version from https://esign.yyyue.xyz/
But it crashes & won’t open. My main goal is to inject tweaks into decrypted IPA’s. I m not sure if live container can already do that & if yes, how ?
I see tweak section in live container itself but can’t figure out what to do there.
Therefore i was trying esign but it wont work.

Instructions to reproduce

Just install from above link & try for yourself

What version of LiveContainer are you using?

2.1.2

Other

No response

@khanhduytran0
Copy link
Owner

Esign is not a supported installation method. LiveContainer requires the get-task-allow entitlement for both JIT and JIT-less which is only available to developer certificates.

@khanhduytran0
Copy link
Owner

khanhduytran0 commented Sep 2, 2024

In other hand, the esign app itself, when running in LiveContainer, unknowingly exits itself and I have yet to figure out why.
(pretty sure you meant this instead of that above comment, was reading it too fast)

@Blockr22
Copy link
Author

Blockr22 commented Sep 2, 2024

Yes, esign exits itself. And would be great if it can work. Thnx.

@ivoidcat
Copy link

ivoidcat commented Oct 8, 2024

+1

1 similar comment
@fredystar200
Copy link

+1

@Cyosai
Copy link

Cyosai commented Dec 8, 2024

+1, agree

@hugeBlack
Copy link
Collaborator

hugeBlack commented Dec 23, 2024

Well, I managed to make ESign run in LiveContainer by directly modifying its binary. Not sure whether the modification will cause any problem since signing seems to be working correctly

It seems that ESign did some check in its _MOD_INIT_FUNC, which fails in LiveContainer. So I changed its flag of __mod_init_func section so these initializers are skipped and ESign can launch.

Here's a script to perform the patch:

Open a shell in the same directory as the ESign ipa, make sure its name is esign_5.0.2_unsigned.ipa
Run the script and you'll find the patched ipa named esign_5.0.2_patched.ipa

tar -xf esign_5.0.2_unsigned.ipa
cd Payload/ESign.app/
FILE="ESign"
PATTERN="5f5f6d6f645f696e69745f66756e63"
OFFSET=64
NEW_BYTE="ff"
echo "Patching"
MATCH_OFFSET=$(xxd -p "$FILE" | tr -d '\n' | grep -bo "$PATTERN" | head -n 1 | cut -d: -f1)
ACTUAL_OFFSET=$((MATCH_OFFSET / 2 + OFFSET))
printf "\\x$NEW_BYTE" | dd of="$FILE" bs=1 seek="$ACTUAL_OFFSET" count=1 conv=notrunc status=none
echo Patch Done! Packaging...
cd ../../
tar -cf esign_5.0.2_patched.ipa Payload/
rm -r Payload
echo Done!

@Cyosai
Copy link

Cyosai commented Dec 23, 2024

hugeBlack, thank you so much for investigating this issue and fixing it!)

@xsmashx88x
Copy link

Well, I managed to make ESign run in LiveContainer by directly modifying its binary. Not sure whether the modification will cause any problem since signing seems to be working correctly

It seems that ESign did some check in its _MOD_INIT_FUNC, which fails in LiveContainer. So I changed its flag of __mod_init_func section so these initializers are skipped and ESign can launch.

Here's a script to perform the patch:

Open a shell in the same directory as the ESign ipa, make sure its name is esign_5.0.2_unsigned.ipa Run the script and you'll find the patched ipa named esign_5.0.2_patched.ipa

tar -xf esign_5.0.2_unsigned.ipa
cd Payload/ESign.app/
FILE="ESign"
PATTERN="5f5f6d6f645f696e69745f66756e63"
OFFSET=64
NEW_BYTE="ff"
echo "Patching"
MATCH_OFFSET=$(xxd -p "$FILE" | tr -d '\n' | grep -bo "$PATTERN" | head -n 1 | cut -d: -f1)
ACTUAL_OFFSET=$((MATCH_OFFSET / 2 + OFFSET))
printf "\\x$NEW_BYTE" | dd of="$FILE" bs=1 seek="$ACTUAL_OFFSET" count=1 conv=notrunc status=none
echo Patch Done! Packaging...
cd ../../
tar -cf esign_5.0.2_patched.ipa Payload/
rm -r Payload
echo Done!

no chance you can post the ipa here eh?

@UzawaReisaQwQ
Copy link

UzawaReisaQwQ commented Jan 16, 2025

Thanks to @hugeBlack for providing the script, but it seems that it cannot be used in CloudStudio's online environment. I have made some modifications myself, as follows:

echo "Extracting IPA..."
unzip -q esign_5.0.2_unsigned.ipa -d esign_unpacked || { echo "Failed to extract IPA"; exit 1; }
cd esign_unpacked/Payload/ESign.app/ || { echo "Target directory not found"; exit 1; }
FILE="ESign"
PATTERN="5f5f6d6f645f696e69745f66756e63"
OFFSET=64
NEW_BYTE="ff"
echo "Patching"
MATCH_OFFSET=$(xxd -p "$FILE" | tr -d '\n' | grep -bo "$PATTERN" | head -n 1 | cut -d: -f1)
if [ -z "$MATCH_OFFSET" ]; then
    echo "Pattern not found in the file."
    exit 1
fi
ACTUAL_OFFSET=$((MATCH_OFFSET / 2 + OFFSET))
printf "\\x$NEW_BYTE" | dd of="$FILE" bs=1 seek="$ACTUAL_OFFSET" count=1 conv=notrunc status=none
echo "Patch Done!"
echo "Packaging..."
cd ../../
zip -qr esign_5.0.2_patched.ipa Payload || { echo "Failed to package IPA"; exit 1; }
rm -rf esign_unpacked
echo "Done!"

Image

This is the latest version of ESign IPA file that I have patched. Remember to remove the. zip suffix:

esign_5.0.2_patched.ipa.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants