Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 09:22
    wortel-za edited #2956
  • 09:17
    wortel-za opened #2956
  • Nov 26 11:00
    iBotPeaches labeled #2955
  • Nov 26 11:00
    iBotPeaches commented #2955
  • Nov 26 05:24
    cronel opened #2955
  • Nov 25 14:45
    r6680jc commented #2918
  • Nov 25 13:50
    RenateUSB commented #2918
  • Nov 25 13:40
    RenateUSB commented #2918
  • Nov 25 13:30
    RenateUSB commented #2918
  • Nov 25 06:11
    portorwang commented #1507
  • Nov 24 19:49
    RenateUSB commented #2918
  • Nov 24 18:00
    r6680jc commented #2918
  • Nov 24 16:19

    iBotPeaches on gh-pages

    fix: 2.70 is 2.7.0 (compare)

  • Nov 24 16:15

    iBotPeaches on gh-pages

    feat: release 2.7.0 (compare)

  • Nov 24 16:04

    iBotPeaches on master

    build: rename 2.6.2 to 2.7.0 build: version bump (2.7.0) build: start new dev cycle (2.7… (compare)

  • Nov 24 16:04

    iBotPeaches on v2.7.0

    (compare)

  • Nov 24 15:05

    iBotPeaches on gh-pages

    style: correct markdown for #29… (compare)

  • Nov 24 14:32

    iBotPeaches on gh-pages

    style: correct markdown for #29… (compare)

  • Nov 24 12:11

    iBotPeaches on gh-pages

    docs: update changelog for #2952 (compare)

  • Nov 24 12:10

    iBotPeaches on gh-pages

    docs: explain range of buildabl… (compare)

random-access-exomemory
@random-access-exomemory:matrix.org
[m]
Thanks, I'm checking it out noq
Now*
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
Wait, try doing --use-aapt2 when rebuilding
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
That flag apparently rebuilds the apk using a different method
So I think it's worth a shot
random-access-exomemory
@random-access-exomemory:matrix.org
[m]
Oh? Will try
random-access-exomemory
@random-access-exomemory:matrix.org
[m]
Trying it now 👍
vincetheprogrammer same error :/
W: /data/data/com.termux/files/usr/tmp/brut_util_Jar_141041913573869719696425869119538060698.tmp[1]: ELF: inaccessible or not found
W: /data/data/com.termux/files/usr/tmp/brut_util_Jar_141041913573869719696425869119538060698.tmp[47]: syntax error: unexpected ')'
brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [/data/data/com.termux/files/usr/tmp/brut_util_Jar_141041913573869719696425869119538060698.tmp, compile, --dir, /data/data/com.termux/files/home/discord-patcher/discord/res, --legacy, -o, /data/data/com.termux/files/home/discord-patcher/discord/build/resources.zip]
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
Snowfall
Yes
Lol
But hmm, isn't that the same as the first error you got?
random-access-exomemory
@random-access-exomemory:matrix.org
[m]
It is
Hold on, let me get the code for what I'm doing
(It's all handled in a python script)
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
Okie
random-access-exomemory
@random-access-exomemory:matrix.org
[m]
#!/usr/bin/python3

from os import walk, path, chdir, system
from json import load as jload

with open('settings.json') as f:
    config = jload(f)

print("Downloading `discord.apk`....")
code = system(f'wget {config["download_url"]} -O discord.apk -o download.log')
if code != 0:
    print("Something went wrong while downloading the file, check `download.log`")
    raise SystemExit(code)
print("APK downloaded\nDecompiling APK...")
if not config['package_name']:
    system('apktool d -r discord.apk')
else:
    print(f"Custom package name will be `{config['package_name']}`. This may take longer to decompile and build.")
    system('apktool d discord.apk')
chdir('discord')
print("\nDecompiled the apk, beginning patching process.")

# Things that need some renaming to actually work correctly should be edited and reviewed here every update
bugfixes = [
  ('res font', 'res/font'),
]

# Basic replacements throughout the code to replace discord routes with fosscord routes
# NOTE: Order of replacements is VERY important and will probably have to do stupid stuff to make it customisable
replacements = [
  ('https://cdn.discordapp.com', 'https://'+config['cdn_url']),
  ('https://gateway.discord.gg', 'https://'+config['gateway_url']),
  ('https://discord.com', 'https://'+config['base_url']), # discord.com to the base url of settungs.json
  ('https://discordapp.com', 'https://'+config['base_url']), # Extra change just in case discordapp is still used in the code somewhere
  ('https://discord.gg', 'https://'+config['invite_url']), # discord.gg to the invite url
]

if config.get('debug'):
    replacements.append(("DEBUG:Z = false", "DEBUG:Z = true")) # Enables debug if it's true in the config

# TODO: Potentially add support for patching files with .patch files?

system("mv AndroidManifest.xml ..")

def patch(folder):
    for root, _, files in walk(path.join('.', folder)):
        for file in files:
            fpath = path.join(root, file)
            try:
                with open(fpath) as f:
                    data = tmp = f.read()
                for bugfix in bugfixes:
                    data = data.replace(*bugfix)
                for replacement in replacements:
                    data = data.replace(*replacement)
                if tmp != data:
                    with open(fpath, 'w+') as f:
                        f.write(data)
                    print(f"Applied patches to `{fpath}`")
            except UnicodeDecodeError:
                pass

patch('smali')
patch('smali_classes2')
patch('smali_classes3')

system("mv ../AndroidManifest.xml .")

#if config['package_name']:
#   with open('AndroidManifest.xml') as f:
#        manifest = f.read()
#    manifest = manifest.replace(config['original_package_name'], config['package_name'])
#    print("Applied patches to `AndroidManifest.xml`")
print("\nFinished applying patches\n\nRecompiling APK...")
chdir('..')
system('apktool b --use-aapt2 discord/ -o fosscord.unsigned.apk')
print("\nRecompiled APK.\nChecking if keystore exists...")
if not path.exists('keystore.jks'):
    print("\nNo keystore exists, creating one...")
    system('keytool -genkey -v -keystore keystore.jks -keyalg RSA -keysize 2048 -validity 10000')
print("\nSigning APK...")
system('apksigner sign --ks keystore.jks --out fosscord.signed.apk fosscord.unsigned.apk')
print("\nFinished signing the APK, the APK's name is `fosscord.signed.apk`.")
apktool b --use-aapt2 discord/ -o fosscord.unsigned.apk
That's the issue it seems like, but i don't know why it happens
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
Most of that code went over my head unfortunately. I'm not too experienced at programming yet, but one other flag you can try maybe is --no-crunch. It apparently disables crunching of resource files (whatever that means). Beyond that, I don't think I'll be able to help you unfortunately. 😔
random-access-exomemory
@random-access-exomemory:matrix.org
[m]
That's fair lol
Thanks anyway though, i appreciate you just trying to help me lol
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
Yeah, np comrade
You could try pinging the dev maybe
He might have the channel set to only mentions or something
random-access-exomemory
@random-access-exomemory:matrix.org
[m]
I'll ping them if this still doesn't work lol
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
Kk
Good luck o7
random-access-exomemory
@random-access-exomemory:matrix.org
[m]
They patch the discord apk on the device
I don't think they use apktool, but they just recompile the classes.dex with some changes
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
:o
Poggers
random-access-exomemory
@random-access-exomemory:matrix.org
[m]
Yeah lol
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
I'll check it out
Thanks bro
random-access-exomemory
@random-access-exomemory:matrix.org
[m]
Nice! Have fun and good luck!
No worries haha
vincetheprogrammer
@vincetheprogrammer:matrix.org
[m]
o7
Gregory Klyushnikov
@grishk:matrix.org
[m]
ok so I don't really have anything to do, let me try to figure out why iBotPeaches/Apktool#2670 happens, these facebook apks are really something special but I want reactions on messages in my patched instagram build
Gregory Klyushnikov
@grishk:matrix.org
[m]
actually, I found the dumbest workaround:
  • decompile with --no-res
  • extract the r/ directory from the apk manually and put it into unknown/ inside the decompiled project
  • add all the files into unknownFiles in apktool.yml
  • then it builds...
the manual steps are needed because apktool expects resources to be under res/
yes I can confirm that the resulting apk works fine and does find all its resources, still, this is suboptimal, but it'll do for "I need to patch a more modern version of instagram right now" 🤣
DangerD1024
@DangerD1024
Hi there, is there any way to add some update module for decompiled app to make automated check for updates?
Arun
@arun54321
Can apktool compile android 12 apks properly? Whenever I recompile latest pixel launcher, I get parsing error. I had to replace androidmanifest.xml with original one to get apk working properly.
Arun
@arun54321
also I get error "Failure [INSTALL_FAILED_INTERNAL_ERROR: Failed to extract native libraries, res=-110]" when installing recompiled apk. for example apk from here -
https://github.com/LawnchairLauncher/lawnchair/actions/runs/1401503945
James Welchman
@JamesWelchman

Hey there - I'm a software engineer but an an android noob. I have errors with apktool and looking for some help.

After building an APK with apktool I get this error on installation: [INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2]

The steps to reproduce are here: https://stackoverflow.com/questions/69840918/how-to-pull-decompress-sign-build-and-install-apk-file-with-native-libraries

Ezra Steinmetz
@ezra100
Hi guys
I'm having trouble rebuilding an apk after decompiling it. The rebuilt app just won't run on the Android device.
I guess Apkool made some errors while decompiling, my question is - is there a better way to recompile the APK if I want just to replace/edit one smali file?
Like, is there a way to tell Apktool - keep most of the app as it is, just replace that very specific file? Like a surgical operation on the original app instead of building from scratch?
I tried also other tools, like dex2jar, jadx, baksmali and all of them have failed to rebuild the DEX file (I tried it without even modifying anything, just decompile and then recompile. Then replaced the dex file in the apk and self-signed it)