Wednesday, July 31, 2019

Novelist of the Harlem Renaissance Essay

In Nella Larsen’s Passing, racial identity and â€Å"passing,† or traversing the color line, have multiple configurations. Clare Kendry is the character who seems to saunter undisturbed back and forth across the color line. Irene Redfield wants to maintain a strict perimeter around her life, a perimeter far from the ambiguity of the color line. Their reunion starts when Clare introduces herself to Irene at a restaurant and end with Clare’s death. It is easy to read the novel as one where Clare is dangerous to Irene’s life. After all, she brings the color line right to Irene’s doorstep. But Irene seems to be more dangerous at the end of the novel. Larsen raises the question of whether Irene pushed Clare or if she fell. Irene and Clare interpret racial identity in very different ways. â€Å"Passing† is also open to interpretation, not only because racial identity is constructed but, because Irene and Clare also negotiate boundaries of gender and sexuality. Just as she does with race, Irene maintains a strict perimeter around her sexuality and in adhering to expectations of femininity. The abandon with which Clare seems to move back and forth across the color line is the same abandon that seems to inform her sexuality and gender identity. Larsen very skillfully unsettles reader expectations by delineating a rigid character on one hand and a flexible character on the other. Then Larsen undermines those expectations over the course of the novel. A reader’s experience of race is initially confirmed by Irene and challenged by Clare but not all of the pieces of puzzle fit. Class identity, something both Irene and Clare have in common, is a consistent challenge to broad generalizations in the 1920s about what black people could do and be. Because of the way â€Å"class† and socio-economic â€Å"place† for black people was associated with extreme poverty and lack of education, a middle-class black woman could not â€Å"stay in her place. † Works Cited Davis, Thadious M. Nella Larsen, Novelist of the Harlem Renaissance: A Woman’s Life Unveiled. Baton Rouge, LA: Louisiana State University Press, 1996. Doyle, Laura. Freedom’s Empire: Race and the Rise of the Novel in Atlantic Modernity. Durham, NC: Duke University Press, 2008. Favor, J. Martin. â€Å"A Clash of Birthrights: Nella Larsen, the Feminine, and African American Identity. † Authentic Blackness: The Folk in the New Negro Renaissance. Durham, NC: Duke University Press, 1999: 81-110. Hutchinson, George. In Search of Nella Larsen: A Biography of the Color Line. Cambridge, MA: Belknap Press, 2006. Jenkins, Candice M. â€Å"Decoding Essentialism: Cultural Authenticity and the Black Bourgeoisie in Nella Larsen’s Passing. MELUS 30. 3 (2006): 129-54. Larsen, Nella. Passing: A Norton Critical Edition. Ed. Carla Kaplan. New York: W. W. Norton, 2007. Rabin, Jessica. Surviving the Crossing: (Im)migration, Ethnicity, and Gender in Willa Cather, Gertrude Stein, and Nella Larsen. New York: Routledge, 2004. Wald, Gayle. Crossing the Line: Racial Passing in Twentieth-Century Literature and Culture. Durham, NC: Duke University Press, 2000.

Human experience Essay

Star I thought it was a big coincidence that I ended up babysitting for a cancer patient with the same name as mine, Stephanie. Star, as she was fondly called, was a picture of hope when I first met her. I was a student then at a university near the hospital where she was confined. Her mom was a friend of my sister’s and one day, she took me with her to visit Star. That visit marked the beginning of a wonderful friendship. Every day I would visit her and she will be waiting by her window. I would bring her gifts, mostly toys and books I bought from a bookstore beside our school. We would often read the books together or play with her dad. One time, we also decorated her room with paper flowers and dolls. Star shared her dreams with me. She told me she wanted to become a doctor someday and help children like her. She wanted so much to get well that seeing her fighting for her life everyday sent tears to my eyes. But I never showed her my weakness for fear that that will bring her to her end. She taught me in her own little way to remain brave and hopeful despite the trials that come my way. It was in the afternoon of August 7, 2001 that she finally bid us goodbye. She knew it was her time to go back where she belonged, among the little angels of God where there is no pain, no tears, but only joy. That experience in my life made me wonder if God really exists and if He does, how come He didn’t answer my prayers. On the other hand, I knew that it was for the best. I myself didn’t want Star to suffer any longer. I realized God works in mysterious ways and we have to pass by many significant experiences to keep our faith and love for Him strong.

Tuesday, July 30, 2019

Social Network Essay

Social network essay Social networking can be a useful tool for keeping in touch with friends and family but when it is used to substitute it for actual face to face contact it can be a dangerous thing. You can't lie; social networking is a very large part of our lives. In September 2011 Facebook registered 800 million users. Social networking can have good effects on people and help them out but it can be used inappropriately and can have very disastrous effects on people’ friends that you want s lives.Social networking may have some cons but if used properly it can be a very useful device. When used properly it can help you stay in touch with people you wouldn’t normally be able to like friends or family overseas. Instead of having to call or write a letter you can just talk over the internet. It may not only be family or friends that you want to talk to, there might be someone that you like but don’t have the confidence to talk to them. You can build up your c onfidence over the internet and not worry about stumbling over your words.One of the arguments that people who are against social networking is that it can reduce face to face contact but if you use it well then It can actually increase it. You can organise things very easily compared to other ways like over the phone. Things like Facebook can be very helpful if used right but that can be the problem. People may feel they are being social but online interaction is no substitute for face to face contact. â€Å"Facebook is a tool. I compare it to a car: you can drive to isolate yourself from others or you can drive to meet people.If you use Facebook to increase face-to-face contact, it increases social capital. † It can help people but only if you do the right thing. This can be a really bad thing about social networking, it can promote loneliness. People will feel as though they are being really social but really they are becoming lonelier. People will feels as though no one r eally knows who they are and what they are really like. It can make people even worse when they see a new photo album or post saying â€Å"best day eva† tagged with some friends. That can make people feel left out and not part of a group.It can make people jealous of others and why they didn’t get invited. It isn’t always accidental when people get hurt though. Social networking can be good if it is used correctly but the problem is a lot of people don't. People don’t always realise that posting something when you ten or fifteen can come back to hurt you when you are twenty-five. You could do something or have photos of you on Facebook when you were younger and then you are going for a job and they find it you could end up missing the job just because of that. It can give kids a much easier way to bully their peers.In the schoolyard you can have teachers around to stop it but over the internet there isn’t someone there to stop it. You do have to be careful about who you are talking to because they might not always be who you think. You shouldn’t add people who you don’t know because you don’t know who they are and what kind of person they are. Social networking can be a good thing but it must be used correctly. Social networking is a good thing but it must be used correctly or else it becomes a very dangerous place for everyone. It can be a very useful and important device but it may be us who end up destroying it.

Monday, July 29, 2019

Marketing concept Essay Example | Topics and Well Written Essays - 500 words - 3

Marketing concept - Essay Example Distributional and promotional aspects should also be accounted for in pricing such that the end result of the process is consistent with all the variables in the company’s interests. The primary purpose of pricing strategies is to specify the role of price in the implementation of marketing strategies (Drummond & Ensor 180). The aim of any given company in business is to market its products in order to gather a sufficient market share, thereby enhancing its profitability and a diversified portfolio. In this regard, the applicability of pricing strategies at an individual level cannot be refuted. Pricing strategies in the marketing context have constituted my personal experiences in two ways. These ways relate to the actions engaged by companies and firms in a bid to satisfy their customers and remain profitable at the same time. One of such personal experiences in the context of pricing strategies relates to penetration pricing. A company undertakes such a move in order to stimulate demand for its products. This is done by offering the consumer or the buyer a low price, such that the buyer feels favored and therefore compelled to make purchases. Rational buyers seek to maximize their welfare, and do I, given the interests of the company. When a product whose quality is not compromised is provided at a cheaper price, its demand rises. I have made several purchases under this notion, thus the applicability of penetration pricing in several transactions that I engage in. Another pricing strategy that relates to my personal experience is that of premium pricing. This factor is based on the competitive nature of firms. Firm compete for the market share in order to reap the highest benefits at the minimum cost possible. Competition may necessitate that a firm set its price higher than the competitive price. However, this is only possible when the

Sunday, July 28, 2019

Minor assessment Essay Example | Topics and Well Written Essays - 1250 words

Minor assessment - Essay Example firm, on the other hand, is facing defective products from claims by the Spanish firm. The contract that the two companies signed contains an arbitration clause and alternative dispute resolution provision with choice of law features. This contract defines several key issues to be observed by the two companies in their dealings as partners in the business: their conduct, litigation and dispute resolution. These include the following factors: Castilla S.L. and New Jersey Inc. will work on an exclusive basis to purchase and resell chattels in the region defined by the two entities. Both companies accept the appointment on the terms and conditions set forth herein that obligates the companies to fulfill the requirements of this agreement. The term â€Å"Product† will mean the chattels that will be sold by the two companies. The two companies reserve the right to delete discontinued products upon thirty days’ written notice to all stakeholders. 1) The companies can agree to solve the problems out of court as partners because this option is available in the contract signed by both parties. They can come together to analyze the causes of the delivery delays by the Spanish distributor and the defective product claims by the Spanish firm. This option will be very important because the companies have not worked together for long and these problems could be because of minor issues that can be solved and ignored. 2) The second option would be for the firms to implement fully the clause from the contract that requires that any of the partners should pay for the risks if it is it found out that the firm deliberately caused the risk. This can be done by conducting an investigation to the problems and the participation of the firms. 3) The third option would be for the companies to allow the court to help them solve the dispute because this option is also provided under the contract. Both parties have claims against the other. Therefore, going to court could be the

Saturday, July 27, 2019

An Articular About the Strategic Performance of Mitchell & Butler Essay

An Articular About the Strategic Performance of Mitchell & Butler - Essay Example So what makes this possible in a world where luxury is about taking pleasure in life in the best of the hospitality facilities in the world? It lays in the corporations operations that are divided into two business divisions namely â€Å"Pubs and bars† and â€Å"Restaurants†. Mitchells and Butlers Company owns and operates a considerable number of pubs, bars and restaurants, and this is, in addition to a number of, hotels that are located in the same place, but different venues with the pubs and restaurants. What has been done to tap into the worlds market and better their services for competitive advantage? The business divisions operate under different brands such as Sizzlin pub Co and Vintage inns. These are just two out of the available twenty four, and are as a result of the company’s first merger of midlands family businesses to form Mitchells and Butlers back in 1898. This was just the start of mergers the company would be involved in, and this was experie nced in 1961 and 2010 after the purchase of HaHa Bar and Grill businesses, and this gives way to All Bar One and Brown Brands. Now who said that organizations should cut on costs by utilizing the available resources to achieve the best? This is certainly Mitchell and Butler’s management which has affected team work. ... Food has now replaced drinks in terms of percentage of sales increasing from 31% five years ago to 47%. The business strategy of the company was born out of the January 2012; Board members’ review that was conducted on the business with a view of modernizing and developing the company into a favorite in the food enterprise business. The review outlined the developments that came up in the last 55days after evaluating the organization. The business entity was a strong, financially sound with solvable setbacks backed with a vast reserve of assets, brands and an efficient management team. This came in line with the significant expansion in the total figure of brands produced by the company and abundant opportunities aimed at downsizing the portfolio of the brands, reduction of expenses, recovering the margins and managing incentives. The company vision was to be used as a typical extent of food and beverages in the foodstuff industry. An interview with the company’s execut ive chairman Mr. Bob Ivell revealed that the company has its eyes set on success by ensuring that their business attract and retain customers. The company wants to utilize the fresh and quality products which in turn dictate the prices. The business entity base its tactics on a recent research that outlined that food records 42billion dollars of the total 71 billion for food together with beverage in the market. This is to maintain competitive advantage over their competitors. Introduction of Landmark Beer guidelines in the year 1989 altered everything, save for rapid evolution of innovative brands similar to brands like Browns, O’Neill and bars, taking into account the economic situation at that time. It is noteworthy that the company had got a share in

Friday, July 26, 2019

Should schools help students think indiviually Essay

Should schools help students think indiviually - Essay Example The argument whether school’s should teach uniformity or encourage to think individually was settled in the character of the new teacher Mr. Keating who was unlike other teachers who does not stick to the syllabus whose teaching style is different. He instead use poem and encourage his students take risk even that means breaking rules to make their â€Å"lives extraordinary†. He even introduced the idea of Carper Diem of letting the students decide what is good for them. There are two philosophers who encouraged independent thinking – they were Thoreau and Emerson. Both delved into transcendental philosophy through the exploration of the higher dimension of the self through non-conformity (Emerson) and simplicity (Thoreau). Self-reliance as put forth by Emerson and Thoreau is the independence of the self that does not subscribe to the â€Å"foolish consistency [which] is the hobgoblin of little minds, adored by little statesmen and philosophers and divines† (Emerson) and independence which is free from any unwarranted neediness that enables one to appreciate existence better as articulated by

Thursday, July 25, 2019

Crohn's Disease Research Paper Example | Topics and Well Written Essays - 1000 words - 1

Crohn's Disease - Research Paper Example Ulcerative colitis only involves the colon and affects only the superficial layers of its inner lining (mucosa) in a uniform distribution, starting from the anus. Conversely, Crohns disease may appear at any part of the digestive tract—from the mouth down to the anus, but most commonly at the lower part of the small intestine (ileum), involving perhaps all layers of the intestine, with normal healthy bowel between sections of diseased bowel. (National Digestive Diseases Information Clearinghouse 1) Although the exact root of Crohns disease is still a mystery, the condition is associated with a problem in the reaction of the bodys immune system called an autoimmune disorder, where the immune system is unable to distinguish between normal and foreign bodies. (Longstreth) According to Dr. Schoenfeld and Dr. Wu, the cells and proteins composing the immune system, normally defend the body against foreign invaders, such as harmful bacteria, viruses, fungi, etc. by being launched, causing inflammation—an important defense mechanism of the system, within the tissues where activation occurs, and triggered only in the presence of harmful invaders; furthermore, continued and abnormal activation of the immune system in the absence of the said foreign bodies results to chronic inflammation and ulceration. Whether this abnormality in the immune system response is a cause or a consequence of Crohns disease is yet to be determined by scientists, but research shows that a number of fact ors—genetic inheritance, the immune system itself, and the environment, have to with the aforementioned inflammation in the digestive tract. (NDDIC 2) NDDIC (2) has affirmed that it was found out that people with Crohns disease have high levels of tumor necrosis factor (TNF), a protein produced by the immune system.  

Templeton Essay Example | Topics and Well Written Essays - 500 words

Templeton - Essay Example Since God is described as omnipotent and omniscient in most religions, then using science, He won’t be physically detected, measured, and studied. Shermer states that because of this, if we were to encounter such a being then it would be hard to distinguish it from an Extra-Terrestrial Intelligence (ETI). Just like we have advanced in science and medicine, over the span of only half a century, then an ETI a few thousand centuries ahead of us would be able to create whole ecosystems and even universes (Templeton). According to Shermer, this is no different than what people might call God. If science were to discover a great being, then it would also be natural and limited by the laws of nature, not something omnipotent. That is why Shermer states that the belief of God can continue with science but the existence of God becomes obsolete. I think Shermer is right in saying that belief can coexist with science. However his views are a bit limiting towards God. Since God is viewed as omnipotent and omniscient then He can’t possibly be measured, detected, and contained, and just because science can’t calculate Him doesn’t mean that His existence becomes obsolete. Just like religions and beliefs, science also has its limitations and contradictions. For example, we can’t truly measure emotions like love and sorrow. However, just because they can’t be measured, doesn’t mean that only their belief is fine and their existence obsolete. Kenneth R. Miller does not believe that science makes God obsolete. According to Miller, science gives us more ways to appreciate and realize the vastness of God and His creation. God doesn’t have to be something that is in darkness and shadows. Why can’t He be the driving force of evolution, biology, and science? Miller states that God is real and instead of limiting Him to the remote regions of our

Wednesday, July 24, 2019

Interview Article Example | Topics and Well Written Essays - 250 words

Interview - Article Example She said completing a project like educating others about engineering is a source of outreach and it helps to engage the community about issues or problems in engineering. Maya does say that it is very complicated to work within a school setting but that the outcomes are very rewarding. Maya will fix an engineering problem by using educational strategies. Additionally, in educational research, experimentation is a way to gain insight into methods of instruction. Even though teaching is context-specific, results can provide a starting point for further research. Working on research not only helps to solve existing problems, but it also is challenging. For Maya, educational research primarily focuses on experimentation to gain awareness on a specific topic. Although teaching an engineering class encompasses working with specifics, research is often a preliminary stage for further study. She will go on to build new methods in research as she learns by dealing with students. She recognizes that completing research is necessary in order to solve a specific problem and may often receive attention from a large audience and additionally may often require urgent results depending on the

Tuesday, July 23, 2019

The Baha'i Faith Research Paper Example | Topics and Well Written Essays - 1000 words

The Baha'i Faith - Research Paper Example (Hartz, 2009, p. 6) The Baha’i Faith is said to be the youngest religions of all. It originated in Persia (now Iran) in less than two hundred years ago. It originated as a small local religious movement. It comprises of diverse groups of people belonging to varied religions, nationality, creed, ethnic background etc. (Hartz, 2009, p. 6) It developed out of Babi religion. Babi was a movement within Shi’i Islam. The Shi’i Muslims believe that a series of twelve Imams from the Prophet’s own family are the deserving successors of Prophet Muhammad. According to this belief, those twelve Imams were only eligible to rule the Islamic world and were true divine instruments of divinely transmitted knowledge. Shi’i Islam continues to uphold the Islamic Theosophical philosophy; later developed the Shaykhi school of Shi’i theosophy. They in turn followed the teachings of Ahmad al-Ahsa (1753-1826). His teachings were continued by Sayyid Kazim. Both of them served as true messengers of God for people who craved to know the truth and to seek God. They served as divine instruments to interpret and reveal various esoteric teachings to the deserving followers. With the death of Sayyid Kazim, arose the Babi movement centering the ‘Bab’ out of a deep succession crisis (Smith, 2008, pp. 3- 5). After a prolonged series of events, over the years, the ‘Bab’ emerged out to be a very prominent leader and in 1844 he claimed that he had a deep revelation from God and that he knew the divine truth. Many people followed him. However, the Muslim religious leaders of Persia executed the Bab and also killed many of his followers because they felt threatened by this movement. Finally, Baha’u’llah was the person who gave Baha’i Faith its special significance and shaped its moral values. He was one of the early followers of the Bab but his contribution is considered to be far

Monday, July 22, 2019

History of Circular Saw Essay Example for Free

History of Circular Saw Essay Circular Saw- As changes in the economics of the industry occurred, developments in powered machinery began that had an impact on both preparing and assembling. In 1805, Brunel took out a patent for large circular saws particularly associated with veneer cuttingand in 1807 developed the saw further in association with block-making machinery. However, one of the most important developments was not on this scale at all. The small circular saw of up to seven inches diameter, often operated by a treadle, was one of the keys to the success of small-scale furniture makers. This saw enabled makers of cheap furniture to square up, mitre and rabbet cleanly, accurately, and quickly, allowing the frames of cheap carcase work to be simply rebated and nailed. This method of rebating, using a circular saw, was particularly useful for drawer-making which was traditionally a place for using dovetail joints. The advantage of this cheap method was that a dozen drawers could be made in the time it took to merge joint just one. History behind the chair- Thomas Lee was the first to build and found the Adirondack Chair. He made it simply for relaxation for his family members. It was a great success and all his family members really liked the chair. He decided he would show it to a carpenter named Harry Bunnell. Bunnell really liked Lee’s chair and decided that he should start making them more than just for family but for a profit. Without Lee’s knowledge he patented the chair idea and began making his own Adirondack chairs with the same design as Lee’s. It was a big hit around the region and soon in the history of furniture. Originally it was named the Westport chair but then later on it was renamed the Adirondack Chair. Bunnells Adirondack chairs were made of hemlock, painted in either dark brown or green, and signed by the carpenter himself. Today, Bunnells original chairs come at a hefty price, about $1,200 each and he sold them for only $4.00.

Sunday, July 21, 2019

How Number System Is Used In IT

How Number System Is Used In IT In this documentation I have discussed of how the application of number system is used in IT applications in both hardware and applications, operating system and in programming language. I have discussed about the use of base 2 in the 8 bit bytes form use with the operation for subnet. The use of hexadecimal form addressing memory and classless inter Domain Routing. There are number of different numbering system which is in use for the unique ability to represent different numbers. Binary, Octal, Denary and Hexadecimal are number systems that are used in different aspects Denary number is the most commonly used number system which is frequently used in daily life. Nevertheless each number system has associated benefits which are the reason that different number systems are used in different areas. Each of the number system has a fix number of representation of numbers which are used to represent the numbers like, say for example Binary numbers are represented by either one or zero, Octal numbers are represented by numbers from 0, 1, 2, 3, 4, 5, 6, 7 whereas Denary and Hexadecimal numbers are represented by the number of 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 and 0, 1,2. 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, respectively. Binary Numbers Binary numbers are mostly used when there are only two options available so if one is false then the other is true. Examples of binary system can be their usage to represent bits in a computer which can have only 0 or 1 value a switch in a electric circuit which can be either on (1) or off (0). Binary system is widely used to represent situations in everyday normal life as well for example for electronic gates in electricity circuits, false or true statements can also be displaced in terms of binary digits where 0 represents false and 1 represents true states. Denary Numbers Denary numbers are frequently used in everyday life in accounting, calendar systems, financial systems or daily routine counting. The main benefits of Denary number system is that they are easier to use as compared to other number systems and have more number to present different situations though Hexadecimal number system has more representations but that representation can include characters in them as well which makes them more difficult to understand and use as compare to denary system. Denary number systems are so frequently used that a person even do not need to have a formal education to know or use them. One of the reasons can be that it is frequently use in daily life accounting. Other number systems are used in more specified fields such as computing and hence would need to be learned. Octal Numbers Octal numbers are not that commonly used as compared to other numbers and are mostly used in computing graphics, text and famous operating system such as UNIX also uses octal numbers for their file protection system. Octal numbers have total of 8 unique representations which can be combined together to make more octal number representations. Octal numbers are difficult to understand for a normal person who has limited number of understanding about the number system. As after 7 different numbers are used to represent numbers from 7 onwards and hence they seem physically bit difficult to comprehend. The number system needs to use a subscript of 8 with is number to represented they are not Denary but octal number otherwise confusion can easily occurred. Hexadecimal Number System Hexadecimal number are used where there are more options which needs to be represented off and are mostly commonly used in computing to represent different memory locations. Since binary, octal and hexadecimal have representations which are powers of 2 (power of 0 in binary, 3 in octal and 4 in hexadecimal) hence that makes them more suitable to different situations, which require different number representations. They are positively contributing to the daily life and to the technology and logical world as well and needs to be understood properly if one needs to take advantage of such technology. Whilst the above gives uses of the binary, octal and hex number systems in different areas of IT and while some example are given the manager encourages you to research a wide range of examples for him to look at. Binary Number System used in ASCII table and IP Address Binary number system are also used in the ASCII table to represent different codes for different characters which then can be used into computing as well. ASCII number is more like a combination of binary numbers. Binary numbers are also used in IP addressing system again which is a combination of Binary number and are used in computing field. These IP addresses are of two different versions now one is known as IP 4 and other one is known as IP 6. These IP addresses are further sub divided into different classes such as class A, B and C where each class has a different number of hosts and network address. The ASCII character set, each binary value between 0 and 127 is given a specific character. Most computers extend the ASCII characters set to use the full range of 256 characters available in a byte. The upper 128 characters handle special things like accented characters from common foreign languages. In ASCII character set, each character is represented by 7 bits when stored in the computer and in an extended ASCII character set, each character is represented by 8 bits. Say for example: ASCII 0000000 represents NULL Similar the word HELLO if converted into binary using the ASCII to binary conversation could be represented as follows. 01001000 01000101 01001100 01001100 01001111(in decimal 72 69 76 79) Please refer an ASCII character table for further understanding of this conversion. ASCII Binary Conversation Octal numbering system for file protection in UNIX Every file or folder in UNIX has access permission. There are three types of permissions (what allowed to do with a file): Read Access Write Access Execute Access Permissions are defined for three types of users: The owner of the file The group that the owner belongs to Other users Thus, UNIX file permission are nine bits of information (3 types x 3 type of users), each of them may have just one of two values: allowed or denied. Simply put, for each file it can be specified who can read or write from/to the file. For programs or scripts it also can be set if they are allowed to be executed. Textual representation like -rwxr-r- It is used in UNIX long directory listings. It consists of 10 characters. The first character shows the file type. Next 9 characters are permissions, consisting of three groups: owner, groups, others. Each group consists of three symbols: rwx (in this order), if some permission is denied, then a dash -is used instead. For example -rrwxrr- 0123456789 Symbol in the position 0 (-) is the type of the file. It is either d if the item is a directory or l if it is a link, or - if the item is a regular file. Symbols in positions 1 to 3 (rwx) are permissions for the owner of the file. Symbols in positions 4 to 6 (r) are permissions for the group. Symbols in positions 7 to 9 (r) are permissions for others. r Read access is allowed w Write access is allowed x Execute access is allowed Replaces r, w or x if according access type is denied Numeric (octal) representation like 664 If a numeric representation is used (like in chmod-command, for example), then it is in the octal format (with the base of 8), and digits involved are 0 to 7. Octal format is used for the simplicity of understanding: every octal digit combines read, write and execute permissions together. Respective access rights for owner group and others (in this order) are the last three digits of the numeric file permissions representation. Example: 0644. Here the second digit (6 in the example) stands for rights of the owner, the third digit (4 in the example) stands for rights of the group, the fourth digit (4 in the example) stands for rights of others. The below tales show what numeric values mean: Octal digit Text equivalent Binary value Meaning 0 000 All types of access are denied 1 x 001 Execute access is allowed only 2 -w- 010 Write access is allowed only 3 -wx 011 Write and execute access are allowed 4 r 100 Read access is allowed only 5 r-x 101 Read and execute access are allowed 6 rw- 110 Read and write access are allowed 7 rwx 111 Everything is allowed According to the above table we can see that 1 stands for execute only, 2 stands for write only, 4stands for read only. To combine the permission you can simply add 1, 2 and 4 to get a needed combination. For instance, to get read and write permission, you add 4 (read) and 2 (write), thus getting 6 (read and write). To get read and execute permissions, you add 4 (read) and 1 (execute), this getting 5 (read and execute). Example: 755 on a file would mean rwx r-x r-w permission on the file. Simply convert the octal number to the binary equivalent and enable the permission where the bits are 1. 755 would mean 111 101 101 In addition there is one more octet representing the Set user ID, set group ID, sticky bit which works in a similar way. Octal digit Binary value Meaning 0 000 setuid, setgid, sticky bits are cleared 1 001 sticky bit is set 2 010 setgid bit is set 3 011 setgid and sticky bits are set 4 100 setuid bit is set 5 101 setuid and sticky bits are set 6 110 setuid and setgid bits are set 7 111 setuid, setgid, sticky bits are set Explain the use of binary in IP addressing for both V4 and V6? Use of binary in IP addressing for V4: Each IP in a V4 IP addressing consists of 32 bits. These 32 bits are divided into 4 octets of 8 bits each. An IP address is represented like this: 172.12.12.46. A computer can understand only binary values and therefore each IP is stored in binary. Each octet is represented as follows. For example if the value of the first octet is 128, it would be represented as follows: 128 64 32 16 8 4 2 1 1 0 0 0 0 0 0 0 Therefore an IP 128.128.128.128 would be stored as follows: 10000000 10000000 10000000 10000000 Use of binary in IP addressing for V6: While IPv4 allows 32 bits for an Internet Protocol address, and can therefore support 232 (4,294,967,296) addresses, IPv6 uses 128-bit addresses, so the new address space supports 2128(3.4 x 1038) addresses. This expansion allows for many more devices and user on the internet as well as extra flexibility in allocating addresses and efficiency for routing traffic. The IPv6 128-bit address is divided along 16-bit boundaries. Each 16-but block is then converted to a 4-digit hexadecimal number, separated by colons. The resulting representation is called colon-hexadecimal. This is in contrast to the 32-bit IPv4 address represented in dotted-decimal format, divided along 8-bit boundaries, and then converted to its decimal equivalent, separated by periods. The following example shows a 128-bit IPv6 address in binary form: 0010000111011010000000001101001100000000000000000010111100111011 0000001010101010000000001111111111111110001010001001110001011010 The following example shows this same address divided along 16-bit boundaries: 0010000111011010 0000000011010011 0000000000000000 00101111001110110000001010101010 0000000011111111 1111111000101000 1001110001011010 The following example shows each 16-bit block in the address converted to hexadecimal and delimited with colons. 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A IPv6 representation can be further simplified by removing the leading zeros within each 16-bit block. However, each block must have at least a single digit. The following example shows the address without the leading zeros: Javascript:CodeSnippet_CopyCode(CodeSnippetContainerCode3); 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A Binary in describing class A, B and C IP addresses The class of the address determines which part belongs to the network address and which part belongs to the node address. All nodes on a given network share the same network prefix but must have a unique host number. Class A Network binary address start with 0, therefore the decimal number can be anywhere from 1 to 126. The first 8 bits (the first octet) identify the network and the remaining 24 bits indicate the host within the network. An example of a Class A IP address is 102.168.212.226, where 102 identifies the network and 168.212.226 identifies the host on that network. Class B Network binary addresses start with 10, therefore the decimal number can be anywhere from 128 to 191. (The number 127 is reserved for loopback and is used for internal testing on the local machine.) The first 16 bits (the first two octets) identify the network and the remaining 16 bits indicate the host within the network. An example of a Class B IP address is 168.212.226.204 where 168.212 identifies the network and 226.204 identifies the host on that network. Class C Network binary addresses start with 110, therefore the decimal number can be anywhere from 192 to 223. The first 24 bits (the first three octets) identify the network and the remaining 8 bits indicate the host within the network. An example of a Class C IP address is 200.168.212.226 where 200.168.212 identifies the network and 226 identifies the host on that network. Hexadecimal for addressing memory Memory addresses are displayed as two hex numbers. An example is C800:5. The part to the left of the colon (C800) is called the segment address, and the part to the right of the colon (5) is called the offset. The offset value can have as many as four hex digits. The actual memory address is calculated by adding a zero to the right of the segment address and adding the offset value, like this: C800:5 = C8000 + 5 = C8005 C8005 is called as the absolute or linear address of the memory. Similarly F000:FFFD can be computed to get the following memory address. F0000 + FFFD FFFFD or 1,048,573(decimal) The Segment: Offset addressing was introduced at a time when the largest register in a CPU was only 16-bits long which meant it could address only 65,536 bytes (64 KB) of memory, directly. But everyone was hungry for a way to run much larger programs! Rather than create a CPU with larger register sizes (as some CPU manufacturers had done), the designers at Intel decided to keep the 16-bit registers for their new 8086 CPU and added a different way to access more memory: They expanded the instruction set, so programs could tell the CPU to group two 16-bit registers together whenever they needed to refer to an Absolute memory location beyond 64 KB. Classless Inter Domain Routing Classless Inter Domain Routing. CIDR was invented several years ago to keep the internet from running out of IP addresses. The classful system of allocating IP addresses is very wasteful. Anyone who could reasonably show a need for more that 254 host addresses was given a Class B address block of 65533 host addresses. Even more wasteful were companies and organisations that were allocated Class A address blocks, which contain over 16 Million host addresses! Only a tiny percentage of the allocated Class A and Class B address space has ever been actually assigned to a host computer on the Internet. CIDR specifies an IP address range using a combination of an IP address and its associated network mask. CIDR notation uses the following format xxx.xxx.xxx.xxx/n where n is the number of (leftmost) 1 bits in the mask. For example, 192.168.12.0/23 applies the network mask 255.255.254.0 to the 192.168 network, starting at 192.168.12.0. This notation represents the address range 192.168.12.0 192.168.13.255. Compared to traditional class-based networking, 192.168.12.0/23 represents an aggregation of the two Class C subnets 192.168.12.0 and 192.168.13.0 each having a subnet mask of 255.255.255.0. In other words, 192.168.12.0/23 = 192.168.12.0/24 + 192.168.13.0/24

Characteristics of Java Language

Characteristics of Java Language Chapter 2 Literature review About Java:- Initially java language is named as Oak in 1991, which is designed for the consumer electronic appliances. Later in 1995 the name was changed to Java. Java was developed by James Gosling, a development leader in sun micro system. Oak was redesigned in 1995 and changed the name to java for the development of the applications which can be run over internet. Using the java language, java programs can be embedded in to the html pages. Java is not only limited for the web applications, it is also useful to develop the stand alone applications. Java has a feature called OOPs, which make it more familiar. Object oriented programming replaced the old traditional techniques i.e. procedural programming. Characteristics of java:- Simple:- Java language is simple than the previous languages such as c and c++. Java eliminates the pointers concept which is earlier present in c and c++. Java also has a properties i.e. automatic allocation of memory and garbage collection, where as in c/c++ the garbage collection and allocation of memory will be done by the programmer which is a complex task. Object oriented:- All the programming languages apart from the c++ are procedural languages which are paradigm of procedures. Java programming language is object oriented because java uses the concept of the object. In java everything will depend on objects i.e. creating the objects and making objects to work together. The overall functionality of the high level program will depends on the objects. Because java is object oriented program it provides great range of reusability, modularity and flexibility. Distributed:- Java uses the http and ftp which are internet protocols, in order to have access the files over the network. So by using this libraries which are in java can easily make file transfers over the network which is connected to internet. Interpreted:- In order to run the java programs we need interpreter. When the java programs are compiled it produces the byte code, which is machine understandable language. The byte code which is produced after the compilation is machine independent, so that it can run on any system using java interpreter. Most of the compilers will convert the high level language instructions to the low-level machine understandable language as machine cant understand the high level instruction. The machine code can only be executed on that compiled native machine. For example a source code is compile on windows platform, the executable file produced after cant be executed on other platforms apart from the windows. But, coming to java it is different i.e. the source code is compiled once and the executable byte code can be run on any platform using java interpreter. The main functionality of the interpreter is, it converts the byte code to the machine language of the target machine. Robust and secure:- Java programming is more reliable. At the time of the execution time java shows all the errors. In java bad and error prone language constructs are eliminated. Java eliminated the concepts such as pointers, due to this there is no corruption of data and overwriting the memory locations. In the same way java supports the exception-handling, which makes java more reliable and robust. Java forces the programmer to write the code for the exceptions, which may occur during the execution of the program. So that program can be terminated successfully, without any error stopping the execution flow of the program. Java also provides the lot of security. Security is important over the network because the computer will be attacked by the external program. Java provides the security that; it encounters the applets for the un-trusted sources. Architecture- neutral:- Java is a interpreted language, which enables java as a architectural neutral i.e. platform independent. We can write the program once and it can be executed on any platform with the help of the Java Virtual Machine (JVM). The java virtual machine can be embedded on the operating system or on web browser. Once the part of the java code is loaded into the machine, it is verified. Byte code verification play a major role, as it check all the code generated by the compiler will not corrupt the machine on which the code is loaded. At the end of the compilation, byte code verification will be done; in order to make sure thats the code is accurate and correct. So the byte code verification is the integral to the compilation and execution. Due to the property of architectural neutral had by java, it is portable. The program once written can be run on any platform without recompilation. Java does not provide any platform specific features. In other languages, such as Ada where the large integer varies according to the platform it runs. But in the case of java the range of the numbers are fixed. Java environment is portal to every operating system and hardware. Multi-threaded:- It is defined as the programs ability to perform several tasks (or) functions simultaneously. The multithreading property is embedded in the java program. Using the java programs we can perform the several tasks simultaneously without calling any procedures of the operating system, which is done by the other programming languages in order to perform the multi-threading. Constant Pool:- Every program i.e. class in java, has a array of constants in the heap memory called as the constant pool, which is available to that class. Usually it is created by the java compiler. The constants encode all the name of the (methods, variables and constant that are presented in the constant pool) which is used by particular method of any class. Each individual class i.e. stored in heap memory has a count of how many constants are there and also has offset which specifies how far in to the class description itself the array of constants begins (Laura Lemay, Charles L.Perkins, and Micheal Morrison, n.d). The constants are represented (or) typed in the special coded bytes and which has a very well defined format, when these constants are appeared in the .class file for the java class file. JVM instructions refer to the symbolic information in java, rather than relying on the run time layouts of the class, methods and fields. Sun Java Wireless Toolkit:- Sun java wireless toolkit CLDC (connected Limited Device Configuration) is a group of tools which is used to develop the applications for the mobiles and for other wireless equipments (or) devices. Although the sun java wireless toolkit is based on the MIDP (Mobile Information Device Profile), it also supports many other optional packages, which make a sun java wireless toolkit as a great tool for developing many applications. It can be supported on the windows and Linux. All the users who have account on the host machine can access this tool either singly or simultaneously. It allows you to use a byte code obfuscator to reduce the size of your MIDlet suite JAR file. It also supports many other standard Application Programming Interfaces (APIs) which are defined by the (JCP) Java Community Process program. Even though, the sun java wireless toolkit did not come up with an obfuscator, it is configured in a way that it supports the ProGaurd. All you need to do is, just simply to download the ProGuard and place it in the system, which sun java wireless tool kit can find it. But due to the flexible nature of the tool, it allows any kind of the obfuscator. BCEL:- BCEL full abbreviation is Byte Code Engineering library. The BCEL helps you to dig the byte code of the java classes. BCEL gives the utmost power on the code because it works at the individual JVM instructions, even though the power comes with cost in complexity. Using the BCEL, we can transform the existing classes transformation or we can construct the new classes. The main difference between the BCEL and Javassist is javassist provides the source code interface where as the BCEL is developed in the intension to work at the level of the JVM assembly language. BCEL is good because the approach it uses is low level, which is very helpful to control the program at the instruction level. Compared to Javassist it is more complex to work with the BCEL. BCEL has the capability to inspect, to edit and to create binary classes in java. There are 2 hierarchy components in the BCEL, in which one component is used to create the new code and the other component is used to edit (or) update the existing code. The inspection of the class aspect in the BCEL mainly deals with the duplication whatever available in the java platform using the Reflection API. This duplication is necessary (or) mandatory in classworking because we generally dont want to load the classes on which we are working until they are modified fully. Org.apache.bcel.classfile package provides all the definition which is related to inspection-related code.org.apache.bcel package provides the basic constant definitions. JavaClass is a class which is the starting point of the package. The JavaClass plays a role in accessing the information of the class using the BCEL same as like java,lang.Class does using the regular reflection in java. The JavaClass has a methods to get the information like structural information about the super classes and interfaces, to get the information of the class i.e. information about the field and methods in the class. The JavaClass will provide access to the some internal information about the class, including constant pool and identifiers. It also represents the Byte stream which is the complete binary class representation. If the actual binary class is parcel, then we can create the instance for the JavaClass. To handle the parsing BCEL provides a class called org.apache.bcel.Respository. The representation of the classes are parsed and cached by the BCEL by default, which are on the JVM path, to get the actual binary classes representation from the org.apache.bcel.util.respository instance. org.apache.bcel.util.respository is an interface which is source for binary classes representations. Changing the classes:- Not only the accessing the components of class, org.apache.bcel.Classfile.JavaClass also provide certain methods, in order to provide the liberty to change (or) alter the classes. The class component can be set to the new values by using those methods. Although those are of no direct use much, because the other classes in the package dont support constructing the new versions of the components that are building. There are certain classes in the org.apache.bcel.generic package that will provide the editable versions of the same components there in the org.apache.bcel.classfile classes. Org.apache.bcel.generic.ClassGen is the starting step (or) point for the creating the new classes. This also useful to modify the existing classes, to do this one, there is a constructor that takes a JavaClass Instance in order to initialize ClassGen class information. Once you modified the changes to the class, then we get the usable (or) useful class representation from ClassGen instance, in order get the usable representation of the class, we need to call any method that returns the class called JavaClass. Later it will be converted into the binary class information. It is little bit confusing, in order to eliminate this confusion, it is better to write a wrapper class for eliminating some differences. In order to manage the construction of the various class components, org.apache.bcel.generic provides many other classes apart from the ClassGen. It has a class called ConstantPoolGen , which is used to handle the constant pool. FieldGen, MethodGen classes which are used to handle the Fields and the methods in classes. For the working with the sequence of the JVM instructions there is other class called Instruction List. org.apache.bcel.generic also provides the classes for the each and every type instructions which are executed over JVM. We can create the instance for these classes directly some times and in other times by using the helper class called org.apache.generic.InstrcutionFactory. The main advantage of this helper class is, it handles are the book keeping details of the each and every instruction constructing for us( i.e. adding the items to the constant pool as required for the instructions). Sand Mark:- Sandmark is a tool i.e. developed to measure the performance of the software protection algorithms and effectiveness of the methods that are preventing the software from the piracy issues, water tampering and reverse engineering techniques. Sandmark is also has an ability to find which algorithm is most resiliences to the attacks and have a least performance of over head. There are many software protections are proposed both in software and hardware. The hardware protections are there from the dongle protection and now tamper-proof software. The sandmark tool is developed to evaluating and implementing the software-based techniques such as code obfuscation (making code complex to understand) and water tampering. History of reverse engineering:- Reverse engineering most probably starts with Dos (disk operating system) based computer games. The aim is to have full life and armed for the player to finish the final stage of the game. In that way the technique of reverse engineering came in to picture, it is just to find the memory locations where the life and number of weapons are stored and modifying the values of that memory locations. So that, the player can changes the values and gets through the final stage and win the game. Thats why memory cheating tools such as game hack came in to existence. Reverse Engineering:- Reverse engineering is the process of the understanding the particular aspects of the program, which are listed below To identify the components of the system and the interrelationship between the components. And enhance the components of the system and to improve the performance and scalability of the system (or) subsystem. Software reverse engineering is a technique that converts a machine code of a program (string 0s and 1s usually sent to logic processor) back in to the programmable language statements which is called as source code. Software reverse engineering is done to get the source code of the program because to know how the particular parts of the program performs particular operations in order to improve the program functionality or to fix the bugs in the program or to find malicious block of statements in the software if any. Generally, this reverse engineering will take place in older industries on machines. But now it is frequently used on computer hardware and softwar e. The important contents like data formats, algorithms what the programmer used to implement the software and ideas of the programmer (or) company will be revealed to the 3rd person by violating the security and privacy issues using reverse engineering technique. Reverse engineering is evolving as a major link in the software lifecycle, but its growth is hampered by confusion (Elliot J.chilkofsky James H.Cross ii, Jan 1990). Reverse engineering is generally implemented to improve the quality of the product, to observe the competitors products. Forward engineering is the process of moving from the high level abstracts (or) from the initial requirements stage (objectives, constraints and proper solution to the problem), logical, and independent designs (specification of the solution) to the final product i.e. implementation (coding and testing).; whereas the reverse engineering is the process of moving from the final product to the initial requirements stage in order to under the system logically, why particular function (or) action is being performed. By knowing the system logically, the flaws and errors in the system can be rectified and helps to improve the systems functionality when the source code of the application is not available. For this sake the concept of the reverse engineering techniques is evolved. Fig 1: reverse engineering and related process are transformations between or within the abstract levels, represented here in terms of life cycle phases. (Elliot J.chilkofsky James H.Cross ii, Jan 1990) Reverse engineering in and of itself doesnt mean changing the subsystem or developing the new system based on the existing. It is a process of examination (or) understanding the program (or) software but not replication (or) change. Reverse engineering involves very broad range of aspects such as starting from the existing implementation, recreating or recapturing the design ideas and extracts the actual requirements of the existing system. Design recovery is the most vital subset of the reverse engineering because in which knowledge of the domain, external (or) outer side information and deduction or fuzzy reasoning are added to the investigated (or) subjected system in order to find the high level abstract of the system, normally which is not obtained by directly observing the system. According to the Ted BiggerStaff: Students Paper: Ted BiggerStaff: design recovery recreates design abstractions from a combination of code, existing design documentation(if available), personal experience, and general knowledge about problem and application domains. Design recovery must reproduce Re-engineering is termed as renovation and reclamation, is the examination and altering the subjective system again to construct in the new form and the implementation of the new system. Re-engineering involves some form of reverse engineering i.e. to obtain the high level of the abstract of the existing system followed by forward engineering. This may be changes according to the new requirements that were not previously implemented in the system. While re-engineering is not super type of the forward engineering and reverse engineering but it uses the forward engineering and reverse engineering. Objectives:- The primary goal of the reverse engineering is to enhance the overall comprehensibility of the system for the both maintenance and new development. Cope up with the complexity. In order to meet the complexity and shear volumes of the system we have to develop a better methods i.e. automated support. In order to extract the relevant information reverse engineering methods and tools should be combined with the CASE environments. So that decision makers can control the process and product in system evolutions. Alternative views should be generated. Comprehension aids such as graphic representation as been accepted for long time. However maintaining and creating them is becoming difficult in the process. Reverse engineering facilitates the generation or regeneration of the graphical representation in the other forms. While many designers work on single diagrams such as data flow diagrams where as the reverse engineering tools will give the other graphical representations such as control flow diagrams, entity relation diagrams and structure charts to aid the review and verification process. To identify the side effects. Both haphazard initial design and intentional modifications to the system can lead to unintentional ramifications and side effects that affect the system performance. Reverse engineering can provide better observation than we can observe by forward engineering perspective. So it makes us to solve that ramifications and anomalies before users intimate them as bugs. Component reuse. Software reusability is becoming the more essential part in developing the new products in the software field. Reverse engineering can be able to help to detect the candidates for reusable components from the present system. To recover the lost information. When the continuous evolution of the long lived system which will lead to loss of information. In order to preserve the old information of the system design; design recovery of reverse engineering techniques is used. Many reverse engineering tools try to extract the structure of the legacy systems with the intension to pass this information to software engineers in order to re-engineer or to reverse engineer the existing component. Code reverse engineering:- During the evolution of the software, many changes will apply to the code, to add any functionality which is to be added and to change the code in order to rectify the defect and enhance the systems performance (or) quality. Systems with the poor documentation only the code will be reliable solution to get information about the system. As a result, the process of reverse engineering is focused on understanding the code. Thus reverse engineering has good and bad ends. Obfuscation:- Java provides platform independence to the software programs so that software programs will run independently on any platform. All the programs are compiled in order get intermediate code format i.e. A class file consists of a stream of very large amount of information regarding the program methods, variable and constant enough to do reverse engineering. When a company develops the program (or) software in java and sell this product in intermediate code format to the other organization by not giving the original software. The organization who buys the program (or) software will simply change (or) modify the software by violating the security and privacy issues of authorised company; by simply applying the reverse engineering technique. This reverse engineering will be done by the software developers, automated tools and decompilers. Java byte code can be easily decompiled, which makes reverse engineering technique easier in java. In programming context Obfuscation is described as, making program code more difficult to read and understand for security and privacy purposes of the software. Decompilers can easily extract the source code from the compiled code, in that point of view protecting the code secretly will make impossible. So the growth of obfuscators increased rapidly in order to keep effectively smoke screen around the code. Code obfuscation is the one of the most prominent and best method to protect the java code securely. Code obfuscation makes program to understand difficult. So that code will be more resistant to the reverse engineering. There are 2 byte code obfuscation techniques that are: source code obfuscation byte code obfuscation Source code technique is simply changing the source code of the program, where as byte code obfuscation is changing the classfile of the program (functionality is same as the source code). There several obfuscation techniques to prevent java byte code from decompilation. For example consider a set of class files, S, becomes another set of class files S through an obfuscator. Here the set of class files of s and s are different, but they produce the same output. Example:- class OHello { public OHello() { int num=1; } public String gHello(String hname){ return hname; } when the above code is passed through the simple obfuscator (such as Klass Master), the following code will be generated. class aa { public static boolean aa; public aa() { int aa=1; } public String aa(String ba){ return ba; } By observing the above code the class name OHello is changed to the aa and the gHello method name is changed to the aa. It is more difficult to read the program with aa than a OHello. By this way less information will be interpreted and understand to the reverse engineers. This is just a simple example by renaming the class variables and class method names. Categories of obfuscation techniques:- Description of Obfuscation techniques:- One way of obfuscating the source program by the obfuscators is replacing a symbol of a class file by illegal string. The replacement might be the private are even worst ***. Other techniques usually obfuscator will use targeting the specific decompilers (Mocha and Jode) is inserting a bad instruction in the code. The example is Let us taken an example with bad instruction, lets take the original code (decompiled): Method void main(java.lang.String[]) 0 new #4 3 invokespecial #10 6 return and after obfuscation the code is as follows (names are not changed, not to make complex): Method void main(java.lang.String[]) 0 new #4 3 invokespecial #10 6 return 7 pop By observing the above routine we notice that a pop instruction is added after the return statement. The last and final statement in the method that has return type should be return statement, but in the above routine a pop keyword is inserted which make the routine not to be executed for ever. Lexical obfuscation:- Lexical obfuscation changes the lexical structure of a program by scrambling the identifiers. All the names of classes, fields and methods which are meaningful symbolic information of java program, is renamed with meaningless name i.e. useless names. An example obfuscator for lexical obfuscation is crema. Obfuscator is defined as the program that automatically makes the transformation in the classfile in order obfuscate the classfile, to undo the reverse engineering technique to produce the source code from the class file. Layout obfuscation:- Layout obfuscation dealt with changing the layout structure of the program i.e. done by 2 basic methods Renaming the identifiers Removing the debugging information. Above 2 will make program code less informative to the reverse engineers. Layout obfuscation techniques use the one way functions such renaming the identifiers by random symbols, removing the comments, unused methods and debugging information. Though the reverse engineers can understand the obfuscated code i.e. done by layout obfuscation, it consumes the cost of reverse engineering. Layout obfuscation techniques are most commonly used in the code obfuscation. All most all obfuscators of java will use these techniques. Control obfuscation:- Changing the control flow of the program. It is easiest way to do and which make reverse engineer to find the code what exactly. For example consider a code in which a there is a method A(). Here another new method called A_Dummy() will be created and in the program Data Obfuscation:- Data obfuscation mainly deals with breaking up the data structures used in the program and encrypting the literals. This includes changing the inheritance, restructuring the arrays, making the variable names constant etc. In that way data obfuscation affect the data structures of the program. Thus data obfuscation make impossible to obtain the original source code of the program. More viable source code obfuscation methods are based on composite functions, which are Array Index Transformation, Method Argument Transformation, and Hiding Constant. The obfuscation techniques that are based on composite functions make the computation complex and extensive use of these techniques make the software to respond slowly. Some source code obfuscation methods are directed at the object oriented concept; Class Coalescing, Class splitting, and Type Hiding. Other source code obfuscation techniques may include; false refactoring, restructure arrays, inline and outline methods, clone methods, split v ariables, convert static to procedural data, and merge scalar variables. The obfuscation techniques that work over object oriented concept and other techniques like restructure arrays, split variables, merge scalar variables may distort the logic of the software, so these must be carefully used. The employment of obfuscation technique like outline methods, clone methods, convert static to procedural data increase the size of a class file without providing any significant advantage. In lining a method results in an unresolved method call when some other class calls the in lined method. Advanced obfuscation techniques for byte code:- There are several obfuscation techniques to prevent java byte code from de-compilation. Many of these tools are simply to change the names of the identifiers with the meaningless names which are stored in byte code. Many crackers can understand the actual source code, even though identifier name are changed, but it will take more time to understand. Traditionally, when a program is compiled to machine code, most of the symbolic information will be stripped off, after the compilation of the program. When the program is compiled, the address of the variable and functions of the program will be denoted by the identifiers. Even though de-compilation of such compiled code is difficult, but still it is possible to decompile the code. We say protection techniques are difficult if and only if the time and effort taken by the cracker to crack the software should be with more cost and effort. Cracking time to crack software is more than a re-writing a program, then its of no use and waste of time and valueless. Java became the most popular because of benefits that it is providing. One of the major benefits is portability i.e. compiled program can run on any platform i.e. platform independent. When the program is compiled it produces independent byte code. Java uses the symbolic references rather than the traditional memory addresses. Therefore, the names of methods and, variables and types are stored in a constant pool with in a byte code file. There are many commercial de-compilers (P C, 2001, Vliot 1996, hoeniche 2001 etc.). When the program is decompiled, it extracts the program almost identical to the source code. Making use of decompiler to extract the source code becomes the lethal weapon to intellectual property piracy. Obfuscation technique is used to stop de-compilation of the byte code. The main aim of obfuscation technique is to make decompiled program harder to understand i.e. more time and effort to understand the obfuscated code. Obfuscation scope:- Java application consists of one or more packages. A programmer might divide the program in to packages. He can also use the packages that are in standard library and proprietary libraries. Only the part of the program developed by the developer will be given outside. The proprietary library is not distributed due to the copyright restrictions. Obfuscation scope termed as the part of the program obfuscated by the obfuscation techniques, i.e. the part of the program/software developed by the developer is protected not the entire software. The package that serves as the utilities for the standard library and proprietary libraries not obfuscated. Candidates considered for identifiers scrambling:- An identifier will denote the following terms in java http://www.cis.nctu.edu.tw/~wuuyang/papers/Obfuscation20011123.doc the bytecode file. By default, parameters and local variables are stripped and deleted (or) removed from the byte code. The names of the local variables and parameters are stored in the LocalVariableTable in the byte code, if the debug info is enabled. But, by default the de-bug info is enabled in java compiler. If the local variable is not found, de-compilers itself create the names for local variable and parameter, which makes program after reverse somewhat understandable. Even, if we rename the names of the variables and parameter in LocalVariableTable, good decompiler will simply Characteristics of Java Language Characteristics of Java Language Chapter 2 Literature review About Java:- Initially java language is named as Oak in 1991, which is designed for the consumer electronic appliances. Later in 1995 the name was changed to Java. Java was developed by James Gosling, a development leader in sun micro system. Oak was redesigned in 1995 and changed the name to java for the development of the applications which can be run over internet. Using the java language, java programs can be embedded in to the html pages. Java is not only limited for the web applications, it is also useful to develop the stand alone applications. Java has a feature called OOPs, which make it more familiar. Object oriented programming replaced the old traditional techniques i.e. procedural programming. Characteristics of java:- Simple:- Java language is simple than the previous languages such as c and c++. Java eliminates the pointers concept which is earlier present in c and c++. Java also has a properties i.e. automatic allocation of memory and garbage collection, where as in c/c++ the garbage collection and allocation of memory will be done by the programmer which is a complex task. Object oriented:- All the programming languages apart from the c++ are procedural languages which are paradigm of procedures. Java programming language is object oriented because java uses the concept of the object. In java everything will depend on objects i.e. creating the objects and making objects to work together. The overall functionality of the high level program will depends on the objects. Because java is object oriented program it provides great range of reusability, modularity and flexibility. Distributed:- Java uses the http and ftp which are internet protocols, in order to have access the files over the network. So by using this libraries which are in java can easily make file transfers over the network which is connected to internet. Interpreted:- In order to run the java programs we need interpreter. When the java programs are compiled it produces the byte code, which is machine understandable language. The byte code which is produced after the compilation is machine independent, so that it can run on any system using java interpreter. Most of the compilers will convert the high level language instructions to the low-level machine understandable language as machine cant understand the high level instruction. The machine code can only be executed on that compiled native machine. For example a source code is compile on windows platform, the executable file produced after cant be executed on other platforms apart from the windows. But, coming to java it is different i.e. the source code is compiled once and the executable byte code can be run on any platform using java interpreter. The main functionality of the interpreter is, it converts the byte code to the machine language of the target machine. Robust and secure:- Java programming is more reliable. At the time of the execution time java shows all the errors. In java bad and error prone language constructs are eliminated. Java eliminated the concepts such as pointers, due to this there is no corruption of data and overwriting the memory locations. In the same way java supports the exception-handling, which makes java more reliable and robust. Java forces the programmer to write the code for the exceptions, which may occur during the execution of the program. So that program can be terminated successfully, without any error stopping the execution flow of the program. Java also provides the lot of security. Security is important over the network because the computer will be attacked by the external program. Java provides the security that; it encounters the applets for the un-trusted sources. Architecture- neutral:- Java is a interpreted language, which enables java as a architectural neutral i.e. platform independent. We can write the program once and it can be executed on any platform with the help of the Java Virtual Machine (JVM). The java virtual machine can be embedded on the operating system or on web browser. Once the part of the java code is loaded into the machine, it is verified. Byte code verification play a major role, as it check all the code generated by the compiler will not corrupt the machine on which the code is loaded. At the end of the compilation, byte code verification will be done; in order to make sure thats the code is accurate and correct. So the byte code verification is the integral to the compilation and execution. Due to the property of architectural neutral had by java, it is portable. The program once written can be run on any platform without recompilation. Java does not provide any platform specific features. In other languages, such as Ada where the large integer varies according to the platform it runs. But in the case of java the range of the numbers are fixed. Java environment is portal to every operating system and hardware. Multi-threaded:- It is defined as the programs ability to perform several tasks (or) functions simultaneously. The multithreading property is embedded in the java program. Using the java programs we can perform the several tasks simultaneously without calling any procedures of the operating system, which is done by the other programming languages in order to perform the multi-threading. Constant Pool:- Every program i.e. class in java, has a array of constants in the heap memory called as the constant pool, which is available to that class. Usually it is created by the java compiler. The constants encode all the name of the (methods, variables and constant that are presented in the constant pool) which is used by particular method of any class. Each individual class i.e. stored in heap memory has a count of how many constants are there and also has offset which specifies how far in to the class description itself the array of constants begins (Laura Lemay, Charles L.Perkins, and Micheal Morrison, n.d). The constants are represented (or) typed in the special coded bytes and which has a very well defined format, when these constants are appeared in the .class file for the java class file. JVM instructions refer to the symbolic information in java, rather than relying on the run time layouts of the class, methods and fields. Sun Java Wireless Toolkit:- Sun java wireless toolkit CLDC (connected Limited Device Configuration) is a group of tools which is used to develop the applications for the mobiles and for other wireless equipments (or) devices. Although the sun java wireless toolkit is based on the MIDP (Mobile Information Device Profile), it also supports many other optional packages, which make a sun java wireless toolkit as a great tool for developing many applications. It can be supported on the windows and Linux. All the users who have account on the host machine can access this tool either singly or simultaneously. It allows you to use a byte code obfuscator to reduce the size of your MIDlet suite JAR file. It also supports many other standard Application Programming Interfaces (APIs) which are defined by the (JCP) Java Community Process program. Even though, the sun java wireless toolkit did not come up with an obfuscator, it is configured in a way that it supports the ProGaurd. All you need to do is, just simply to download the ProGuard and place it in the system, which sun java wireless tool kit can find it. But due to the flexible nature of the tool, it allows any kind of the obfuscator. BCEL:- BCEL full abbreviation is Byte Code Engineering library. The BCEL helps you to dig the byte code of the java classes. BCEL gives the utmost power on the code because it works at the individual JVM instructions, even though the power comes with cost in complexity. Using the BCEL, we can transform the existing classes transformation or we can construct the new classes. The main difference between the BCEL and Javassist is javassist provides the source code interface where as the BCEL is developed in the intension to work at the level of the JVM assembly language. BCEL is good because the approach it uses is low level, which is very helpful to control the program at the instruction level. Compared to Javassist it is more complex to work with the BCEL. BCEL has the capability to inspect, to edit and to create binary classes in java. There are 2 hierarchy components in the BCEL, in which one component is used to create the new code and the other component is used to edit (or) update the existing code. The inspection of the class aspect in the BCEL mainly deals with the duplication whatever available in the java platform using the Reflection API. This duplication is necessary (or) mandatory in classworking because we generally dont want to load the classes on which we are working until they are modified fully. Org.apache.bcel.classfile package provides all the definition which is related to inspection-related code.org.apache.bcel package provides the basic constant definitions. JavaClass is a class which is the starting point of the package. The JavaClass plays a role in accessing the information of the class using the BCEL same as like java,lang.Class does using the regular reflection in java. The JavaClass has a methods to get the information like structural information about the super classes and interfaces, to get the information of the class i.e. information about the field and methods in the class. The JavaClass will provide access to the some internal information about the class, including constant pool and identifiers. It also represents the Byte stream which is the complete binary class representation. If the actual binary class is parcel, then we can create the instance for the JavaClass. To handle the parsing BCEL provides a class called org.apache.bcel.Respository. The representation of the classes are parsed and cached by the BCEL by default, which are on the JVM path, to get the actual binary classes representation from the org.apache.bcel.util.respository instance. org.apache.bcel.util.respository is an interface which is source for binary classes representations. Changing the classes:- Not only the accessing the components of class, org.apache.bcel.Classfile.JavaClass also provide certain methods, in order to provide the liberty to change (or) alter the classes. The class component can be set to the new values by using those methods. Although those are of no direct use much, because the other classes in the package dont support constructing the new versions of the components that are building. There are certain classes in the org.apache.bcel.generic package that will provide the editable versions of the same components there in the org.apache.bcel.classfile classes. Org.apache.bcel.generic.ClassGen is the starting step (or) point for the creating the new classes. This also useful to modify the existing classes, to do this one, there is a constructor that takes a JavaClass Instance in order to initialize ClassGen class information. Once you modified the changes to the class, then we get the usable (or) useful class representation from ClassGen instance, in order get the usable representation of the class, we need to call any method that returns the class called JavaClass. Later it will be converted into the binary class information. It is little bit confusing, in order to eliminate this confusion, it is better to write a wrapper class for eliminating some differences. In order to manage the construction of the various class components, org.apache.bcel.generic provides many other classes apart from the ClassGen. It has a class called ConstantPoolGen , which is used to handle the constant pool. FieldGen, MethodGen classes which are used to handle the Fields and the methods in classes. For the working with the sequence of the JVM instructions there is other class called Instruction List. org.apache.bcel.generic also provides the classes for the each and every type instructions which are executed over JVM. We can create the instance for these classes directly some times and in other times by using the helper class called org.apache.generic.InstrcutionFactory. The main advantage of this helper class is, it handles are the book keeping details of the each and every instruction constructing for us( i.e. adding the items to the constant pool as required for the instructions). Sand Mark:- Sandmark is a tool i.e. developed to measure the performance of the software protection algorithms and effectiveness of the methods that are preventing the software from the piracy issues, water tampering and reverse engineering techniques. Sandmark is also has an ability to find which algorithm is most resiliences to the attacks and have a least performance of over head. There are many software protections are proposed both in software and hardware. The hardware protections are there from the dongle protection and now tamper-proof software. The sandmark tool is developed to evaluating and implementing the software-based techniques such as code obfuscation (making code complex to understand) and water tampering. History of reverse engineering:- Reverse engineering most probably starts with Dos (disk operating system) based computer games. The aim is to have full life and armed for the player to finish the final stage of the game. In that way the technique of reverse engineering came in to picture, it is just to find the memory locations where the life and number of weapons are stored and modifying the values of that memory locations. So that, the player can changes the values and gets through the final stage and win the game. Thats why memory cheating tools such as game hack came in to existence. Reverse Engineering:- Reverse engineering is the process of the understanding the particular aspects of the program, which are listed below To identify the components of the system and the interrelationship between the components. And enhance the components of the system and to improve the performance and scalability of the system (or) subsystem. Software reverse engineering is a technique that converts a machine code of a program (string 0s and 1s usually sent to logic processor) back in to the programmable language statements which is called as source code. Software reverse engineering is done to get the source code of the program because to know how the particular parts of the program performs particular operations in order to improve the program functionality or to fix the bugs in the program or to find malicious block of statements in the software if any. Generally, this reverse engineering will take place in older industries on machines. But now it is frequently used on computer hardware and softwar e. The important contents like data formats, algorithms what the programmer used to implement the software and ideas of the programmer (or) company will be revealed to the 3rd person by violating the security and privacy issues using reverse engineering technique. Reverse engineering is evolving as a major link in the software lifecycle, but its growth is hampered by confusion (Elliot J.chilkofsky James H.Cross ii, Jan 1990). Reverse engineering is generally implemented to improve the quality of the product, to observe the competitors products. Forward engineering is the process of moving from the high level abstracts (or) from the initial requirements stage (objectives, constraints and proper solution to the problem), logical, and independent designs (specification of the solution) to the final product i.e. implementation (coding and testing).; whereas the reverse engineering is the process of moving from the final product to the initial requirements stage in order to under the system logically, why particular function (or) action is being performed. By knowing the system logically, the flaws and errors in the system can be rectified and helps to improve the systems functionality when the source code of the application is not available. For this sake the concept of the reverse engineering techniques is evolved. Fig 1: reverse engineering and related process are transformations between or within the abstract levels, represented here in terms of life cycle phases. (Elliot J.chilkofsky James H.Cross ii, Jan 1990) Reverse engineering in and of itself doesnt mean changing the subsystem or developing the new system based on the existing. It is a process of examination (or) understanding the program (or) software but not replication (or) change. Reverse engineering involves very broad range of aspects such as starting from the existing implementation, recreating or recapturing the design ideas and extracts the actual requirements of the existing system. Design recovery is the most vital subset of the reverse engineering because in which knowledge of the domain, external (or) outer side information and deduction or fuzzy reasoning are added to the investigated (or) subjected system in order to find the high level abstract of the system, normally which is not obtained by directly observing the system. According to the Ted BiggerStaff: Students Paper: Ted BiggerStaff: design recovery recreates design abstractions from a combination of code, existing design documentation(if available), personal experience, and general knowledge about problem and application domains. Design recovery must reproduce Re-engineering is termed as renovation and reclamation, is the examination and altering the subjective system again to construct in the new form and the implementation of the new system. Re-engineering involves some form of reverse engineering i.e. to obtain the high level of the abstract of the existing system followed by forward engineering. This may be changes according to the new requirements that were not previously implemented in the system. While re-engineering is not super type of the forward engineering and reverse engineering but it uses the forward engineering and reverse engineering. Objectives:- The primary goal of the reverse engineering is to enhance the overall comprehensibility of the system for the both maintenance and new development. Cope up with the complexity. In order to meet the complexity and shear volumes of the system we have to develop a better methods i.e. automated support. In order to extract the relevant information reverse engineering methods and tools should be combined with the CASE environments. So that decision makers can control the process and product in system evolutions. Alternative views should be generated. Comprehension aids such as graphic representation as been accepted for long time. However maintaining and creating them is becoming difficult in the process. Reverse engineering facilitates the generation or regeneration of the graphical representation in the other forms. While many designers work on single diagrams such as data flow diagrams where as the reverse engineering tools will give the other graphical representations such as control flow diagrams, entity relation diagrams and structure charts to aid the review and verification process. To identify the side effects. Both haphazard initial design and intentional modifications to the system can lead to unintentional ramifications and side effects that affect the system performance. Reverse engineering can provide better observation than we can observe by forward engineering perspective. So it makes us to solve that ramifications and anomalies before users intimate them as bugs. Component reuse. Software reusability is becoming the more essential part in developing the new products in the software field. Reverse engineering can be able to help to detect the candidates for reusable components from the present system. To recover the lost information. When the continuous evolution of the long lived system which will lead to loss of information. In order to preserve the old information of the system design; design recovery of reverse engineering techniques is used. Many reverse engineering tools try to extract the structure of the legacy systems with the intension to pass this information to software engineers in order to re-engineer or to reverse engineer the existing component. Code reverse engineering:- During the evolution of the software, many changes will apply to the code, to add any functionality which is to be added and to change the code in order to rectify the defect and enhance the systems performance (or) quality. Systems with the poor documentation only the code will be reliable solution to get information about the system. As a result, the process of reverse engineering is focused on understanding the code. Thus reverse engineering has good and bad ends. Obfuscation:- Java provides platform independence to the software programs so that software programs will run independently on any platform. All the programs are compiled in order get intermediate code format i.e. A class file consists of a stream of very large amount of information regarding the program methods, variable and constant enough to do reverse engineering. When a company develops the program (or) software in java and sell this product in intermediate code format to the other organization by not giving the original software. The organization who buys the program (or) software will simply change (or) modify the software by violating the security and privacy issues of authorised company; by simply applying the reverse engineering technique. This reverse engineering will be done by the software developers, automated tools and decompilers. Java byte code can be easily decompiled, which makes reverse engineering technique easier in java. In programming context Obfuscation is described as, making program code more difficult to read and understand for security and privacy purposes of the software. Decompilers can easily extract the source code from the compiled code, in that point of view protecting the code secretly will make impossible. So the growth of obfuscators increased rapidly in order to keep effectively smoke screen around the code. Code obfuscation is the one of the most prominent and best method to protect the java code securely. Code obfuscation makes program to understand difficult. So that code will be more resistant to the reverse engineering. There are 2 byte code obfuscation techniques that are: source code obfuscation byte code obfuscation Source code technique is simply changing the source code of the program, where as byte code obfuscation is changing the classfile of the program (functionality is same as the source code). There several obfuscation techniques to prevent java byte code from decompilation. For example consider a set of class files, S, becomes another set of class files S through an obfuscator. Here the set of class files of s and s are different, but they produce the same output. Example:- class OHello { public OHello() { int num=1; } public String gHello(String hname){ return hname; } when the above code is passed through the simple obfuscator (such as Klass Master), the following code will be generated. class aa { public static boolean aa; public aa() { int aa=1; } public String aa(String ba){ return ba; } By observing the above code the class name OHello is changed to the aa and the gHello method name is changed to the aa. It is more difficult to read the program with aa than a OHello. By this way less information will be interpreted and understand to the reverse engineers. This is just a simple example by renaming the class variables and class method names. Categories of obfuscation techniques:- Description of Obfuscation techniques:- One way of obfuscating the source program by the obfuscators is replacing a symbol of a class file by illegal string. The replacement might be the private are even worst ***. Other techniques usually obfuscator will use targeting the specific decompilers (Mocha and Jode) is inserting a bad instruction in the code. The example is Let us taken an example with bad instruction, lets take the original code (decompiled): Method void main(java.lang.String[]) 0 new #4 3 invokespecial #10 6 return and after obfuscation the code is as follows (names are not changed, not to make complex): Method void main(java.lang.String[]) 0 new #4 3 invokespecial #10 6 return 7 pop By observing the above routine we notice that a pop instruction is added after the return statement. The last and final statement in the method that has return type should be return statement, but in the above routine a pop keyword is inserted which make the routine not to be executed for ever. Lexical obfuscation:- Lexical obfuscation changes the lexical structure of a program by scrambling the identifiers. All the names of classes, fields and methods which are meaningful symbolic information of java program, is renamed with meaningless name i.e. useless names. An example obfuscator for lexical obfuscation is crema. Obfuscator is defined as the program that automatically makes the transformation in the classfile in order obfuscate the classfile, to undo the reverse engineering technique to produce the source code from the class file. Layout obfuscation:- Layout obfuscation dealt with changing the layout structure of the program i.e. done by 2 basic methods Renaming the identifiers Removing the debugging information. Above 2 will make program code less informative to the reverse engineers. Layout obfuscation techniques use the one way functions such renaming the identifiers by random symbols, removing the comments, unused methods and debugging information. Though the reverse engineers can understand the obfuscated code i.e. done by layout obfuscation, it consumes the cost of reverse engineering. Layout obfuscation techniques are most commonly used in the code obfuscation. All most all obfuscators of java will use these techniques. Control obfuscation:- Changing the control flow of the program. It is easiest way to do and which make reverse engineer to find the code what exactly. For example consider a code in which a there is a method A(). Here another new method called A_Dummy() will be created and in the program Data Obfuscation:- Data obfuscation mainly deals with breaking up the data structures used in the program and encrypting the literals. This includes changing the inheritance, restructuring the arrays, making the variable names constant etc. In that way data obfuscation affect the data structures of the program. Thus data obfuscation make impossible to obtain the original source code of the program. More viable source code obfuscation methods are based on composite functions, which are Array Index Transformation, Method Argument Transformation, and Hiding Constant. The obfuscation techniques that are based on composite functions make the computation complex and extensive use of these techniques make the software to respond slowly. Some source code obfuscation methods are directed at the object oriented concept; Class Coalescing, Class splitting, and Type Hiding. Other source code obfuscation techniques may include; false refactoring, restructure arrays, inline and outline methods, clone methods, split v ariables, convert static to procedural data, and merge scalar variables. The obfuscation techniques that work over object oriented concept and other techniques like restructure arrays, split variables, merge scalar variables may distort the logic of the software, so these must be carefully used. The employment of obfuscation technique like outline methods, clone methods, convert static to procedural data increase the size of a class file without providing any significant advantage. In lining a method results in an unresolved method call when some other class calls the in lined method. Advanced obfuscation techniques for byte code:- There are several obfuscation techniques to prevent java byte code from de-compilation. Many of these tools are simply to change the names of the identifiers with the meaningless names which are stored in byte code. Many crackers can understand the actual source code, even though identifier name are changed, but it will take more time to understand. Traditionally, when a program is compiled to machine code, most of the symbolic information will be stripped off, after the compilation of the program. When the program is compiled, the address of the variable and functions of the program will be denoted by the identifiers. Even though de-compilation of such compiled code is difficult, but still it is possible to decompile the code. We say protection techniques are difficult if and only if the time and effort taken by the cracker to crack the software should be with more cost and effort. Cracking time to crack software is more than a re-writing a program, then its of no use and waste of time and valueless. Java became the most popular because of benefits that it is providing. One of the major benefits is portability i.e. compiled program can run on any platform i.e. platform independent. When the program is compiled it produces independent byte code. Java uses the symbolic references rather than the traditional memory addresses. Therefore, the names of methods and, variables and types are stored in a constant pool with in a byte code file. There are many commercial de-compilers (P C, 2001, Vliot 1996, hoeniche 2001 etc.). When the program is decompiled, it extracts the program almost identical to the source code. Making use of decompiler to extract the source code becomes the lethal weapon to intellectual property piracy. Obfuscation technique is used to stop de-compilation of the byte code. The main aim of obfuscation technique is to make decompiled program harder to understand i.e. more time and effort to understand the obfuscated code. Obfuscation scope:- Java application consists of one or more packages. A programmer might divide the program in to packages. He can also use the packages that are in standard library and proprietary libraries. Only the part of the program developed by the developer will be given outside. The proprietary library is not distributed due to the copyright restrictions. Obfuscation scope termed as the part of the program obfuscated by the obfuscation techniques, i.e. the part of the program/software developed by the developer is protected not the entire software. The package that serves as the utilities for the standard library and proprietary libraries not obfuscated. Candidates considered for identifiers scrambling:- An identifier will denote the following terms in java http://www.cis.nctu.edu.tw/~wuuyang/papers/Obfuscation20011123.doc the bytecode file. By default, parameters and local variables are stripped and deleted (or) removed from the byte code. The names of the local variables and parameters are stored in the LocalVariableTable in the byte code, if the debug info is enabled. But, by default the de-bug info is enabled in java compiler. If the local variable is not found, de-compilers itself create the names for local variable and parameter, which makes program after reverse somewhat understandable. Even, if we rename the names of the variables and parameter in LocalVariableTable, good decompiler will simply