In the next version, I'm going to add the comments option. But I'm little busy, so I'm going to release the next version in February 15.
If you find a bug or problem, write it in the comments.
Tuesday, January 29, 2013
Saturday, January 26, 2013
string decryption with dex2jar
i have been getting a lot of questions about string decryption lately, so let's talk.
let's say you have an app and notice encrypted strings. strings are an easy way to get a basic idea of what code is doing so naturally you want to decrypt them. but how? there are many different ways to encrypt strings and then decrypt at runtime but in practices there are some assumptions we can make in decreasing order of likelihood.
1. the encryption must be reversible. the strings must be decrypted at run time somehow. this is good but we can assume even more.
2. the process is automated. when Alice wants to release her app she puts the source code through an automated modification process which iterates over every string literal, encrypts it and replaces it with a call to a decryption method with the encrypted string as a parameter.
3. decryption is the same or nearly the same for each string. there is only one decryption method.
4. the type signature of the method is:
while these assumptions hold, it is not very difficult to create a general technique by which we can decrypt all of the strings of an app in place. the real question is do you want to do it at the java or smali level? if you primarily look at decompiled code you can work at the java level. and you're in luck, such a tool already exists in dex2jar: http://code.google.com/p/dex2jar/
there is a wiki article about it here: http://code.google.com/p/dex2jar/wiki/DecryptStrings but it is unfinished. you can at least get a visual for what the decompiled code will look like before and after. if you're a good person, you will update the wiki. i leave that as a task for some good reader.
the tool is currently incorrectly spelled as d2j-decrpyt-string.(sh|bat). it takes at least two parameters and sometimes needs three. they are:
doing this at the smali level requires access to a dalvik vm, so in that regard it is trickier, but there are many emulators and you can even use your phone. here's how the process can work:
let's say you have an app and notice encrypted strings. strings are an easy way to get a basic idea of what code is doing so naturally you want to decrypt them. but how? there are many different ways to encrypt strings and then decrypt at runtime but in practices there are some assumptions we can make in decreasing order of likelihood.
1. the encryption must be reversible. the strings must be decrypted at run time somehow. this is good but we can assume even more.
2. the process is automated. when Alice wants to release her app she puts the source code through an automated modification process which iterates over every string literal, encrypts it and replaces it with a call to a decryption method with the encrypted string as a parameter.
3. decryption is the same or nearly the same for each string. there is only one decryption method.
4. the type signature of the method is:
static String decryptMethod(String)
while these assumptions hold, it is not very difficult to create a general technique by which we can decrypt all of the strings of an app in place. the real question is do you want to do it at the java or smali level? if you primarily look at decompiled code you can work at the java level. and you're in luck, such a tool already exists in dex2jar: http://code.google.com/p/dex2jar/
there is a wiki article about it here: http://code.google.com/p/dex2jar/wiki/DecryptStrings but it is unfinished. you can at least get a visual for what the decompiled code will look like before and after. if you're a good person, you will update the wiki. i leave that as a task for some good reader.
the tool is currently incorrectly spelled as d2j-decrpyt-string.(sh|bat). it takes at least two parameters and sometimes needs three. they are:
- method name, -mn : in our case, decryptMethod
- method owner, -mo : let's say com.alice.utils
- class path, -cp : if decryptMethod makes use of any framework api, you will need to give the path to a framework.jar from the android.sdk
d2j-decrpyt-string -mn decryptMethod -mo com.alice.utils -cp ~/android/sdk/platforms/android-4/framework.jar
doing this at the smali level requires access to a dalvik vm, so in that regard it is trickier, but there are many emulators and you can even use your phone. here's how the process can work:
- pull out all of the strings and put into a file
- write some java code, unless you're comfortable with smali, to open the file and iterate over each line and call the decryption method on each string.
- compile java bytecode and convert to dalvik executable with dx from the android sdk
- run the code on a dalvik vm
Wednesday, January 23, 2013
Tax app

Book reference app

Monday, January 21, 2013
"(not set)" shown in Google Analytics for all Adwords data
Error
"(not set)" is shown in Google Analytics for all Adwords data
Solution
Link Account
Make sure you have linked Adwords and Google Analytics
http://support.google.com/analytics/bin/answer.py?hl=en&answer=1033961
Automated tagging
Make sure automated-tagging is enabled
http://support.google.com/analytics/bin/answer.py?hl=en&answer=1033981
Importing Cost Data
Follow the steps in "Importing Cost Data" section to apply cost data import
http://support.google.com/analytics/bin/answer.py?hl=en&answer=1034150
"(not set)" is shown in Google Analytics for all Adwords data
Solution
Link Account
Make sure you have linked Adwords and Google Analytics
http://support.google.com/analytics/bin/answer.py?hl=en&answer=1033961
Automated tagging
Make sure automated-tagging is enabled
http://support.google.com/analytics/bin/answer.py?hl=en&answer=1033981
Importing Cost Data
Follow the steps in "Importing Cost Data" section to apply cost data import
http://support.google.com/analytics/bin/answer.py?hl=en&answer=1034150
Image layout problem [Adwords Error]
Error
Image layout problem.
Incorrect image layout.
Solution
Your Ad might include much white space, just create a border for your Ad to be accepted
Also check the guidelines and make sure everything else is ok
http://support.google.com/adwordspolicy/bin/answer.py?hl=en&answer=176108
Image layout problem.
Incorrect image layout.
Solution
Your Ad might include much white space, just create a border for your Ad to be accepted
Also check the guidelines and make sure everything else is ok
http://support.google.com/adwordspolicy/bin/answer.py?hl=en&answer=176108
Sunday, January 20, 2013
ADWORDS ERROR:A duplicate instrument was found
Error
A duplicate instrument was found: (CreditCard:Instrument.Id:[f2fdefd1-6972-4c91-baa6-80a07c0117ca-4]:AMEX)
Solution
You may have an expired card saved in your account, delete it and add a new one or update the expired one
A duplicate instrument was found: (CreditCard:Instrument.Id:[f2fdefd1-6972-4c91-baa6-80a07c0117ca-4]:AMEX)
Solution
You may have an expired card saved in your account, delete it and add a new one or update the expired one
Friday, January 18, 2013
Game

Videos app

Thursday, January 17, 2013
FakkuDroid v1.1
FakkuDroid v1.1
- Improve design.
- Fixed bug in Random Manga or Doujin.
- Added Related Content.
- If you press and hold a button you can now see a little description of the button.
FakkuDroid v1.1.apk
Sunday, January 13, 2013
Installation Intructions
System Requirements
- Android 2.1 or later.
First, you have to active "Unknown Sources".
Tutorials:
Android 2.3.x
Android 4.x
Second, with some app like Astro File Manager, execute the apk file and install.
![]() |
Step 1. Open with a File Manager the APK File. |
![]() |
Step 2. Install. |
![]() |
Step 3. Wait. |
![]() |
Step 4. Open the App. |
Download APK
FakkuDroid v2.6
FakkuDroid v2.5
FakkuDroid v2.4.3
FakkuDroid v2.4.2
FakkuDroid v2.4.1
FakkuDroid v2.4
FakkuDroid v2.3
FakkuDroid v2.2
FakkuDroid v2.1
FakkuDroid v2.0
FakkuDroid v1.9
FakkuDroid v1.8.3
FakkuDroid v1.7
FakkuDroid v1.6
FakkuDroid v1.5
FakkuDroid v1.4
FakkuDroid v1.3
FakkuDroid v1.2
FakkuDroid v1.1
FakkuDroid v1.0
FakkuDroid v2.5
FakkuDroid v2.4.3
FakkuDroid v2.4.2
FakkuDroid v2.4.1
FakkuDroid v2.4
FakkuDroid v2.3
FakkuDroid v2.2
FakkuDroid v2.1
FakkuDroid v2.0
FakkuDroid v1.9
FakkuDroid v1.8.3
FakkuDroid v1.7
FakkuDroid v1.6
FakkuDroid v1.5
FakkuDroid v1.4
FakkuDroid v1.3
FakkuDroid v1.2
FakkuDroid v1.1
FakkuDroid v1.0
About FakkuDroid
FakkuDroid is an Android app to watch Fakku.
I changed the app name (before known as FakkuViewer), because already exists an browser plugin with the same name. I recommend it to watch in Chrome Fakku, get it here.
Download links.
Installation Instructions.
User Guide.
If you like the app and want to contribute to this project, you can help me saying me the errors, suggests or if you are a android developer you can help me with the code, github repository.
Or you can donate :D
If you don't have android and you are looking for an app for your smartphone. I invite you to prove this site: http://walar.net/fakku developed by wlr.
Logo by akichuu, get it here.
I changed the app name (before known as FakkuViewer), because already exists an browser plugin with the same name. I recommend it to watch in Chrome Fakku, get it here.
Download links.
Installation Instructions.
User Guide.
If you like the app and want to contribute to this project, you can help me saying me the errors, suggests or if you are a android developer you can help me with the code, github repository.
Or you can donate :D
If you don't have android and you are looking for an app for your smartphone. I invite you to prove this site: http://walar.net/fakku developed by wlr.
Logo by akichuu, get it here.
Thursday, January 10, 2013
Airline app

Game

Science app

Wednesday, January 9, 2013
Website image is not shown in Facebook share
Error
Your website image is not shown when sharing on Facebook
Solution
Don't retry on facebook news feed since it is cached
#1
Try to invalidate the cache, check my previous article
http://karim-ouda.blogspot.com/2011/10/how-to-refresh-url-entries-in-facebook.html
#2
Add facebook meta-tags in your page "head", and try again
<meta property="og:url" content="YOUR_STUFF" />
<meta property="og:site_name" content="YOUR_STUFF" />
<meta property="og:type" content="website" />
<meta property="og:title" content="YOUR_STUFF" />
<meta property="og:description" content="YOUR_STUFF" />
<meta property="og:image" content="THE_IMAGE_TO_BE_SHOWN">
NOTE: facebook has some requirements in images, first make sure it is more than 200x200 in dimension
#3
If all the above didn't work, you will need to do some debugging
Go to this link ( facebook debugger) and past your site link, and check the errors, warning, and all the great information of how facebook sees your webiste
https://developers.facebook.com/tools/debug
#4
Also check server logs
"HEAD /images/close-icon.png HTTP/1.1" 206 337 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
Note: HTTP 206 response code is ok, it is part of multiple partial downloads of the image
Your website image is not shown when sharing on Facebook
Solution
Don't retry on facebook news feed since it is cached
#1
Try to invalidate the cache, check my previous article
http://karim-ouda.blogspot.com/2011/10/how-to-refresh-url-entries-in-facebook.html
#2
Add facebook meta-tags in your page "head", and try again
<meta property="og:url" content="YOUR_STUFF" />
<meta property="og:site_name" content="YOUR_STUFF" />
<meta property="og:type" content="website" />
<meta property="og:title" content="YOUR_STUFF" />
<meta property="og:description" content="YOUR_STUFF" />
<meta property="og:image" content="THE_IMAGE_TO_BE_SHOWN">
NOTE: facebook has some requirements in images, first make sure it is more than 200x200 in dimension
#3
If all the above didn't work, you will need to do some debugging
Go to this link ( facebook debugger) and past your site link, and check the errors, warning, and all the great information of how facebook sees your webiste
https://developers.facebook.com/tools/debug
#4
Also check server logs
"HEAD /images/close-icon.png HTTP/1.1" 206 337 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
Note: HTTP 206 response code is ok, it is part of multiple partial downloads of the image
Tuesday, January 8, 2013
Empty $_SESSION after PHP redirect using GET or CURL (not browser)
Error
Empty $_SESSION after PHP redirect between 2 scripts, the first script is called using GET or CURL (not browser)
Steps
1- Call "script1" using GET or CURL
2- "Script1" starts/fills session X, does some logic, redirect to "Script2"
3- In "Script2", print_r($_SESSION) is empty
Solution
I found that the SESSION in "Script2" is a NEW session, let's call it:Session Y , since Session X was not transferred in HTTP header in the redirect
So it seems that the SESSION information transfer in headers was being done by the browser and it is not done by GET or CURL command line,
So we need to do it instead
Step 1:
In Script #1, change the redirection to be
header("Location:$targetPage?".SID);
SID is a constant containing the following
PHPSESSID=oilq46ge4e2f76774qcg8gi3d1
Step 2:
In script #2, start the script with the following
session_id($_GET['PHPSESSID']);
session_start();
So you are telling the script to load Script1's session
That's it
Final note
You may have a different issue too, check this post
http://karim-ouda.blogspot.com/2012/04/php-session-empty-after-header.html
Keywords
Redirect PHP command line new $_SESSION GET session_id start_session browser PHPSESSID cookie CURL Set-Cookie HTTP header
Empty $_SESSION after PHP redirect between 2 scripts, the first script is called using GET or CURL (not browser)
Steps
1- Call "script1" using GET or CURL
2- "Script1" starts/fills session X, does some logic, redirect to "Script2"
3- In "Script2", print_r($_SESSION) is empty
Solution
I found that the SESSION in "Script2" is a NEW session, let's call it:Session Y , since Session X was not transferred in HTTP header in the redirect
So it seems that the SESSION information transfer in headers was being done by the browser and it is not done by GET or CURL command line,
So we need to do it instead
Step 1:
In Script #1, change the redirection to be
header("Location:$targetPage?".SID);
SID is a constant containing the following
PHPSESSID=oilq46ge4e2f76774qcg8gi3d1
Step 2:
In script #2, start the script with the following
session_id($_GET['PHPSESSID']);
session_start();
So you are telling the script to load Script1's session
That's it
Final note
You may have a different issue too, check this post
http://karim-ouda.blogspot.com/2012/04/php-session-empty-after-header.html
Keywords
Redirect PHP command line new $_SESSION GET session_id start_session browser PHPSESSID cookie CURL Set-Cookie HTTP header
Wednesday, January 2, 2013
Disney World app

File recovery app

Subscribe to:
Posts (Atom)