Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 11:01
    AndnixSH commented #2685
  • 03:02
    spiralw opened #2685
  • Oct 19 14:22
    sriteja777 commented #1407
  • Oct 19 04:55
    bitk0der opened #2684
  • Oct 18 14:50
    pashamcr opened #2683
  • Oct 18 13:40
    pashamcr commented on d294111
  • Oct 18 13:39
    pashamcr commented #2650
  • Oct 18 13:38
    pashamcr commented #2650
  • Oct 18 00:24
    pashamcr commented #2675
  • Oct 18 00:11
    pashamcr commented #2675
  • Oct 17 21:53
    pashamcr commented #2675
  • Oct 17 18:46
    iBotPeaches closed #2682
  • Oct 17 18:46
    iBotPeaches commented #2682
  • Oct 17 18:40
    44simon commented #2682
  • Oct 17 18:35
    iBotPeaches labeled #2682
  • Oct 17 18:35
    iBotPeaches commented #2682
  • Oct 17 18:27
    44simon opened #2682
  • Oct 17 16:03

    iBotPeaches on gh-pages

    docs: update changelog for #2637 (compare)

  • Oct 17 16:02
    iBotPeaches commented #2650
  • Oct 17 16:02

    iBotPeaches on master

    fix: decoding references to pri… (compare)

random-access-exomemory
@random-access-exomemory:matrix.org
[m]
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?