Tuesday, December 2, 2014

Galaxy Note 2 New Look, with Flat Icons

The latest trend in icon is FLAT. Here is the update UI for Galaxy Note 2, My Version.
Let me know your feedback.






Sunday, April 13, 2014

Change Default Data File Location in Outlook

Recently, my laptop crashed, and outlook configurations got changed, and to my surprise the outlook default profile data file for offline cached data file was getting created inside some folders which was not part of the backed up folder. I wanted to change it to my documents path. There is no option to do it in outlook 2013, if you want to do so, you need to edit the registry. 

Here is how to do it. 

Start - Regedit 
Navigate To: Computer\HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook

Right-Click Outlook Select New then String Value

Type “ForceOSTPath” without the quotes for the variable name and press Enter then Double-Click ForceOSTPath to Edit the string

Type the location you want your data files to use.  In my case it was 
C:\Users\pshetty1\Documents\Outlook Files

Click OK. You will need to close Outlook in order for Outlook to use this new setting.  Now when you create a new OST data file Outlook will put it in the new location. 

Remember that, after this you need to create a new profile, and make outlook to use this profile by default, and you can delete the old profile. 


Friday, November 22, 2013

Android: How to Launch Another App from Your App

I have been learning Android from quite sometime now, and in fact I am learning, hacking, and experimenting and doing some minimal development. sometimes its good to tell, how you did it may be it would help someone out there.

As you know in android everything has an Intent, so to launch another App from your app, you can create an Intent within your app saying that you want to launch the other App and then using that Intent start the activity as shown below.

Intent i = new Intent();
i.setComponent(new ComponentName ( "com.shetty.test","com.shetty.test.MainActivity"));
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(i);

Here what you need to notice is that the FLAG_ACTIVITY_NEW_TASK needs to be set, so that this is launched as a new task, else would result in Force Close.

Virtuous Ten Studio IDE for Reverse Engineering the Apks and Mods

I curse myself for being not aware of this wonderful IDE, which was developed some awesome developers. It's more like an Visual C++ IDE for the Android reverse engineering, it is very clean and make life much easier with its integrated environment and the folder structures it uses, after trying this, AndroidMultitool looks very premitive, never the less, Multitool has one advantage, which came to to help to crack one of the Apks recently, that it allows to sign separately, that way you can add some files inside the apk built and then sign it, which when I tried was not possible with this IDE. But this is not the case always.

Here is a screen shot of how it looks,


  • The best part of this is 
  • The smali sytax highlight and the Java code generation with so much ease, 
  • The tools that are integrated into
  • Easy navigation from the project source path to the binary path etc. 
  • Also best thing is after you have built the binary, you can directly push into the device, no need to copy and install on device, just a click.
  • And You can get the apks directly from the phone without having use another shell prompt or adb to pull them from the /data/app folder.
Overall this makes the job very easy, and hence you spend more time on finding the right thing rather than in doing it. 


Thursday, November 14, 2013

Android Application Hacking

As most of you know android is based JAVA, and it runs a Linux kernel. It uses a Dalvik Virtual Machine, and which is bit different from the Java Virtual Machine (JVM). Dalvik code since it is based on Java, we can have all the fun of java. I.e. We can decompile an Apk and generate the source code and them modify whatever we want to and then recompile to generate an custom application. This is all because of the DVM byte codes. If it were to be C language, it would not have been possible. 

I would like to write in detail as to how we can hack an application and different tips and tricks to be used, which I come across while doing such stuff. I am warning you, hacking is only for educational purpose, and I do not support unethical hacking. 

There are some good tools around which would actually simplify our process of decompiling, compiling, and signing of an app. And my preferred application is AndroidMultitool 

Here is the link to download the same, and usage details can be found in the same place, and I do not talk much about it, other than the link. But all I can say is that this is an wonderful tool, which makes the process super quick. 


First of all, you must know that your phone must be rooted to get access to these APKs and once rooted, this can be found at /data/app folder. Do a grep and find out where is the APK to be hacked. 

Some of the hacking tips now. 

Removing ads from the application. 

You must understand that the ads generate revenues for the developer and so we must support them, having said that, we can always get rid of it for many reasons, as it consumes lot of your 3G data. So it is your final decision what you want to do with it. We have different ways to go with it.


  • You can install some ad blocking apps which would actually modify your host file in Linux to block all the ad sites, which would not allow the app to fetch ad and show. 
    • But some ads would show local ad banners when network connections are not available.
    • Some apps would need internet connection for their working, so we can't disable internet connection in first place. 
    • Some would leave a blank space in the screen which is reserved for the ads, which eat up lot of screen real estate. 
  • Having said all this blocking the network connection for this app may not be so convenient, but it would be easy to do this for most of the apps, and most apps don’t leave space when network connection is not available, and hence this should be considered as the first preferred option. :)
  • You can find some very good apps for firewall, which can do this for you. I personally use Droid Wall to do handle the firewall. 
  • You can remove the ad content from the XML layout and recompile the app.
    • You need to search for the string @id/ad in all the xml files in resource folder, then use some common sense to change the height and width to zero. (0.0dip). Sometimes, you can remove this lines completely. 
    • If the app crashes after removing these lines, then it could be that these resources are accessed with in the code, by index and not by name, in that case, we may not be able to remove them, we can hide them by setting and android: visibility="invisible" or "gone". Gone would completely remove it, and invisible would make it transparent, but the screen real estate will not be recovered for other elements. 
Hacking the Android Apps (Getting Pro Features on Free Apps)

It may not be always possible to get the pro features on Free apps, but most of the times, we see that the Free app would have all the features in the application, but it would be blocked. In such cases we can search for some strings in the application project which we have decompiled, and try to figure out functions where they are blocked then unblock them.

Most of the cases I have seen till now, are very simple (I mean most complex blocks are easy to crack)
We  need to replace a line as below.

#if-eqz goto :cond_0
goto : cond_0

This is very trivial change, and it can change the flow of code, and then you would be able to use the Pro features. Or sometimes, some functions would be called to get some license checks which would return a zero on nonzero, and later that would be compared in many places, you make the function always return what is expected, your job is done. 

It is more of common sense to go through the smali files generated, and find out. You can check the smali syntax in Google, and that would give some good insight into what exactly the code is doing. 

Monday, August 26, 2013

Connect to a Wifi Network with WEP Encryption (Wifi Router) on Windows 7

It was some strange issue that I was able to connect to the Wifi network on one of my friends place on my phone, but I was not able to connect to my laptop, Whenever I tried to connect, It was asking for username and password. I am wondering what is this additional username field.

Did some Google and found that the issue was that the Wifi Router is using the WEP encyption, which is bit old and less secure, and hence windows 7 does not allow such connections, and you need to setup the connection manually. You need to follow below procedure to connect to such a Wifi Network.

Right Click on Wifi Symbol in Windows 7 Task bar, and select Open Network and Sharing Center.


Click on Setup a new connection or network


Select Manually connect to a wireless network


Now fill the SSID of the network with which it is identified (Hostel in this case) and also the password, select WEP as security type.


Now when you click the setup should complete successfully and it should work fine. All names and passwords are case sensitive, so be careful with case when entering. Hope this makes you day. Enjoy. 


Monday, June 17, 2013

Persistent Mapping of Windows Folder to a Drive

Have you ever wanted to a persistent mapping of a perticular folder to a drive to keep things segregated? I wanted to do it, because in office we were not supposed to partition the C: drive for some reason which I don't know.

So here is how you do it. You need to a Registry Entry for the new Drive. Open Regedit and make an entry as below.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Dos Devices]


Name - Z: (Drive letter you want to use)
Value - \??\C:\Users\pshetty1\2560P

You can go ahead and hide this folder in C Drive, so that you don't want to see here :). You need to restart the PC to see the changes.

Monday, March 11, 2013

Hacking android apps

Offlate I got some time to write a blog post to explain how to hack an android app. I always thought that hacking is very difficult. But later i realised that it is not that difficult.

There are few tools you need to start with android hacking. You would need to decompile the apk, and modify the smalli code,and then recompile the same. Zipalign and sign,. you are ready to go.

There are few things to keep in mind when hacking, first you need to study the application to find places where we see the checks, for example may be the screen where the password is asked etc. Then you can search the String resources with the Strings on those screens to find the logic related to F password cheek etc,you can then either change the logic or skip the code, os may be make that function return true inspte of the failed cheek. You are done, then recompile and see if it is working. If it does not don't be disappointed. You need to try again untilyou get the right hack.

Remember one thing most of the times the changes needed are not more than one line of code change. You would be surprised to see such week apps, But whatever they make to protect the app it is easy to hack.

Enough for now. This is kind of Introduction to hacking, you may need to google to find out how to decompile, recompile, sign, zip align etc, but at the end of the day it is fun

Sunday, February 17, 2013

Refreshed Galaxy SL (S3+)

Here the some UI update i did to my Galaxy SL to make it look more refreshed. Galaxy S3 icon, all new launcher,  and keypad.

Screen Capture In Galaxy SL

I was always assumed that this phone does not come with the default screen capture option. i accidentally got a screen capture when some call screen got captured by a combination of key press.

Then I searched a while and found that holding back key pressed and then pressing the home key will capture the screen shot.

I always used the root utility shoot me to capture the screen. I think this is a great deal.

Sunday, January 6, 2013

Adding more wallpapers to TwWallpaperChooser.apk

Now that I have explored how to de-compile an APK, we can play with its resources and XML files. The first experiment I did was to remove unwanted wallpapers from the TwWallpaperChooser.apk and add what I want it as default.

so here it goes, the basic procedure remains same, as decompile the apk and then recompile the apk.

First de-compile the apk into a folder with the below commands
apktool TwWallpaperChooser.apk TwWallpaperChooser

You would see a folder created with the files as shown below.






The contents of the folder is as shown below.




The important folder, and file you need to know in this case are /res/drawable-hdpi/ this folder contains all the images and their thumbnails, thumbnails are with _small in the name, and are of size 170x142, and main wallpaper images are of size 960x800. You can add more pictures and their thumbnails with the same size.

The reference to these files are made in the file /res/values-hdpi/arrays.xml, you need to edit this file to add more files and then recompile to generate a TwWallpaperChooseNew.apk.

Once you have your New APK ready, open both the NEW and OLD APK in some zip manager such as 7zip, and copy the resources.arsc from NEW apk to OLD apk, and also copy the images you have added into corresponding folders, and you are ready. The apk can be renamed to .zip file, so that it can be opened in zip manager, and once your copy is done, rename back to .apk file. 

You can now copy this file into /system/app and chmod to 644 and you are ready to use new TwWallpaperChooser.apk with added wallpapers. 

Here is few screen shots from what I have done. 


Hope you would enjoy doing it. Let me know if you have any questions.




Saturday, January 5, 2013

Decompiling Android APK to view the JAVA code

Recently, I have started hacking into the code of some of the APKs in my android phone after rooting it again, I decompiled the apk with APK tool, and did some work, now trying to get into the java code of the apk, came across a post and I found it very neat useful, and I am reposting it here for my personal reference at later point of time, with due respect to the original owner, I have not modified the content, here is the link to original post. 

1. Obtaining the “apk” file: 

There are many ways that you can obtain the apk file. You can probably find it on the Internet. Or the best way is to get it from your phone. In this example, we will tear apart facebook android app

The apk file of the application that is purchased from the android market is stored in ‘/data/app’ folder on your phone. To access this directory, you need super-user access. If your phone is rooted, follow the steps below to obtain the apk file if not, you might be able to get one from the Internet.


Copy over the apk file on to your computer from the sdcard.

2. Obtaining the “.dex” file: 


Open the downloaded apk file as a zip file. You can use “Archive Manger” on linux or “WinZip” on windows. You can also change the file extension to “.zip” and have the OS automatically open it as a zip file.

In there, you should see “classes.dex” file. This is the byte code of the complied application. Extract the file on to your computer.



3. Dex2Jar tool: 


You need dex2jar tool to decode the dex file to a jar file. The dex file is the Dalvik executable file. You can get the latest and greatest version at

http://code.google.com/p/dex2jar/downloads/list.

Download and install the application in your computer. I extracted it out on my android installation folder.

Once you have it run the “dex2jar” command to decompile the “.dex” file extracted in step 2.

You can run the following command on linux, on windows you can run the “dex2jar.bat” instead of “dex2jar.sh”

1 $ ./dex2jar.sh classes.dex

You should see an output as follows.



4. Decompiling the jar: 


You can now open the decoded “.jar” file from step 3 on a java decompiler of your choice.

There are few out there. I choose JD-GUI. You can download one from their site at:http://java.decompiler.free.fr/?q=jdgui

Install the tool and open the jar extracted on step 3. Boom now you can see the application code!

Friday, January 4, 2013

Decompile/Recompile apk's with ApkTool

You need to have 

  1. apktool / aapt, which can be downloaded from code.google.com (Click this link !)
  2. Java Runtime Environment(JRE), normally you would have it in your PC. It should be atleast 1.6, make sure to add this in your windows path variables. If you don't have it, then Google !
  3. Follow the instructions on the code.google.com to install the apktool and aapt, and unzip them to windows folder. On a windows system it is done like this (copied from the site, you can as well look there for other OS)
    • Download apktool-install-windows-* file
    • Download apktool-* file
    • Unpack both to your Windows directory
  4. Now your apktool is ready to use.
Now first things you need to do for decompile any APK is that, to have the framework file for that APK. apktool comes with the standard framework, so you need to execute the following command to get the framework required for decoding.

apktool if your_application.apk

You would get some message like below.
I: Framework installed to: /home/brutall/apktool/framework/2.apk

For more information about these framework files you can refer to google website here. (FrameworkFiles)

Now create a folder for you work, and place your_application.apk file in that folder, and open the command prompt and cd to that folder, and run the following command, you apk would be decompiled. 

apktool d your_application.apk your_application

This would create a folder named your_application with xml, resources, images etc. You can change whatever you want to  (if you know how to change! else do some experiment)

Now that you have changed you can pack them back to apk using apktool, run the following command. 

apktool b your_application your_applicationNew.apk

Now, as you know that signature would be different in this new APK, you have to open both these New and  original APK in a zip manager such as 7zip/Winzip and replace the images if at all you changed into the respective folder inside zip file, and also resources.arsc files.

This would complete the change, you can place it back where ever your apk was before, and ENJOY !!

Feel free to leave a message if it helped you in any way, and also let me know if you face any issues, would love to guide you. A Thanks would cheer me for writing more such posts :)




Thursday, December 27, 2012

How to root Galaxy SL (i9003) Gingerbread 2.3.6 XXKPU

I have updated my firmware to Gingerbread 2.3.6 XXKPU and I did not find an easy way to root this firmware.  I had searched enough on web and did not find anything which I thought would work. Tried few promising methods but they did not work.

Lastly I was seeing too many places mentioning about the CF-Root and was wondering what is this. I happen to see a video which shows the PDA to be replaced with the CF-Root corresponding to the XXKPU binary, which can be downloaded form the links in the post here.

Here you can download the CF root for many of the i9003 firmwares. Infact, what ever is your phone (Samsung) you can almost follow the same procedure, and you need to find the right CF-root file. Then the flashing procedure can be found on this you tube video here. Hope this helps everyone.

Thursday, May 31, 2012

Some C Interview Questions


Some recent set of questions I found from web, found them unique and interesting. 

The sizeof( ) function doesn’t return the size of the block of memory pointed to by a pointer. Why?
Answer:The sizeof( ) operator does not know that malloc( ) has been used to allocate a pointer. sizeof( ) gives us the size of pointer itself. There is no handy way to find out the size of a block allocated by malloc( ).

How do I write a program to convert a string containing number in a hexadecimal form to its equivalent decimal?
Answer: The following program demonstrates this:
main( )
{
char str[] = "0AB" ;
int h, hex, i, n ;
n = 0 ; h = 1 ;
for ( i = 0 ; h == 1 ; i++ )
{
if ( str[i] >= '0' && str[i] <= '9' )
hex = str[i] - '0' ;
else
{
if ( str[i] >= 'a' && str[i] <= 'f' )
hex = str[i] - 'a' + 10 ;
else
if ( str[i] >= 'A' && str[i] <= 'F' )
hex = str[i] - 'A' + 10 ;
else
h = 0 ;
}
if ( h == 1 )
n = 16 * n + hex ;
}
printf ( "\nThe decimal equivalent of %s is %d",
str, n ) ;
}
The output of this program would be the decimal equivalent of 0AB is 171.

What will be the output of the following code?
void main ()
{ int i = 0 , a[3] ;
a[i] = i++;
printf (“%d",a[i]) ;
}
Answer: The output for the above code would be a garbage value. In the statement a[i] = i++; the value of the variable i would get assigned first to a[i] i.e. a[0] and then the value of i would get incremented by 1. Since a[i] i.e. a[1] has not been initialized, a[i] will have a garbage value.

How do I know how many elements an array can hold?
Answer: The amount of memory an array can consume depends on the data type of an array. In DOS environment, the amount of memory an array can consume depends on the current memory model (i.e. Tiny, Small, Large, Huge, etc.). In general an array cannot consume more than 64 kb. Consider following program, which shows the maximum number of elements an array of type int, float and char can have in case of Small memory model.
main( )
{
int i[32767] ;
float f[16383] ;
char s[65535] ;
}

Are the following two statements identical?
char str[6] = "Kicit" ;
char *str = "Kicit" ;
Answer: No! Arrays are not pointers. An array is a single, pre-allocated chunk of contiguous elements (all of the same type), fixed in size and location. A pointer on the other hand, is a reference to any data element (of a particular type) located anywhere. A pointer must be assigned to point to space allocated elsewhere, but it can be reassigned any time. The array declaration char str[6] ; requests that space for 6 characters be set aside, to be known by name str. In other words there is a location named str at which six characters are stored. The pointer declaration char *str ; on the other hand, requests a place that holds a pointer, to be known by the name str. This pointer can point almost anywhere to any char, to any contiguous array of chars, or nowhere.

Is the following code fragment correct?
const int x = 10 ;
int arr[x] ;
Answer: No! Here, the variable x is first declared as an int so memory is reserved for it. Then it is qualified by a const qualifier. Hence, const qualified object is not a constant fully. It is an object with read only attribute, and in C, an object associated with memory cannot be used in array dimensions.

How does free( ) know how many bytes to free?
Answer: The malloc( ) / free( ) implementation remembers the size of each block allocated and returned, so it is not necessary to remind it of the size when freeing.

What is a stack ?
Answer: The stack is a region of memory within which our programs temporarily store data as they execute. For example, when a program passes parameters to functions, C places the parameters on the stack. When the function completes, C removes the items from the stack. Similarly, when a function declares local variables, C stores the variable's values on the stack during the function's execution. Depending on the program's use of functions and parameters, the amount of stack space that a program requires will differ.

What's the difference between these two declarations?
struct str1 { ... } ;
typedef struct { ... } str2 ;
A : The first form declares a structure tag whereas the second declares a typedef. The main difference is that the second declaration is of a slightly more abstract type -- its users don't necessarily know that it is a structure, and the keyword struct is not used when declaring instances of it.

How does a C program come to know about command line arguments?
A: When we execute our C program, operating system loads the program into memory. In case of DOS, it first loads 256 bytes into memory, called program segment prefix. This contains file tables,environment segment, and command line information. When we compile the C program the compiler inserts additional code that parses the command, assigning it to the argv array, making the arguments easily accessible within our C program.

When we open a file, how does functions like fread( )/fwrite( ), etc. get to know from where to read or to write the data?
A: When we open a file for read/write operation using function like fopen( ), it returns a pointer to the structure of type FILE. This structure stores the file pointer called position pointer, which keeps track of current location within the file. On opening file for read/write operation, the file pointer is set to the start of the file. Each time we read/write a character, the position pointer advances one character. If we read one line of text at a step from the file, then file pointer advances to the start of the next line. If the file is opened in append mode, the file pointer is placed at the very end of the file. Using fseek( ) function we can set the file pointer to some other place within the file

Why doesn't the following code give the desired result? 
int x = 3000, y = 2000 ;
long int z = x * y ;
Answer: Here the multiplication is carried out between two ints x and y, and the result that would overflow would be truncated before being assigned to the variable z of type long int. However, to get the correct output, we should use an explicit cast to force long arithmetic as shown below: 
long int z = ( long int ) x * y ;
Note that ( long int )( x * y ) would not give the desired effect.

Why doesn't the following statement work?
char str[ ] = "Hello" ; 
strcat ( str, '!' ) ;
Answer: The string function strcat( ) concatenates strings and not a character. The basic difference between a string and a character is that a string is a collection of characters, represented by an array of characters whereas a character is a single character. To make the above statement work writes the statement as shown below:
strcat ( str, "!" ) ;

What is the difference between "calloc(...)" and "malloc(...)"?
Answer:
1. calloc(...) allocates a block of memory for an array of elements of a certain size. By default the block is initialized to 0. The total number of memory allocated will be (number_of_elements * size). 
malloc(...) takes in only a single argument which is the memory required in bytes. malloc(...) allocated bytes of memory and not blocks of memory like calloc(...).

2.malloc(...) allocates memory blocks and returns a void pointer to the allocated space, or NULL if there is insufficient memory available.
calloc(...) allocates an array in memory with elements initialized to 0 and returns a pointer to the allocated space. calloc(...) calls malloc(...) in order to use the C++ _set_new_mode function to set the new handler mode.

Difference between const char* p and char const* p?
Answer:In const char* p, the character pointed by ‘p’ is constant, so u cant change the value of character pointed by p but u can make ‘p’ refer to some other location. in char const* p, the ptr ‘p’ is constant not the character referenced by it, so u cant make ‘p’ to reference to any other location but u can change the value of the char pointed by ‘p’.

How can you determine the size of an allocated portion of memory?
Answer:You can’t, really. free() can , but there’s no way for your program to know the trick free() uses. Even if you disassemble the library and discover the trick, there’s no guarantee the trick won’t change with the next release of the compiler.

Can static variables be declared within a header file? 
A:you can not declare a static variable without defining it as well (this is really because the actual storage class modifiers static and also extern are mutually exclusive). A static variable could be defined in a header file, but this would cause each source file that included the header file to get its very own private copy from the variable, which is most likely not what was meant

Can a variable become both constant and volatile?
A:Yes. The const modifier implies that this particular program code cannot change the value of the actual variable, but that will not imply that the value can not be changed by means outside this code. For instance, within the example in frequently asked questions, the timer structure was accessed through a volatile const pointer.The function by itself did not change the value of the timer, so it had been declared const. However, the value had been changed by hardware on the computer, so it was declared volatile. If a variable is both equally const and volatile, the two modifiers can come in either order.

Sunday, February 5, 2012

Sony Vaio Battery Replacement (VGN-CR-313H)

It has been three years since I have bought my Sony Vaio, Long back my battery has gone and I wasn't getting much of battery life (approx 10 mins). So mostly it was always plugged in when working, but because of the battery it was getting heated up too much, and it was never on Lap Top!!

Recently it crashed because of a RAM issue, and I took it to my friend if he could open it up and remove a RAM and check with other RAM, I did not had the right equipment to open it up. I am going to order one from EBAY and hope I would be able to do it next time. It was finally up when the faulty RAM was removed. Now that he also had cleaned the cooling fans the only thing that was causing heating was my old battery. He suggested to order a battery on Ebay from Hong-Kong which you would get at 1/5th of the price you pay when you buy it from Sony. An order was placed. It arrived in about 2-3 weeks time. 

Only when I opened up the pack, there was a small CD saying that you may have to update the BIOS to use this intelligent battery. I am not sure how a battery can be intelligent, so I just plugged in the new battery and it wasn't booting the laptop. When I checked it with my friend I came to know that the SONY BIOS reads the serial number of battery from its EEPROM and hence it would not allow non-oem battery to work with a VAIO. Now I understood why they have asked to patch bios for working with INTELLIGENT battery. 

But since I had windows 7, 64 bit OS, the software tool they have provided to update bios did not work because of USER access permission error as below.

Phoenix Secure WinFlash "Cannot load driver C:\....phlashnt.sys. This driver has been blocked from loading. Error code:1275.”

Now I had to fall back to windows xp to run this tool to update bios and then install windows 7 back. Now that flash is updated the battery is working fine, and I am getting about 2+ hours of backup. I am happy finally. I just updated this in blog, so that for anyone who bought non-oem battery on ebay, don't assume that your battery is FAKE, but it is intelligent, and you need to patch your bios. Keep in mind that any failure while updating bios would brick your laptop, and it would be rendered useless. Make sure you back up bios before updating and you know the right procedure and tools.

For any help, do leave a comment, I would try to help out.

Saturday, December 10, 2011

Configuring CSipSimple SIP client on Galaxy SL for Nymgo

Here is the configuration to be done. These is carefully written to cover most of the points and a hastle free experience when you do the setup. You can refer to nymgo.com site, they have given some basic info, it would serve as reference.

First when adding account, you need to select the Basic Wizard.
Menu Key -> Accounts  -> Add Account  -> Generic Wizards -> Basic

  • Account Name: Nymgo
  • User: Nymgo User Name
  • Server: ata.nymgo.com (no need to give port number even though we knows its 80, it would be taken care by wizard, and if you give, it seems to be not working for me)
  • Password: Nymgo Password.
You are almost done !! 

Next thing is that, we should be using UDP for communication, so 

Menu Key (Left Soft Key in Galaxy S) -> Settings -> Network
Do the following settings -> UDP port number set as 5060

Stun should be on -> set it to stun.nymgo.com:80

Set Networks for All outgoing calls.

Settings -> Media
* You need to disable all codecs except below ones
   G729 8Khz (Wideband)
   G729 HKhz (Narrowband)
* Use Samsung Galaxy Hack [ checked ]
* Micro / Speaker amplification can be used if audio is very low, I have used mirco to 5 and audio as it is.

Settings -> Call options
Caller id -> Set to your own number, if you have used caller id feature in Nymgo.

Settings -> Filters 
These can be used when you have enabled the Android integration, and can be used to make sure all numbers starting with +91 (India) can be made to go through phone dialer and International calls through Nymgo, I have enabled it, but its optional, let me know if you have any questions here.

Once the configuration is done, dial 111 from your SIP dialer and wait for Nymgo test service, and you would be able to test if you configuration is working fine, if you could hear your own voice back after recording, then you are ready to use nymgo, feel free to drop your comments and queries, I would be glad to help you.


Saturday, November 12, 2011

Some of the useful info when working with ADB on phone


For remounting the system partition as RW on Galaxy SL, (need to be super user)
# mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

For mounting back to RO
# mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system

Basic ADB commands
# adb push <local_path> <remote_path>
# adb pull <remote_path> <local_path>
# adb install <path_to_apk>

If you have not installed the cp command may not work, the work around would be 
# cat [source_file] > [destination_file]

The command binaries would be located at this location, /system/bin/ And if you had installed busybox, in /system/xbin/ then first the above path is looked for command, and later the below path.

The /system partition has limited memory, so if you try installing too many applications here, then you may run out of space, and its a better idea to delete many of the unwanted bloat applications from there. I have deleted the following apps and they do not be of much use for me. May be if its not useful for you, you can delete them as well. And you can also delete any other apps which are of no use for you.
  1. Samsung Apps [They are meant for Bada, and of no use in Android! wonder why its added here!]
  2. BuddiesNow.apk/odex
  3. thinkdroid.apk/odex [ThinkFree Office - I have installed Polaris Office instead of this, which is much better]
  4. Day.apk/odex
  5. DualClock.apk/odex
  6. SamsungWidget_Calenderclock.apk/odex
  7. SamsungWidget_Feedandupdate.apk/odex
  8. SamsungWidget_stockclock.apk/odex
  9. SamsungWidget_Weatherclock.apk/odex
All the best, and keep a backup of the file before altering or deleting any file inside /system partition, so that you can restore if something goes wrong, and I am not responsible for any thing if at all it goes wrong :)
Some useful tips and tricks about galaxy S/SL can be found here, its quite long, but when free go through.

Monday, October 3, 2011

Install Polaris Office of Galaxy S2 on Galaxy SL i9003

Polaris office is one of the office suite for mobile, similar to the many available for mobile phones. Galaxy SL comes with think free office, which is also good, but formatting, editing are much better in Polaris office. 

You need to have root for installing this application, as it needs to be installed in system folders. I have referred to this post of xda for installation and also downloaded from the link provided there.


Here is the procedure to follow to install the same

1. Extract the files from compressed file
2. Copy apk from app to /system/app
3. Copy files from lib folder to /system/lib

You may have to free some space in /system folder as that partition is of limited size, and you may need to delete unwanted applications and may be you can delete the think free application.

Tuesday, September 27, 2011

Update i9003 with Galaxy S-II Dock Icons

Bored of the same dock bar at the home screen, and you think the Galaxy S-II one looks much better. Its not difficult to update it to that. All that you need it root permissions.

I could not get this full information in one place on net, so if you are reading my blog you are lucky to have all the information in one place. You do not need to install a custom TouchWiz, you can modify what you have right now. I am running TouchWiz 4.0 for your information. (Galaxy SL - Gingerbread 2.3.4 XXKPH) 

First have copy Contact.apk, Email.apk, Mms.apk and TouchWiz30Launcher.apk & DialerTabActivity from system/app to PC, then Open it with any tools such as Winrar or 7Zip, do not extract.


check the icons in the path - res/drawable-hdbi.


-Contakt.apk: ic_launcher_contacts.png
-DialerTabActivity - ic_launcher_phone.png
-Mms.apk: ic_launcher_smsmms.png
-Email.apk: icon.png
-TouchWiz30Launcher.apk: mainmenu_icon_application.png and mainmenu_icon_home.png.

Replace all these icons with new Icons and drag and drop into the 7Zip explorer.
Copy the .apk fils back to system/app and restart the launcher or the phone.

It should look something like this, after you have updated everything that is mentioned here.


That goes with many stock apps. I hope its useful.

The Samsung Galaxy S-II icons can be downloaded from here.