Friday, March 2, 2012

Simplifying Complex Expression in Reverse Code Engineering

Some parts of a software system that you reverse engineer may contain complex expressions. The first question is whether you need to simplify those complex expressions? In many cases, you need to, because the basic notion of reverse engineering is to understand what's going on, not to make it even slightly more complex. Now, the second question is: how to deal with  such complex expression?

There are several avenues to deal with the complexity. I found these steps to be useable:

  1. "Translate" the expressions into propositional variables. Just to make it more readable. For example: the (i < sizeof(MY_DATA)) expression could be "translated" as propositional variable A,  and so on.
  2. Once you have the propositions in place. You now have several options to minimize the present expressions. 
Anyway, I think that it's a very seldom case to encounter software code that uses closes to ten propositional variables in a single expression unless the programmer who wrote the code is a very unskilled or do so intentionally. 

Sunday, January 29, 2012

Opting Out Google Ad Tracking

If you've been following the new Google Privacy policy, you must have known about the Ad Tracking. That is, Google will "track" your browsing habits and present you with personalized result on various Google services that you use. If you think that you don't want to be tracked, you can opt-out. These are the steps:
  1. Go to Google Dashboard (https://www.google.com/dashboard/)
  2. Sign in to your account
  3. Go to Google Ads Preferences Manager (http://www.google.com/ads/preferences/?hl=en)
  4. Choose opt-out in the services you wished not to be tracked (or all of Google services that you use)
If you're using Google Chrome browser and want this setting to be applied permanently, you can use the Keep My Opt-Outs Chrome browser plugin.

Monday, January 16, 2012

How to Recognize The Documentation That You Wrote Has Gone Too Deply Nested?

One of the way to recognize that you have gone too far "nesting" your documentation section. For example, if you have gone to make section v.w.x.y, that means you're now four levels deep. Four levels are already too deep because human brain are not naturally able to remember something with "nesting-level" more than that.

When your nesting has gone too deep, consider creating a new "chapter" and provide a smooth transition into that new "chapter". That way, people will understand what your're trying to say. Monstrous "chapter" is not good or it's better to say that it's a bad writing habit.

Be aware of it next tome you write documentation

Saturday, January 14, 2012

Intel Atom Finally Arrived in Smartphone (x86 malware finally enters the phone)

Well, as Anand points out: http://www.anandtech.com/show/5365/intels-medfield-atom-z2460-arrive-for-smartphones. Intel Atom smartphone will finally arrive this year.

I'm not that much concerned about its performance but I'm really concerned with the "malware legacy" that the platform has. x86, due to its prevalence has been the playing ground for malware "craftsmen" for years. So, when it enters the smartphone space, surely it's a cause for concern. Android NDK provides the "entry point" to "craft" a host of new malware for the platform.

It seems to be there will be a lot of work for the security guys in that particular platform even before its public release from Intel partners.