SElinux error - LineageOS Questions & Answers

Hi
I'm trying to migrate an existing device tree from lineage 18.1 to 20.
with adb logcat, i get the following error:
VintfObject: VintfObject.verifyWithoutAvb() returns 1: Runtime info and framework compatibility matrix are incompatible: kernelSepolicyVersion = 30 but required >= 33
I could disable this check in frameworks/base/core/java/android/os/Build.java but i prefer to understand.
What should i do?
Thanks

I took a deeper look at the problem.
The required SEPolicyVersion of lineageos 20 is defined in /system/policy/sepolicy/policy_version.mk. It is 33.
The kernelSepolicyVersion is read in /sys/fs/selinux/policyvers. For the kernel I use, it is 30.
This value comes from /kernel/x/y/security/selinux/include/security.h:
#define POLICYDB_VERSION_XPERMS_IOCTL 30
I need to update my kernel. For now, i have to live with the startup popup "There is an internal problem in your device. Please contact your manufacturer." The warning seems relevant

Related

bad_pool_header crash with WM5 upgrade

I upgraded my XDA Exec with the new ROM 1.30.162 WWE and Activesync 4.1 but each time I sync, I get a "bad_pool_header" error on a blue background which crashes my machine.
I installed Activesync 4.1 on another laptop to check if this problem was due to drivers etc on my main laptop, and discovered that the device syncs with no problems. There is, therefore, a conflict between the new Activesync 4.1 or the new ROM, and something on my main laptop.
Has anyone come across this problem?
Thanks
The problem is definitely on your PC. Reinstall motherboard drivers, reflash bios, remove antivirus, reinstall windows, etc.
Thanks - pretty drastic...!
Is there a short cut? ie reinstalling drivers one by one? If so, which are likely to be the main culprits? Motherboard? Broadband modem? etc
The error code after reboot of the laptop is:
BC code 19 BCP1:00000020 BCP2: 89A76000 BCP3: 89A766C0 BCP4: 0AD8000
OS Ver 5_1_2600 SP: 2_0 Product 256_1
\WER22c7.dir00\Mini052506-06.dmp
\WER22c7.dir00\sysdata.xml
Does this reveal anything that could explain which driver?
Thanks
10860 said:
Does this reveal anything that could explain which driver?
Click to expand...
Click to collapse
no.
You should create a complete crash dump, and use microsoft debugging tools to find faulting driver. Or better reinstall windows.
I looked at the minidump file and used MS debugger, the readout is below. I am not sure if I did the debugging ok, or how to interpret it. Anything useful in the readout?
Thanks
Loading Dump File [C:\Mini052406-01.dmp]
Mini Kernel Dump File: Only registers and stack trace are available
Symbol search path is: C:\WINDOWS\Symbols
Executable search path is:
Unable to load image ntoskrnl.exe, Win32 error 2
*** WARNING: Unable to verify timestamp for ntoskrnl.exe
Windows XP Kernel Version 2600 (Service Pack 2) UP Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Kernel base = 0x804d7000 PsLoadedModuleList = 0x8055a420
Debug session time: Wed May 24 20:25:34.038 2006 (GMT+1)
System Uptime: 0 days 0:52:32.633
Unable to load image ntoskrnl.exe, Win32 error 2
*** WARNING: Unable to verify timestamp for ntoskrnl.exe
Loading Kernel Symbols
.......................................................................................................................................................................................................
Loading User Symbols
Loading unloaded module list
.................................
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck 19, {20, 88187000, 881876c0, ad80000}
Probably caused by : Unknown_Image ( nt!KeBugCheck2+4d4 )
Followup: MachineOwner
---------
kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
BAD_POOL_HEADER (19)
The pool is already corrupt at the time of the current request.
This may or may not be due to the caller.
The internal pool links must be walked to figure out a possible cause of
the problem, and then special pool applied to the suspect tags or the driver
verifier to a suspect driver.
Arguments:
Arg1: 00000020, a pool block header size is corrupt.
Arg2: 88187000, The pool entry we were looking for within the page.
Arg3: 881876c0, The next pool entry.
Arg4: 0ad80000, (reserved)
Debugging Details:
------------------
BUGCHECK_STR: 0x19_20
POOL_ADDRESS: 88187000
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID: DRIVER_FAULT
LAST_CONTROL_TRANSFER: from 00000000 to 8053331e
STACK_TEXT:
f78cab74 00000000 00000000 00000000 00000000 nt!KeBugCheck2+0x4d4
STACK_COMMAND: kb
FOLLOWUP_IP:
nt!KeBugCheck2+4d4
8053331e ?? ???
FAULTING_SOURCE_CODE:
FOLLOWUP_NAME: MachineOwner
SYMBOL_NAME: nt!KeBugCheck2+4d4
IMAGE_NAME: Unknown_Image
DEBUG_FLR_IMAGE_TIMESTAMP: 0
BUCKET_ID: ZEROED_STACK
MODULE_NAME: Unknown_Module
Followup: MachineOwner
---------
Nothing useful, minidump does not have enough information
It is very difficult to debug pool corruptions.

Trying to compile Lineage 15 from modified device tree - error

Hey guys!
So I'm currently experimenting with porting Lineage 15 (don't get your hopes up; I'm just looking for patterns in other device trees and carrying them over to this one) and I'm always getting stuck at this error:
Code:
ninja: error: '/home/alexander/oreo/out/target/product/ether/obj/STATIC_LIBRARIES/libbootloader_message_intermediates/export_includes', needed by '/home/alexander/oreo/out/target/product/ether/obj/EXECUTABLES/init_intermediates/import_includes', missing and no known rule to make it
02:16:32 ninja failed with: exit status 1
It seems that I might be lacking some library that some component is requesting, however I have no idea how to trace these things. Any ideas?

[ROM][OFFICIAL] LineageOS 17.1 for Xiaomi Mi Note 2 - scorpio

LineageOS is a free, community built, aftermarket firmware distribution of Android 10, which is designed to increase performance and reliability over stock Android for your device.
LineageOS is based on the Android Open Source Project with extra contributions from many people within the Android community. It can be used without any need to have any Google application installed. You will need to provide your own Google Applications package (gapps). LineageOS does still include various hardware-specific code, which is also slowly being open-sourced anyway.
Base source code is available in the LineageOS Github repo. And if you would like to contribute to the project, please visit our Gerrit Code Review.
GPL compliance:
Device tree source code: LineageOS/android_device_xiaomi_scorpio
Kernel source code: LineageOS/android_device_xiaomi_msm8996-common
Broken / not yet supported:
Tell Me
Downloads:
LineageOS Downloads
Notice:
No custom kernels are supported in this thread. Only stock kernel and official builds will be supported. No bug reports if that's not the case.
Installation:
Reboot to recovery (TWRP recovery for Mi Note 2 - Direct link)
Format /system, /data and /cache
Install LineageOS zip package
Install [optional] the LineageOS su addon to get root (there are obviously other root methods, but this is the recommended one as it survives to OTA updates)
Install [optional] a Google Apps package of your choice (Open GApps is advisable, but stock and super variants are not recommended!!!)
Credits & collaborations:
joe2k01
.
Finally, all LineageOS team would like to thank everyone involved in helping with testing, coding, debugging & documenting! Enjoy!
Device wiki:
Official wiki link
Contributors
joe2k01
ROM OS Version: 10.x
ROM Kernel: Linux 3.x
ROM Firmware Required: MIUI 8.8.30 Beta
Version Information
Status: Stable
Created 2021-01-19
Last Updated 2021-02-09
I installed lineage 18.1. But no Volte support. Any way to enable it?
There's a bug when opening Settings > System > Buttons. Here's the logcat I found:
Code:
HidlServiceManagement: Waited one second for [email protected]::IKeySwapper/default
hwservicemanager: Since [email protected]::IKeySwapper/default is not registered, trying to start it as a lazy HAL.
HidlServiceManagement: getService: Trying again for [email protected]::IKeySwapper/default...
libc : Unable to set property "ctl.interface_start" to "[email protected]::IKeySwapper/default": error code: 0x20
chatty : uid=0(root) logd identical 10 lines
init : Control message: Could not find '[email protected]::IKeySwapper/default' for ctl.interface_start from pid: 451 (/system/bin/hwservicemanager)
logd : logdr: UID=2000 GID=2000 PID=7072 n tail=0 logMask=99 pid=0 start=0ns timeout=0ns
cc: @fernandodtg @joe2k01
ChessPiece said:
There's a bug when opening Settings > System > Buttons. Here's the logcat I found:
Code:
HidlServiceManagement: Waited one second for [email protected]::IKeySwapper/default
hwservicemanager: Since [email protected]::IKeySwapper/default is not registered, trying to start it as a lazy HAL.
HidlServiceManagement: getService: Trying again for [email protected]::IKeySwapper/default...
libc : Unable to set property "ctl.interface_start" to "[email protected]::IKeySwapper/default": error code: 0x20
chatty : uid=0(root) logd identical 10 lines
init : Control message: Could not find '[email protected]::IKeySwapper/default' for ctl.interface_start from pid: 451 (/system/bin/hwservicemanager)
logd : logdr: UID=2000 GID=2000 PID=7072 n tail=0 logMask=99 pid=0 start=0ns timeout=0ns
cc: @fernandodtg @joe2k01
Click to expand...
Click to collapse
Just flash this vendor in TWRP (install - install image - vendor partition). One of the 4pda's user had corrected buttons settings + google camera fix.
vendor_fix.img
drive.google.com
The
ChessPiece said:
There's a bug when opening Settings > System > Buttons. Here's the logcat I found:
Code:
HidlServiceManagement: Waited one second for [email protected]::IKeySwapper/default
hwservicemanager: Since [email protected]::IKeySwapper/default is not registered, trying to start it as a lazy HAL.
HidlServiceManagement: getService: Trying again for [email protected]::IKeySwapper/default...
libc : Unable to set property "ctl.interface_start" to "[email protected]::IKeySwapper/default": error code: 0x20
chatty : uid=0(root) logd identical 10 lines
init : Control message: Could not find '[email protected]::IKeySwapper/default' for ctl.interface_start from pid: 451 (/system/bin/hwservicemanager)
logd : logdr: UID=2000 GID=2000 PID=7072 n tail=0 logMask=99 pid=0 start=0ns timeout=0ns
cc: @fernandodtg @joe2k01
Click to expand...
Click to collapse
This bug has been fixed in the official build.
Thanks @Wiwern and @LuK1337
Wow, updated my old phone. Love it
Can someone post the build pls, the link of the OP doesn't have any file for the Mi Note 2.
thanks
I took this guide and built a fresh LOS 18.1 for scorpio
Build for scorpio | LineageOS Wiki
wiki.lineageos.org
It was not easy (2 hrs on my i7 12700/64Gb/970Evo+) but succesuful....
Everyone can take it here (or make their own build)
lineage-18.1-20230327-UNOFFICIAL-scorpio.zip
drive.google.com
The only hint is to edit roomservice.py, make it first line #!/usr/bin/env python3 and you can extract proprietary blobs for scorpio.

[ROM][11.0][UNOFFICIAL][Testing] LineageOS 18.1 for Wileyfox Swift

Code:
#include <std_disclaimer.h>
/*
* Your warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/
Remarks:
This thread is thought to collect issues and ideas. It has to be considered being a TESTING version.
Once everything is mature, an official build may be possible.
Installation:
If you are on stock OS, you need a custom recovery first. You can get the recommended Lineage recovery in the official installation instructions link below.
If you are coming from stock or other ROMs, you need to make a factory reset.
As always, make sure to backup before installing this ROM.
Also make sure you've got the correct firmware installed before installing LineageOS.
More detailed instructions at:
Install LineageOS on crackling
115ek's test builds (for testers only)
Downloads
Recommended Google Apps package:
none: GApps don't fit at the moment. A repartitioning is needed. Currently thinking about this...
Donate to support development:
Donate via PayPal to LineageOS
Changelog
06.12.2021
updated lineage sources
11.09.2021
fixed livedisplay
updated lineage sources
22.07.2021
initial version
reserved
It's been a while since I tried 18 and I'm tempted to look at the latest. Before I do, are there any major problems other than gapps. I appreciate it needs to be tested but I'd like to be aware if there are any major parts not working.
petexd said:
It's been a while since I tried 18 and I'm tempted to look at the latest. Before I do, are there any major problems other than gapps. I appreciate it needs to be tested but I'd like to be aware if there are any major parts not working.
Click to expand...
Click to collapse
Livedisplay is not working at the moment.
I had to remove it because it wouldn't load my photos and I didn't have time to play around with it. It's actually my only phone. It did, however, instal basic flamegapps.
I also got error 255 when tryin to restore my backup but I'm up and running now with 17.1. I'll try 18.1 again soon when I have more time to mess around with it and if I can sort out error 255
Very cool, thanks! What is the upstreaming status? That would be great as microG builds would be available automatically as well. That one I'd install right away.
ajjin0 said:
Very cool, thanks! What is the upstreaming status? That would be great as microG builds would be available automatically as well. That one I'd install right away.
Click to expand...
Click to collapse
I've got so less time at the moment. I hope I'll find some to continue the work.
New build is up. Livedisplay is working now.
Download
Wow great work.
@115ek Thank you for the new build.
I tried to compile Lineage18.1 myself, but ended up in a boot loop. I assume this is the relevant part of the log, since it repeats over and over again:
Spoiler
Code:
01-01 21:28:58.399 4357 4357 I [email protected]: LiveDisplay HAL service is starting.
01-01 21:28:58.404 4357 4357 D DISP_API: disp_api_get_num_display_modes.
01-01 21:28:58.458 4357 4357 D DISP_API: disp_api_get_num_display_modes successful getting num-of-modes = 6.
01-01 21:28:58.458 4357 4357 D DISP_API: disp_api_get_num_display_modes.
01-01 21:28:58.510 4357 4357 D DISP_API: disp_api_get_num_display_modes successful getting num-of-modes = 6.
01-01 21:28:58.512 220 220 I hwservicemanager: getTransport: Cannot find entry [email protected]::IDisplayModes/default in either framework or device manifest.
01-01 21:28:58.512 4357 4357 E HidlServiceManagement: Service [email protected]::IDisplayModes/default must be in VINTF manifest in order to register/get.
01-01 21:28:58.513 4357 4357 E [email protected]: Could not register service for LiveDisplay HAL DisplayModes Iface (-2147483648)
01-01 21:28:58.514 4357 4357 E [email protected]: LiveDisplay HAL service is shutting down.
01-01 21:28:58.521 0 0 I init : Service 'vendor.livedisplay-hal-2-0-legacymm' (pid 4357) exited with status 1
01-01 21:28:58.521 0 0 I init : Sending signal 9 to service 'vendor.livedisplay-hal-2-0-legacymm' (pid 4357) process group...
01-01 21:28:58.521 0 0 I libprocessgroup: Successfully killed process cgroup uid 1000 pid 4357 in 0ms
01-01 21:28:59.391 219 219 I servicemanager: Since 'android.hardware.power.IPower/default' could not be found, trying to start it as a lazy AIDL service
01-01 21:28:59.391 4193 4193 W ServiceManager: Waited one second for android.hardware.power.IPower/default
01-01 21:28:59.393 219 4360 W libc : Unable to set property "ctl.interface_start" to "aidl/android.hardware.power.IPower/default": error code: 0x20
01-01 21:28:59.395 0 0 E init : Control message: Could not find 'aidl/android.hardware.power.IPower/default' for ctl.interface_start from pid: 219 (/system/bin/servicemanager)
01-01 21:29:00.392 219 219 I servicemanager: Since 'android.hardware.power.IPower/default' could not be found, trying to start it as a lazy AIDL service
01-01 21:29:00.392 4193 4193 W ServiceManager: Waited one second for android.hardware.power.IPower/default
My local manifest looks like:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="115ek/android_device_wileyfox_crackling" path="device/wileyfox/crackling" remote="github" />
<project name="115ek/android_device_cyanogen_msm8916-common" path="device/cyanogen/msm8916-common" remote="github" />
<project name="115ek/proprietary_vendor_wileyfox" path="vendor/wileyfox" remote="github" />
<project name="LineageOS/android_kernel_cyanogen_msm8916" path="kernel/cyanogen/msm8916" revision="lineage-17.1" />
<project name="LineageOS/android_hardware_sony_timekeep" path="hardware/sony/timekeep" remote="github" />
</manifest>
Does your manifest look the same? Are there any additional patches I have to apply to get it working? I would highly appreciate it if you could share your steps to build LineageOS 18.1.
mmustermann717 said:
Does your manifest look the same?
Click to expand...
Click to collapse
This should be fine, yes.
mmustermann717 said:
Are there any additional patches I have to apply to get it working?
Click to expand...
Click to collapse
Yes. I still have some local changes I didn't push yet. There are two kernel patches required for enforcing SE linux which I didn't upload yet.
But permissive mode should work. You can switch to permissive for now by:
adding androidboot.selinux=permissive to https://github.com/115ek/android_de...7d4427d6896080f77946/BoardConfigCommon.mk#L94
The thing you see in the log is the broken livedisplay. I also have a local unpublished change here:
Code:
--- a/manifest.xml
+++ b/manifest.xml
@@ -184,6 +184,10 @@
<name>IDisplayColorCalibration</name>
<instance>default</instance>
</interface>
+ <interface>
+ <name>IDisplayModes</name>
+ <instance>default</instance>
+ </interface>
<interface>
<name>IPictureAdjustment</name>
<instance>default</instance>
You can try it that way. But in any case I should publish those changes. I just need to find some spare minutes to write a proper commit message and clean things up.
115ek said:
This should be fine, yes.
Yes. I still have some local changes I didn't push yet. There are two kernel patches required for enforcing SE linux which I didn't upload yet.
But permissive mode should work. You can switch to permissive for now by:
adding androidboot.selinux=permissive to https://github.com/115ek/android_de...7d4427d6896080f77946/BoardConfigCommon.mk#L94
The thing you see in the log is the broken livedisplay. I also have a local unpublished change here:
Code:
--- a/manifest.xml
+++ b/manifest.xml
@@ -184,6 +184,10 @@
<name>IDisplayColorCalibration</name>
<instance>default</instance>
</interface>
+ <interface>
+ <name>IDisplayModes</name>
+ <instance>default</instance>
+ </interface>
<interface>
<name>IPictureAdjustment</name>
<instance>default</instance>
You can try it that way. But in any case I should publish those changes. I just need to find some spare minutes to write a proper commit message and clean things up.
Click to expand...
Click to collapse
Thank you very much! That worked.
I increased the system partition, a little while ago and backups were restoring OK so I've decided to try 18.1 again.
I must say, it performs really well for the stuff I need. I also like that I can now do calendar etc backups to my sdcard. Much more sensible IMO.
Thanks 115ek. A great job.
I'd like to have a go at building but I'm not sure where to start without the explicit menu like 17.1
Thanks to 115ek for the 18.1 set up and to mmustermann717 for his local manifest. I have managed to build 18.1 after a few errors which appeared to be out of memory problems.
I fixed that and was able to complete the build.
Thanks both of you
I was too quick to brag. Im getting a boot loop. I made the changes from 115ek's response #12, so I don't know where I've gone wrong.
Can either of you tell me please?
115ek said:
This should be fine, yes.
Yes. I still have some local changes I didn't push yet. There are two kernel patches required for enforcing SE linux which I didn't upload yet.
But permissive mode should work. You can switch to permissive for now by:
adding androidboot.selinux=permissive to https://github.com/115ek/android_de...7d4427d6896080f77946/BoardConfigCommon.mk#L94
The thing you see in the log is the broken livedisplay. I also have a local unpublished change here:
Code:
--- a/manifest.xml
+++ b/manifest.xml
@@ -184,6 +184,10 @@
<name>IDisplayColorCalibration</name>
<instance>default</instance>
</interface>
+ <interface>
+ <name>IDisplayModes</name>
+ <instance>default</instance>
+ </interface>
<interface>
<name>IPictureAdjustment</name>
<instance>default</instance>
You can try it that way. But in any case I should publish those changes. I just need to find some spare minutes to write a proper commit message and clean things up.
Click to expand...
Click to collapse
I've tried all of this several times. I get a successful build but a boot loop every time.
The lineage source says successful, it doesn't actually boot so I have no idea how to find any error? Is there anything I can look for? Or can you guess?
I'd appreciate the help if you can. Thanks.
Hey
petexd said:
how to find any error?
Click to expand...
Click to collapse
The best way would be attaching some cables to get a console over UART. However, this requires some hardware knowledge and most likely some soldering. I haven't had a look into the crackling hardware yet.
Then you could use the android logcat command. Unfortunately adb has to work for that.
A third option could be "loggy", a simple script writing the logs to a defined location. Have a look here.
petexd said:
Or can you guess?
Click to expand...
Click to collapse
You could, but I'm not sure if that really helps.
petexd said:
Is there anything I can look for?
Click to expand...
Click to collapse
What does this line looks like (exactly!) in your sources? Could you post it here?
I'd try to use a known to be working boot.img - you could extract one from my latest 18.1 upload. That way you could exclude some potential problems.
115ek said:
Hey
The best way would be attaching some cables to get a console over UART. However, this requires some hardware knowledge and most likely some soldering. I haven't had a look into the crackling hardware yet.
Then you could use the android logcat command. Unfortunately adb has to work for that.
A third option could be "loggy", a simple script writing the logs to a defined location. Have a look here.
You could, but I'm not sure if that really helps.
What does this line looks like (exactly!) in your sources? Could you post it here?
I'd try to use a known to be working boot.img - you could extract one from my latest 18.1 upload. That way you could exclude some potential problems.
Click to expand...
Click to collapse
This is the line you asked about:
BOARD_KERNEL_CMDLINE := console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom ehci-hcd.park=3 androidboot.bootdevice=7824900.sdhci lpm_levels.sleep_disabled=1 loop.max_part=7 androidboot.selinux=permissive
I've tried my build with your boot.img but it still bootloops.
115ek said:
Hey
The best way would be attaching some cables to get a console over UART. However, this requires some hardware knowledge and most likely some soldering. I haven't had a look into the crackling hardware yet.
Then you could use the android logcat command. Unfortunately adb has to work for that.
A third option could be "loggy", a simple script writing the logs to a defined location. Have a look here.
You could, but I'm not sure if that really helps.
What does this line looks like (exactly!) in your sources? Could you post it here?
I'd try to use a known to be working boot.img - you could extract one from my latest 18.1 upload. That way you could exclude some potential problems.
Click to expand...
Click to collapse
I've tried again and the last 4 lines of the build are:
2021-10-18 16:11:33 - ota_from_target_files.py - INFO : done.
Warning: could not find RADIO/filesmap in <zipfile.ZipFile object at 0x7f982df1bf50>.
Warning: could not find RADIO/filesmap in <zipfile.ZipFile object at 0x7f982df1bf50>.
Compressing system.new.dat with brotli
warning radio-update: no radio image in input target_files; not flashing radio
[100% 24/24] build bacon
Package Complete: out/target/product/crackling/lineage-18.1-20211018-UNOFFICIAL-crackling.zip
#### build completed successfully
Is this OK? I thought bacon was another phone (oneplus?)
Hey
115ek said:
The best way would be attaching some cables to get a console over UART. However, this requires some hardware knowledge and most likely some soldering. I haven't had a look into the crackling hardware yet.
Then you could use the android logcat command. Unfortunately adb has to work for that.
A third option could be "loggy", a simple script writing the logs to a defined location. Have a look here.
You could, but I'm not sure if that really helps.
What does this line looks like (exactly!) in your sources? Could you post it here?
I'd try to use a known to be working boot.img - you could extract one from my latest 18.1 upload. That way you could exclude some potential problems.
Click to expand...
Click to collapse
I get this , just bfore the build completes successfully. Do you know if this has anything to do with the problem.
99% 463/464] Package OTA: out/target/product/crackling/lineage_crackling-ota-eng.pet
2021-10-19 18:02:26 - common.py - WARNING : Failed to read SYSTEM/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read VENDOR/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read VENDOR/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read PRODUCT/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read PRODUCT/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read SYSTEM_EXT/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read SYSTEM_EXT/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read ODM/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read ODM/build.prop

[Dexplore] Obfuscated code finder | Develop portable Xposed module for obfuscated apps

Library: Dexplore
[Develop Portable Xposed Module] - [For Any Obfuscated Apps]
About: Dexplore is a dex analyzing library for finding obfuscated classes and methods at runtime. There is also a command line tool for static analysis and app de-compilation.
Highlight: Now you can develop portable Xposed module for any obfuscated apps (eg: snapchat, youtube, whatsapp, facebook etc). You don't have to worry about updating the module every time they release new versions, Dexplore will take care of obfuscated classes based on your provided query.
Example: Disable 'msg seen' in messenger
A more detailed explanation and examples can be found at: Github Wiki
The library is available at maven central repository: Dexplore
Java:
repositories {
mavenCentral()
}
dependencies {
implementation 'io.github.neonorbit:dexplore:1.4.5'
}
Command Line tool: Download
Java:
java -jar Dexplore-1.4.5.jar --help
Changelogs:
Release v1.4.5:
- [LIB] Add support for in-memory dex
- [LIB] Add various helper methods
- [LIB] Fix bugs in annotation filter
- [CLI] Update decompiler library
- [CLI] New option: advanced search query
- [LIB+CLI] New condition: set package names
- [LIB+CLI] New condition: set number literals
- [LIB+CLI] New condition: set source filenames
- [LIB+CLI] New condition: set class simple names
Release v1.4.4:
- [LIB] Fix class loading issues
- [LIB] Fix de-serialization failure
- [LIB] Add constructor helper methods
Release v1.4.3:
- [LIB] Fix de-serialization failure
Release v1.4.2:
- [LIB] Minor improvements
- [CLI] Improvement: rewrite from scratch
- [CLI] New command: search [redesigned]
- [CLI] New command: decode [decompiler]
Release v1.4.0:
- [LIB] Make API thread-safe
- [LIB] Add support for batch operation
- [LIB] Add support for parallel execution
- [LIB] Add Filter conditions for annotaion
- [CLI] Fix @file expansion in arguments
Release v1.3.0:
- [LIB] Several enhancements
- [CLI] New option: specify classes (-c)
- [CLI] New option: generate source files (-s)
- [CLI] Improvement: show results in real-time
Release v1.2.0:
- [LIB] Add documentation
- [LIB] Improve search accuracy
- [LIB] Fix several known bugs
- [LIB] Improve performance
Release v1.0.1:
- [LIB] Support multiple preferred dexes
- [CLI] New option: print full details (-d)
Click to expand...
Click to collapse
Source Code: Github
API Overview: Javadoc
Implementation: Github Wiki
If you need any help with implementation, comment here.
For bugs and feature request, create an issue on the github repo.
Used by: ChatHeadEnabler
[reserved]
Xposed Implementation Sample:
- Find all the necessary classes/methods using Dexplore at runtime and save them to Preferences.
- Do your necessary hooking with Xposed.
- Next time simply load them from Preferences.
[Implement dexplore queries to re-fetch automatically whenever version code changes]
Example: Block 'msg seen status' in facebook messenger (check Github Wiki for documentation):
Java:
public class XposedModule implements IXposedHookLoadPackage {
@Override public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
if (!lpparam.packageName.equals("com.facebook.orca")) return;
// Create a class filter to find our target class
ClassFilter classFilter = new ClassFilter.Builder()
.setReferenceTypes(ReferenceTypes.builder().addString().build())
.setReferenceFilter(pool ->
pool.contains("Montage thread ")
).build();
// Create a method filter to find our target method from the class
MethodFilter methodFilter = new MethodFilter.Builder()
.setReferenceTypes(ReferenceTypes.builder().addString().build())
.setReferenceFilter(pool ->
pool.contains("has_seen")
).setParamSize(3)
.setModifiers(Modifier.PUBLIC)
.build();
// Load the base apk into Dexplore
Dexplore dexplore = DexFactory.load(lpparam.appInfo.sourceDir);
// Search method
MethodData result = dexplore.findMethod(DexFilter.MATCH_ALL, classFilter, methodFilter);
// Xposed hook: this will block Seen Status from being sent
XposedBridge.hookMethod(result.loadMethod(lpparam.classLoader), XC_MethodReplacement.returnConstant(null)));
}
Hello, After reading github wiki, I could successfully track class name changes dynamically. But when I read back the result from preference and try to deserialize by library method, it throws an IllegalArgumerntException.
ranej700 said:
Hello, After reading github wiki, I could successfully track class name changes dynamically. But when I read back the result from preference and try to deserialize by library method, it throws an IllegalArgumerntException.
Click to expand...
Click to collapse
How exactly did you try to de-serialize it? Could you provide the class name that you are trying to de-serialize?
NeonOrbit said:
How exactly did you try to de-serialize it? Could you provide the class name that you are trying to de-serialize?
Click to expand...
Click to collapse
I followed this Xposed Sample .
Deserialized with:
Java:
ClassData.deserialize(saved_result)
Class name was 3mt I think.
ranej700 said:
Class name was 3mt I think.
Click to expand...
Click to collapse
Got it, I'll release a new version soon.
Update: v1.4.3
Changelog:
- Fix de-serialization failure
NeonOrbit said:
Update: v1.4.3
Changelog:
- Fix de-serialization failure
Click to expand...
Click to collapse
That was quick, thanks.
One more request, I managed to find classes with simple search, but there are some classes that doesn't have anything specific to search with. I read advanced search section, but it's confusing for me. Can I message you personally? I need help with advanced search.
ranej700 said:
Can I message you personally? I need help with advanced search.
Click to expand...
Click to collapse
Sure, anytime.
Update: v1.4.4
Changelog:
- Fix class loading issues
- Fix de-serialization failure
- Add constructor helper methods
This library will be able to load dex files if they are extracted from apk and placed in a separate folder in /data/data/com.example.apk/files?
Blue cat said:
This library will be able to load dex files if they are extracted from apk and placed in a separate folder in /data/data/com.example.apk/files?
Click to expand...
Click to collapse
It supports apk, dex, odex, oat, zip files.
If your app can access the file, so should the library. Doesn't matter where it's placed.
Is it possible to search using string id? 0x7F1201EA or 2131886570
Blue cat said:
Is it possible to search using string id? 0x7F1201EA or 2131886570
Click to expand...
Click to collapse
It would be useless, since resource Ids are not static.
NeonOrbit said:
Example: Block 'msg seen status' in facebook messenger (check Github Wiki for documentation):
Java:
public class XposedModule implements IXposedHookLoadPackage {
@Override public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
if (!lpparam.packageName.equals("com.facebook.orca")) return;
// Create a class filter to find our target class
ClassFilter classFilter = new ClassFilter.Builder()
.setReferenceTypes(ReferenceTypes.builder().addString().build())
.setReferenceFilter(pool ->
pool.contains("Montage thread ")
).build();
// Create a method filter to find our target method from the class
MethodFilter methodFilter = new MethodFilter.Builder()
.setReferenceTypes(ReferenceTypes.builder().addString().build())
.setReferenceFilter(pool ->
pool.contains("has_seen")
).setParamSize(3)
.setModifiers(Modifier.PUBLIC)
.build();
// Load the base apk into Dexplore
Dexplore dexplore = DexFactory.load(lpparam.appInfo.sourceDir);
// Search method
MethodData result = dexplore.findMethod(DexFilter.MATCH_ALL, classFilter, methodFilter);
// Xposed hook: this will block Seen Status from being sent
XposedBridge.hookMethod(result.loadMethod(lpparam.classLoader), XC_MethodReplacement.returnConstant(null)));
}
Click to expand...
Click to collapse
I've been looking for a module to do exactly this, do you implement this into anything or is it just a code example currently? I don't know enough about module development to "make it work" myself. I thought about trying to add the code into Weiju2 but I think that is only Lua coding for now. Which of course I don't know
Galaxy-Geek#1 said:
I've been looking for a module to do exactly this, do you implement this into anything or is it just a code example currently? I don't know enough about module development to "make it work" myself. I thought about trying to add the code into Weiju2 but I think that is only Lua coding for now. Which of course I don't know
Click to expand...
Click to collapse
It's just a code example, it works partially. To implement it fully, someone will have to analyze the source code properly.
Absolute legend!
Do you mind adding support for caching ? For example some class that takes Context and app version as an argument and automatically caches the method for you, or it determines whether it should be searched again when the version changes.
I'm back with Messenger Pro development by the way !
Mino260806 said:
Do you mind adding support for caching ? For example some class that takes Context and app version as an argument and automatically caches the method for you, or it determines whether it should be searched again when the version changes.
Click to expand...
Click to collapse
I'm not sure whether it's a good idea for a library to accept Context as argument and perform low level operations like writting to Preferences.
However, it has 'serialize()' and 'deserialize()' methods, you can easily write a helper method to save result + app version in Preferences. Take a look at this Xposed Samples.
Mino260806 said:
I'm back with Messenger Pro development by the way !
Click to expand...
Click to collapse
Good luck :.)

Categories

Resources