While lib files on android can be analysed statically very easily but dynamic lib debugging is also another option to get to know what is happening during runtime.
When static analysis may take up alot of time dynamic analysis is always a better option!
So how to debug libs?
lib files are not independent they need a running process to be debugged.
Note: Enable usb debugging
And don't select Filetransfer mode select PTP mode otherwise device won't be listed by ADB
Google if you don't Know how to Connect to PC using ADB
Load lib in IDA PRO first which is to be analysed.
Now connect your device to PC over ADB
Go to IDA PRO installation directory and from folder dbgsrv copy file android_server to adb folder
And execute following commands:
adb devices [To make sure device is connected ]
adb push android_server /local/data/tmp
ll [To Get list of files incurrent directory]
chmod 755 android_server
Minimizethe windows where android_server is running and open a new command prompt window and run following command:
adb forward tcp:23946 tcp:23946
select the "Remote ARM Linux/Android debugger", go into "ProcessOptions" in the debugger menu, and set the hostname to localhost.And port : 23946
Now Run the apk on your device from which this lib was extracted!
And In IDA go to:
Debugger menu Choose attach to process and from list of processes select the process of your apk.
Any correction and suggetion would be welcomed!
Can anybody explain logic here
It's ARM instruction set:
Here dword_36BD38 is uninitialized variable in .bss section
LDR R3, =(dword_36BD38 - 0x19D86C)
ADD R3, PC, R3 ; dword_36BD38
CMP R0, #0
STR R0, [R3]
MOVLT R2, #0x7FFFFFFF
STRLT R2, [R3]
I have a little idea what's happening here but couldn't understand whole logic!