<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>strazzere.com</title>
	<atom:link href="http://strazzere.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://strazzere.com/blog</link>
	<description>...it all can be reversed</description>
	<pubDate>Wed, 01 Sep 2010 22:11:27 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Unpacking &#8220;netz .Net packer&#8221;</title>
		<link>http://strazzere.com/blog/?p=370</link>
		<comments>http://strazzere.com/blog/?p=370#comments</comments>
		<pubDate>Wed, 01 Sep 2010 22:11:27 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[random]]></category>

		<category><![CDATA[reversing]]></category>

		<category><![CDATA[windows]]></category>

		<category><![CDATA[.net unpacking]]></category>

		<category><![CDATA[netz]]></category>

		<category><![CDATA[reverse engineering]]></category>

		<category><![CDATA[unpacker]]></category>

		<category><![CDATA[unpacking]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=370</guid>
		<description><![CDATA[It&#8217;s actually pretty trivial to do this, though it seemed like something that could be mildly interesting to post on. While it&#8217;s written in C# .Net itself, it means we can pretty much see exactly whats going on - so it&#8217;s lends itself to be a pretty easy example for people who have never actually [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s actually pretty trivial to do this, though it seemed like something that could be mildly interesting to post on. While it&#8217;s written in C# .Net itself, it means we can pretty much see exactly whats going on - so it&#8217;s lends itself to be a pretty easy example for people who have never actually done any unpacking before. It also lets to understand the concept of unpacking from a programmers prospective of actually packing it.</p>
<p>A little backstory to this is, someone sent me a &#8220;hack&#8221; for diablo2 and said it wasn&#8217;t working for them. Why they sent me this? I have no idea, but I figured I&#8217;d just take a look at it and see what was going on. Turns out it was a password stealer for d2 written in .Net - pretty cool looking stuff. The funny part about it all was that since this was &#8220;packed&#8221; with netz the person who sent me it couldn&#8217;t use reflector on it (and succeed) - thus why they sent it to me I guess. Anyway, let&#8217;s get down to the actual meat of the post.</p>
<p>Identification of netz is pretty simple - if you open up the application in Reflector, you&#8217;ll see the namespace <b>nets</b>. Also it will almost always be accompanied by a <i>zip.dll</i>, which is used for decompressing the resource. Essentially the main function we want to look at is <b>StartApp</b>:</p>
<pre class="syntax-highlight:php">
public static int StartApp(string[] args)
{
    byte[] resource = GetResource(&quot;213213-2131223-2134234-234&quot;);
    if (resource == null)
    {
        throw new Exception(&quot;application data cannot be found&quot;);
    }
    int num = InvokeApp(GetAssembly(resource), args);
    resource = null;
    return num;
}
</pre>
<p>From here we can see that a resource of bytes is going to be loaded, and <i>GetAssembly</i> is called with it as an argument. Go dump the resource listed here into some directory, I named mine <i>virgin.dump</i>. <i>GetAssembly</I> is a pretty simple function that I&#8217;m not going to dive into, it essentially calls <B>UnZip(byte[] data)</b>. This code is a little more interesting and is doing the most work we&#8217;re interested in, here is  small snippet;</p>
<pre class="syntax-highlight:php">
private static MemoryStream UnZip(byte[] data) {
    MemoryStream baseInputStream = null;
    MemoryStream stream2 = null;
    InflaterInputStream stream3 = null;

    baseInputStream = new MemoryStream(data);
    stream2 = new MemoryStream();
    stream3 = new InflaterInputStream(baseInputStream);
    byte[] buffer = new byte[data.Length];
    while (true)
    {
       int count = stream3.Read(buffer, 0, buffer.Length);
        if (count &lt;= 0)
        {
           break;
        }
        stream2.Write(buffer, 0, count);
    }
    stream2.Flush();
    stream2.Seek(0L, SeekOrigin.Begin);
}
</pre>
<p>Ah, this looks familiar! In fact - thanks to Reflector it&#8217;s pretty much almost exactly Java code. All we need to do is inflate the resource and dump it to a file - there isn&#8217;t any encryption or anything special about it at all. Basically by looking at the code above, I through together a small little resource inflater:</p>
<pre class="syntax-highlight:php">
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.InflaterInputStream;

public class inflater {
    public static void main(String[] args) {
        try {
            FileInputStream inStream = new FileInputStream(args[0]);
            InflaterInputStream inflaterStream = new InflaterInputStream(inStream);
            FileOutputStream outStreams = new FileOutputStream(args[0] + &quot;_unpacked&quot;);
            for (int c = inflaterStream.read(); c != -1; c = inflaterStream.read()) {
                outStreams.write(c);
            }
            outStreams.close();
        } catch (IOException ex) {
            System.err.println(ex);
        }
    }
}
</pre>
<p>Is this anything special? No, but it worked for me and my quick little need for it. Could you use a Generic .Net unpacker? Of course, I just did this since I wasn&#8217;t running Windows and didn&#8217;t want to fire up a VM instance just to debug and dump a little .Net application. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=370</wfw:commentRss>
		</item>
		<item>
		<title>Sc2 for Mac OS X and memory reading/writing</title>
		<link>http://strazzere.com/blog/?p=364</link>
		<comments>http://strazzere.com/blog/?p=364#comments</comments>
		<pubDate>Tue, 24 Aug 2010 18:50:25 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[max os x]]></category>

		<category><![CDATA[random]]></category>

		<category><![CDATA[reverse engineering]]></category>

		<category><![CDATA[reversing]]></category>

		<category><![CDATA[mac os x]]></category>

		<category><![CDATA[memory hacking]]></category>

		<category><![CDATA[memory manipulation]]></category>

		<category><![CDATA[ReadProcessMemory]]></category>

		<category><![CDATA[sc2]]></category>

		<category><![CDATA[starcraft 2]]></category>

		<category><![CDATA[vm_read()]]></category>

		<category><![CDATA[vm_read_overwrite]]></category>

		<category><![CDATA[vm_write]]></category>

		<category><![CDATA[WriteProcessMemory]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=364</guid>
		<description><![CDATA[So recently, I a heard from a few friends that the Starcraft II had some pretty interesting anti-cheating methods in place. I figured I&#8217;d try to check them out - though I only have a mac now. So after firing up the game, getting distracted and playing about half way through the single player &#8212; [...]]]></description>
			<content:encoded><![CDATA[<p>So recently, I a heard from a few friends that the Starcraft II had some pretty interesting anti-cheating methods in place. I figured I&#8217;d try to check them out - though I only have a mac now. So after firing up the game, getting distracted and playing about half way through the single player &#8212; I remember why I actually installed it, to check out the anti-cheating protection. Sadly, but not surprisingly, it doesn&#8217;t appear that there is any anti-cheating protection on the mac client. It&#8217;s not really surprising because to implement something like the Warden they would need root, or some sony style rootlet for the mac ;)</p>
<p>Any who, it reminded me of the good old days of using <i>ReadProcessMemory</i> and <i>WriteProcessMemory</i> making quick and dirty memory hacks for Windows games. Making stuff for Diablo 2 consumed a lot of my free periods back in high school - great times! Back on topic though, it got me thinking of just dumping some sc2 memory and doing some quick memory hacks, though I never really did any of this on a mac before.</p>
<p>Turns out it&#8217;s also pretty easy to do some memory hacking in Mac OS X - you just need to know where to look. First of, if you found this site by googling &#8220;mac starcraft2 hacks&#8221;, then stop read &#8212; just go download &#8220;The Cheat&#8221; and use that, since it&#8217;d be easier than compiling your own program. Though basically The Cheat uses these same functions I stumbled upon.</p>
<p>Basically we&#8217;re going to use <i>vm_write</i> instead of the old <i>WriteProcessMemory</i> and <i>vm_read_overwrite</i> (or <i>vm_read</i>) instead of <i>ReadProcessMemory</i>. There&#8217;s some documentation out there but it&#8217;s pretty simple stuff to use. Below I&#8217;ve pasted an example of how easy a sc2 trainer would actually be to make;</p>
<pre class="syntax-highlight:php">
/*
 * [ s2trainer.c ]
 * strazz@gmail.com
 * 2010
 */

#include &amp;lt;mach/mach.h&amp;gt;
#include &amp;lt;stdint.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;

#define MINERALS 0x03200D80

int main(int ac, char **av) {
  mach_port_t sc2_task;
  kern_return_t err;
  long value = 0;

  if(ac != 2)
    return 0;

  // Make sure we&#039;re root
  if(getuid() &amp;amp;amp;&amp;amp;amp; geteuid())
    printf(&amp;quot;error: requires root.&amp;quot;);

  value = atoi(av[1]);
  err = task_for_pid(mach_task_self(), value, &amp;amp;amp;sc2_task); 

  if ((err != KERN_SUCCESS) || !MACH_PORT_VALID(sc2_task))
    printf(&amp;quot;error: getting sc2 task.&amp;quot;);

  // Write values to stack.
  if(vm_write(sc2_task, (vm_address_t) MINERALS, (vm_address_t)&amp;amp;amp;value, sizeof(value)))
    printf(&amp;quot;error writing new mineral value&amp;quot;);

  printf(&amp;quot;done!\n&amp;quot;);
  return 0;
}
</pre>
<p>Is this pretty? No - it could be much prettier than this. Is this safe? For the latest patch as of today, yes - it works fine. I wouldn&#8217;t recommend running it on any other version since the offset will change and it could lead to bad things. Will it work on a window machine? Heck no - the title says MAC OS X.</p>
<p>Also, yes I could have tossed SC2 into vm fusion, but thats far to much work just to mess around with a game :)</p>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=364</wfw:commentRss>
		</item>
		<item>
		<title>It&#8217;s been a while, but I&#8217;m still alive</title>
		<link>http://strazzere.com/blog/?p=361</link>
		<comments>http://strazzere.com/blog/?p=361#comments</comments>
		<pubDate>Wed, 11 Aug 2010 19:23:14 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[life]]></category>

		<category><![CDATA[other]]></category>

		<category><![CDATA[random]]></category>

		<category><![CDATA[lookout]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=361</guid>
		<description><![CDATA[It&#8217;s been quiet a while since I&#8217;ve posted anything on my blog. It&#8217;s hard to always post information, though I felt I&#8217;ve done a good job posting relevant information I&#8217;ve researched over the past two years. It&#8217;s about time I start getting back into it - though in the mean time it&#8217;s time for a [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_362" class="wp-caption aligncenter" style="width: 310px"><a href="http://strazzere.com/blog/wp-content/uploads/2010/08/kill-spyware.png"><img src="http://strazzere.com/blog/wp-content/uploads/2010/08/kill-spyware-300x237.png" alt="Stompin` out spyware at work..." title="Stompin` out spyware at work..." width="300" height="237" class="size-medium wp-image-362" /></a><p class="wp-caption-text">Stompin` out spyware at work...</p></div><br />
It&#8217;s been quiet a while since I&#8217;ve posted anything on my blog. It&#8217;s hard to always post information, though I felt I&#8217;ve done a good job posting relevant information I&#8217;ve researched over the past two years. It&#8217;s about time I start getting back into it - though in the mean time it&#8217;s time for a little life update. So if your here for a technical blurb - read no further since this won&#8217;t have any source code embedded in it, or post-mortems of any applications.<br />
<P><br />
For the past year I&#8217;ve had an awesome job at Amadeus North America, working on an excellent <a href="http://www.amadeus.com/us/x185888.html">new cutting edge product</a> for the travel industry. It was a great learning experience, getting to delve into the world of rapid agile development and learn new tools such a <a href="http://code.google.com/webtoolkit/">Google Web Toolkit (GWT)</a>. I developed countless strong relationships with many coworkers, picking up plenty of coding &#8217;style&#8217; and quirks. Things that I directly contribute to my coding style today, and definitely something that I&#8217;m proud of. Most importantly, I have a real issue making code without writing unit tests (Thanks <a href="http://www.twitter.com/RyanNorris">@RyanNorris</a>!) and feel sick to my stomach if I ever try to check in code without JavaDocs. Looking back, I can honestly say I loved my time at Amadeus. The long days, even the stressful ones, helped me prepare for being a real software engineer - learning more than I ever had in school.<br />
<P><br />
<i>Then I meet the <a href="http://www.mylookout.com">Lookout</a> team&#8230;</i><br />
<P><br />
&#8220;<i>Lookout</i>&#8221; is right, because these guys were insane. I grabbed some food with them while at a conference in San Francisco. Never in my life had I had such an awesome nerd-fest day. Conventions where always interesting, and you always meet interesting people - but these guys where <i>real</i>. They didn&#8217;t just talk the talk - they actually did very impressive things day in and day out. Much to my surprise, I had things to actually add to the many interesting talks the evolved through the night. Even more shocking to me, I was asked if I&#8217;d ever considered relocating to the west coast for a job.<br />
<P><br />
I remember thinking, &#8220;Yikes, these guys are just being nice, it&#8217;d never happen&#8221;. I talked it over with my girlfriend the next morning after arriving on the red-eye. Lots of words where thrown back and forth using with &#8220;it&#8217;s probably never going to happen, but…&#8221; We agreed I&#8217;d go along with the process, like the many other times I&#8217;d been approached by companies. It never worked out before, so I wasn&#8217;t going to make a big deal of it, or even think of it as anything but a remote possibility.<br />
<P><br />
Then came the phone interview… I always hated these things, they&#8217;re worse than face to face interviews because you can&#8217;t see the other person expressions. Are you talking to in-depth? Not in-depth enough? Does this person just not believe you? It&#8217;s just hard sometimes to gauge peoples reactions without being in the same room. I remember walking away from the phone interview thinking, &#8220;Damn… That either really sucked, or went really well.&#8221; Luckily, it went well and I got an email asking if I could come out to San Francisco for an interview. This is when everything really started to him me, could I really be getting the dream job I&#8217;ve always wanted?<br />
<P><br />
To shorten this post, since I&#8217;ve already babbled along for too long - I came in for the interview and ended up doing well. Some of the most interesting interview questions I&#8217;ve ever heard where asked, like &#8220;How would you exploit this code?&#8221; from <A href="http://dtors.org">Anthony Lineberry</a>. After the interview, I actually ended up getting an offer that blew my mind away. It was settled, there was no question in my mind that I wanted this job. My family kept reminding me, sometimes your favorite hobby isn&#8217;t the best job… Thank god that didn&#8217;t hold true :)<br />
<P><br />
So I up and moved to San Francisco, got an awesome apartment with some killer roommates. Now i&#8217;ve been a part of the Lookout Mobile Security team for almost a month now. Officially I&#8217;m a &#8220;Security Response Engineer&#8221; (I know, that&#8217;s bad ass, never thought I&#8217;d have that title..) and getting to learn more and do more thing with Android and other mobile systems than I thought I&#8217;d get too. I know get to do for work, what I did in my off hours, it&#8217;s quiet possibly the greatest adventure I&#8217;ve gotten a chance to take on yet. In the short time I&#8217;ve been here I got to even goto <a href="http://www.defcon.org">Defcon</a> for my first hacker convention. I got to take in tons of great talks with many smart people, and even help with some of my coworkers presentations; <a href="https://www.defcon.org/html/defcon-18/dc-18-speakers.html#Mahaffey">&#8220;App Attack: Surviving the mobile application explosion&#8221;</a>, <a href="https://www.defcon.org/html/defcon-18/dc-18-speakers.html#Lineberry">&#8220;These aren&#8217;t the permissions you&#8217;re looking for&#8221;</a>.<br />
<P><br />
Anyway, just figured I&#8217;d use this as a kick off post as I get back into the gear with blogging again. For now though, I&#8217;m going to get back to doing my part with this awesome team in keeping mobile safe and developers smart.</p>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=361</wfw:commentRss>
		</item>
		<item>
		<title>Protect from viking killer! Wait, what?</title>
		<link>http://strazzere.com/blog/?p=357</link>
		<comments>http://strazzere.com/blog/?p=357#comments</comments>
		<pubDate>Mon, 10 May 2010 18:05:11 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[other]]></category>

		<category><![CDATA[AOSP]]></category>

		<category><![CDATA[comment humor]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[humor]]></category>

		<category><![CDATA[javadoc]]></category>

		<category><![CDATA[viking]]></category>

		<category><![CDATA[viking killer]]></category>

		<category><![CDATA[XXX: PROTECT FROM VIKING KILLER]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=357</guid>
		<description><![CDATA[Much similar to a previous post I had, “Brutal” Google coding humor…, I was perusing over some code in the AOSP and found an interesting comment:
// XXX: PROTECT FROM VIKING KILLER
Below is the full snippet from the file, logwrapper.c.

void child(int argc, char* argv[]) {
    // create null terminated argv_child array
   [...]]]></description>
			<content:encoded><![CDATA[<p>Much similar to a previous post I had, <a href="http://strazzere.com/blog/?p=325">“Brutal” Google coding humor…</a>, I was perusing over some code in the AOSP and found an interesting comment:</p>
<blockquote><p>// XXX: PROTECT FROM VIKING KILLER</p></blockquote>
<p>Below is the full snippet from the file, <b>logwrapper.c</b>.</p>
<pre class="syntax-highlight:php">
void child(int argc, char* argv[]) {
    // create null terminated argv_child array
    char* argv_child[argc + 1];
    memcpy(argv_child, argv, argc * sizeof(char *));
    argv_child[argc] = NULL;

    // XXX: PROTECT FROM VIKING KILLER
    if (execvp(argv_child[0], argv_child)) {
        LOG(LOG_ERROR, &amp;quot;logwrapper&amp;quot;,
            &amp;quot;executing %s failed: %s&amp;quot;, argv_child[0], strerror(errno));
        exit(-1);
    }
}
</pre>
<p>I&#8217;m not sure if &#8220;Viking Killer&#8221; is an inside joke, an actual good comment or what. Though read allowed - it sounds like a badly named european adult film&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=357</wfw:commentRss>
		</item>
		<item>
		<title>Circumventing WaveSecure UPA and other applications</title>
		<link>http://strazzere.com/blog/?p=351</link>
		<comments>http://strazzere.com/blog/?p=351#comments</comments>
		<pubDate>Fri, 07 May 2010 18:24:52 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[other]]></category>

		<category><![CDATA[android os]]></category>

		<category><![CDATA[locked]]></category>

		<category><![CDATA[locking phone]]></category>

		<category><![CDATA[pm disable]]></category>

		<category><![CDATA[safe mode]]></category>

		<category><![CDATA[Uninstall Protection Add-On]]></category>

		<category><![CDATA[unlocking phone]]></category>

		<category><![CDATA[WaveSecure]]></category>

		<category><![CDATA[WaveSecure UPA]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=351</guid>
		<description><![CDATA[Continuing with the tread of &#8220;stealth&#8221; and &#8220;locking&#8221; devices I&#8217;ve decided to look at WaveSecure. I&#8217;ve been getting many emails regardin the Uninstall Protection Add-on. The concept behind WaveSecure and the UPA is that they monitor each other - locking the phone if either one is installed. Seems like a pretty slick way to protect [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing with the tread of &#8220;stealth&#8221; and &#8220;locking&#8221; devices I&#8217;ve decided to look at <a href="https://www.wavesecure.com/">WaveSecure</a>. I&#8217;ve been getting many emails regardin the <i>Uninstall Protection Add-on</i>. The concept behind WaveSecure and the UPA is that they monitor each other - locking the phone if either one is installed. Seems like a pretty slick way to protect the application - though like everything else in the world, there are loop holes. I&#8217;ve gotten a few emails from people asking how secure it really is, and even how to circumvent it if they forget the password or locked the phone. While I&#8217;m never sure what these peoples intentions really are, assuming they&#8217;re not lying to me there is a good use case for knowing how to remove program that &#8220;lock down&#8221; your phone.<br />
<div id="attachment_352" class="wp-caption aligncenter" style="width: 190px"><a href="http://strazzere.com/blog/wp-content/uploads/2010/05/device-locked.png"><img src="http://strazzere.com/blog/wp-content/uploads/2010/05/device-locked-180x300.png" alt="Ops? How&#039;d that happen!?" title="Ops? How&#039;d that happen!?" width="180" height="300" class="size-medium wp-image-352" /></a><p class="wp-caption-text">Ops? How'd that happen!?</p></div><br />
When removing either WaveSecure or the UPA program, you&#8217;ll be prompted with a locked phone - as shown by the picture above. How do we get around that? How can we make this better? Well, there is a quick way to get around this that can work for or against you. If you&#8217;ve enabled debug mode on your phone which allows your to connect via ADB then your in luck - this is really easy. Simply using adb we can quickly disable the locking program.<br />
<br />
If the Uninstall Protection Add-on was removed from your phone, then WaveSecure is the application locking your phone. The inverse is also true, this is important to know since we need to know which package to disable. UPA&#8217;s package name is &#8220;com.wsandroid.uninstall_listener&#8221; while the main application (WaveSecure) package name is &#8220;com.wsandroid&#8221;. Following the instructions below you can quickly disable the nessicary application to get into your phone;</p>
<blockquote><p>
adb shell pm disable
<packagename></blockquote>
<p>This will disable the package, as long as adb has root access - otherwise it will attempt to kill the process which should also gain you access. This method should also work for nearly any package you wish to disable.<br />
<br />
The second method for getting around this lock is rebooting the phone into <i>Safe Mode</i> - this will prevent any applications that are not system based from starting up. This includes any malware, spyware or locking applications. The good (bad?) thing about this is that you do not need to be rooted or have adb enabled to get into Safe Mode. Safe Mode can be booted into by holding &#8220;Menu&#8221; during boot up, though googling for specific directions for your phone might yield different results.</p>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=351</wfw:commentRss>
		</item>
		<item>
		<title>Revisiting the &#8220;full stealth&#8221; mobile spy from Retina-X</title>
		<link>http://strazzere.com/blog/?p=348</link>
		<comments>http://strazzere.com/blog/?p=348#comments</comments>
		<pubDate>Wed, 05 May 2010 18:47:24 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[other]]></category>

		<category><![CDATA[android spy]]></category>

		<category><![CDATA[android stealth]]></category>

		<category><![CDATA[com.retinax.android]]></category>

		<category><![CDATA[hosts file]]></category>

		<category><![CDATA[retinax]]></category>

		<category><![CDATA[spy]]></category>

		<category><![CDATA[spyaware]]></category>

		<category><![CDATA[spyware]]></category>

		<category><![CDATA[stealth]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=348</guid>
		<description><![CDATA[
I&#8217;ve gotten a few emails regarding my previous post, “Full Stealth” just isn’t what it used to be!, asking for a more depth on the subject. I&#8217;ve covered just about everything I found in the first posting - but I did go back and re-read the documentation provided on the web site. Looks sort of [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_349" class="wp-caption aligncenter" style="width: 310px"><a href="http://strazzere.com/blog/wp-content/uploads/2010/05/login.png"><img src="http://strazzere.com/blog/wp-content/uploads/2010/05/login-300x178.png" alt="Wait - who is john doe?!" title="Wait - who is john doe?!" width="300" height="178" class="size-medium wp-image-349" /></a><p class="wp-caption-text">Wait - who is john doe?!</p></div>
<p>I&#8217;ve gotten a few emails regarding my previous post, <a href="http://strazzere.com/blog/?p=335">“Full Stealth” just isn’t what it used to be!</a>, asking for a more depth on the subject. I&#8217;ve covered just about everything I found in the first posting - but I did go back and re-read the documentation provided on the web site. Looks sort of like a boo-boo on the architecture of the product.<br />
</p>
<blockquote><p>
6. After the installation completes, power down the phone. Then, power the phone back up and bring up the Dialer. Enter the digits *12345# and then press the SEND button. The login screen should then appear. <i>Enter <b>your username/password</b> EXACTLY as you did when you created it. Then click LOGIN.</i>
</p></blockquote>
<p>
Wait, what?! I guess we&#8217;re really going to rely on the <s>fact</s> notion that this application is very secure and stealthy. Sure hope someone whose being spied on doesn&#8217;t have root and just snag the username and password. That could be embarrassing, spying on someone only to have them turn the tables on you since they now have your credentials. It honestly can&#8217;t be that hard to implement a unique identifier for these phones to send that would link them to this account, could it? Oh well, just another reason to not purchase this product :)<br />
<br />
For anyone who is rooted and might be worried about this application, you can go ahead and add the following line to your hosts file to block their server.<br />
</p>
<blockquote><p>
http://www.mobilespylogs.com/
</p></blockquote>
<p>
On a side note - keep an eye out for <i>spyAware</i> - it should be on the Android Market soon, a nifty little proof of concept tool I&#8217;ll be using to show how to detect/prevent abuse of your phone.</p>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=348</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;Full Stealth&#8221; just isn&#8217;t what it used to be!</title>
		<link>http://strazzere.com/blog/?p=335</link>
		<comments>http://strazzere.com/blog/?p=335#comments</comments>
		<pubDate>Tue, 04 May 2010 01:10:04 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[other]]></category>

		<category><![CDATA[android spy]]></category>

		<category><![CDATA[android stealth]]></category>

		<category><![CDATA[com.retinax.android]]></category>

		<category><![CDATA[mobile spy]]></category>

		<category><![CDATA[mobile spy android]]></category>

		<category><![CDATA[retinax]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[spy]]></category>

		<category><![CDATA[stealth]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=335</guid>
		<description><![CDATA[Taking a gander at one of my favorite android web sites today, I stumbled across an interesting application with an even more interesting claim. The article I&#8217;m referencing is located at AndroidandMe.com, the line that really caught my eye was as follows;
The software is loaded onto the Android device via an .apk install and Retina-X [...]]]></description>
			<content:encoded><![CDATA[<p>Taking a gander at one of my favorite android web sites today, I stumbled across an interesting application with an even more interesting claim. The article I&#8217;m referencing is located at <a href= "http://androidandme.com/2010/05/news/mobile-spy-delivers-an-app-for-those-that-like-to-watch/">AndroidandMe.com</a>, the line that really caught my eye was as follows;</p>
<blockquote><p>The software is loaded onto the Android device via an .apk install and Retina-X assures subscribers that it is a “full stealth install” and that once installed it cannot be detected by the user.</p></blockquote>
<p>I wonder how this would even be done? After a quick search of their site is doesn&#8217;t look like there is a trial version available - though oddly, they do give you links to download the application&#8230; If you look close enough. Listed on their <a href="http://www.mobile-spy.com/android-inst.html">user guide</a> they give you a run down on how exactly you install the application. I must say, for an application people must pay $99 a year for, it does not seem exceptionally user-friendly. Essentially they use a combination of <i>Download Crutch Lite</i> and <i>apkInstaller</i> to allow you to &#8220;easily&#8221; install their apk file. Once you&#8217;ve done this, you&#8217;ve now erased all tracks of this application, right? Well - not really, you just need to know where to look now.</p>
<p>Ok so we&#8217;ve installed the apk now, how is this thing hidden? Open up the app-draw, not there&#8230; Ok, well that would have been too easy - so I guess I&#8217;m glad it wasn&#8217;t there. Now lets goto <i>Settings > Applications > Manage applications</i>. Hmmm, everything looks ok - oh, wait - no it doesn&#8217;t. Looks like someone added an application called &#8220;SmartPhone&#8221;, conveniently with a default icon too. This is pictured below.</p>
<div id="attachment_333" class="wp-caption aligncenter" style="width: 310px"><a href="http://strazzere.com/blog/wp-content/uploads/2010/05/combined.png"><img src="http://strazzere.com/blog/wp-content/uploads/2010/05/combined-300x266.png" alt="Where did this thing come from?" title="Hey, I didn&#039;t install that!" width="300" height="266" class="size-medium wp-image-333" /></a><p class="wp-caption-text">Where did this thing come from?</p></div>
<p>Alright, well - the display name could always be changed here and what if that happens? How could we detect this application? Can we do it programmatically? Of course we could, in fact it&#8217;s incredibly easy too. Since we know what that applications must retain the same package name to maintain itself with updates - can just programmatically check for this.</p>
<div id="attachment_346" class="wp-caption aligncenter" style="width: 510px"><a href="http://strazzere.com/blog/wp-content/uploads/2010/05/code.png"><img src="http://strazzere.com/blog/wp-content/uploads/2010/05/code.png" alt="Sadly this image is needed for a wordpress bug..." title="Sadly this image is needed for a wordpress bug..." width="500" height="141" class="size-full wp-image-346" /></a><p class="wp-caption-text">Sadly this image is needed for a wordpress bug...</p></div>
<p>Ta-da! We&#8217;ve successfully disproved another &#8220;stealth&#8221; application myth. I&#8217;ve also included the three lines of code needed to start the intent for uninstalling this stealth little gem of an application&#8230;</p>
<div id="attachment_337" class="wp-caption aligncenter" style="width: 178px"><a href="http://strazzere.com/blog/wp-content/uploads/2010/05/remove.png"><img src="http://strazzere.com/blog/wp-content/uploads/2010/05/remove-168x300.png" alt="I didn&#039;t install you, but I *will* uninstall you!" title="I didn&#039;t install you, but I *will* uninstall you!" width="168" height="300" class="size-medium wp-image-337" /></a><p class="wp-caption-text">I didn't install you, but I *will* uninstall you!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=335</wfw:commentRss>
		</item>
		<item>
		<title>Getting &#8220;Verizon&#8221; Skype&#8230; without being on verizon</title>
		<link>http://strazzere.com/blog/?p=328</link>
		<comments>http://strazzere.com/blog/?p=328#comments</comments>
		<pubDate>Thu, 25 Mar 2010 15:30:11 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[other]]></category>

		<category><![CDATA[market enabler]]></category>

		<category><![CDATA[market spoof]]></category>

		<category><![CDATA[phone spoof]]></category>

		<category><![CDATA[skype]]></category>

		<category><![CDATA[tmobile]]></category>

		<category><![CDATA[verizon]]></category>

		<category><![CDATA[verizon spoof]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=328</guid>
		<description><![CDATA[
So I&#8217;ve been reading all the hype about the new Skype application released on Verizon. Sadly I neither have a droid or any friends with a rooted droid. As one would assume, the apk is located in /data/app-private so I needed access to a rooted droid to get this app&#8230; Or do I?
Silly me, I [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_330" class="wp-caption aligncenter" style="width: 190px"><a href="http://strazzere.com/blog/wp-content/uploads/2010/03/foundyou.png"><img class="size-medium wp-image-330" title="Ah ha - found you!" src="http://strazzere.com/blog/wp-content/uploads/2010/03/foundyou-180x300.png" alt="Hello there, Mr. hidden skype apk" width="180" height="300" /></a><p class="wp-caption-text">Hello there, Mr. hidden skype apk</p></div>
<p>So I&#8217;ve been reading all the hype about the new Skype application released on Verizon. Sadly I neither have a droid or any friends with a rooted droid. As one would assume, the apk is located in <em>/data/app-private</em> so I needed access to a rooted droid to get this app&#8230; Or do I?</p>
<p>Silly me, I forgot all the research I had done for Market Enabler! After a friend sent me their <em>getprop</em> I was off spoofing my values, no more than two minutes went by and ta-da! Got myself the new Skype application.</p>
<p>The following <em>setprop</em> commands must be run to gain access to the Verizon only part of the market.</p>
<blockquote>
<p>setprop gsm.sim.operator.numeric 310004<br />
setprop gsm.operator.numeric 31000<br />
setprop gsm.operator.alpha &#8220;Verizon Wireless&#8221;<br />
setprop gsm.sim.operator.alpha Verizon<br />
setprop gsm.sim.operator.iso-country us<br />
setprop gsm.operator.iso-country us</p></blockquote>
<p>Note that you will need to restart your Vending (Market) application to have these values take affect, you can do that by running the following commands via a terminal:</p>
<blockquote>
<p># ps | grep vending<br />
app_5     2699  75    181176 26384 ffffffff afe0dca4 S com.android.vending<br />
# kill 2699</p></blockquote>
<div>Your process id may not be 2699, so fill in whatever it actually is to kill the right process.</div>
<div></div>
<div>Now, running the Skype application is going to take more work than a few simple <em>getprop</em> and <em>setprop</em> commands&#8230; Well at least thats what I think so far, I haven&#8217;t actually looked at the apk file. Until that&#8217;s figured out, your phone is just going to return the following error screen:</div>
<div></div>
<div>
<div id="attachment_329" class="wp-caption aligncenter" style="width: 190px"><a href="http://strazzere.com/blog/wp-content/uploads/2010/03/verizon-only-phone.png"><img class="size-medium wp-image-329" title="Verizon Wireless phones only?" src="http://strazzere.com/blog/wp-content/uploads/2010/03/verizon-only-phone-180x300.png" alt="Pffhh, yea right..." width="180" height="300" /></a><p class="wp-caption-text">Pffhh, yea right...</p></div>
</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=328</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;Brutal&#8221; Google coding humor&#8230;</title>
		<link>http://strazzere.com/blog/?p=325</link>
		<comments>http://strazzere.com/blog/?p=325#comments</comments>
		<pubDate>Mon, 22 Mar 2010 19:08:36 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[coding]]></category>

		<category><![CDATA[other]]></category>

		<category><![CDATA[random]]></category>

		<category><![CDATA[AOSP]]></category>

		<category><![CDATA[comment humor]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[humor]]></category>

		<category><![CDATA[javadoc]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=325</guid>
		<description><![CDATA[Today I was skimming over a few pieces of the AOSP and found the following comment to be hilarious:
Determine whether it is a good time to kill, crash, or otherwise plunder the current situation for the overall long-term benefit of the world. 
Below is the full snippet from the file, Watchdog.java.

    /**
 [...]]]></description>
			<content:encoded><![CDATA[<p>Today I was skimming over a few pieces of the AOSP and found the following comment to be hilarious:</p>
<blockquote><p>Determine whether it is a good time to kill, crash, or otherwise plunder the current situation for the overall long-term benefit of the world. </p></blockquote>
<p>Below is the full snippet from the file, <b>Watchdog.java</b>.</p>
<pre class="syntax-highlight:php">
    /**
     * Load the current Gservices settings for when
     * {@link #shouldWeBeBrutalLocked} will allow the brutality to happen.
     * Must not be called with the lock held.
     */
    void retrieveBrutalityAmount() {
        mMinScreenOff = (mReqMinScreenOff &amp;amp;amp;gt;= 0 ? mReqMinScreenOff
                : Settings.Gservices.getInt(
                mResolver, Settings.Gservices.MEMCHECK_MIN_SCREEN_OFF,
                MEMCHECK_DEFAULT_MIN_SCREEN_OFF)) * 1000;
        mMinAlarm = (mReqMinNextAlarm &amp;amp;amp;gt;= 0 ? mReqMinNextAlarm
                : Settings.Gservices.getInt(
                mResolver, Settings.Gservices.MEMCHECK_MIN_ALARM,
                MEMCHECK_DEFAULT_MIN_ALARM)) * 1000;
    }

    /**
     * Determine whether it is a good time to kill, crash, or otherwise
     * plunder the current situation for the overall long-term benefit of
     * the world.
     *
     * @param curTime The current system time.
     * @return Returns null if this is a good time, else a String with the
     * text of why it is not a good time.
     */
    String shouldWeBeBrutalLocked(long curTime) {
        if (mBattery == null || !mBattery.isPowered()) {
            return &amp;amp;amp;quot;battery&amp;amp;amp;quot;;
        }

        if (mMinScreenOff &amp;amp;amp;gt;= 0 &amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp; (mPower == null ||
                mPower.timeSinceScreenOn() &amp;amp;amp;lt; mMinScreenOff)) {
            return &amp;amp;amp;quot;screen&amp;amp;amp;quot;;
        }

        if (mMinAlarm &amp;amp;amp;gt;= 0 &amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp; (mAlarm == null ||
                mAlarm.timeToNextAlarm() &amp;amp;amp;lt; mMinAlarm)) {
            return &amp;amp;amp;quot;alarm&amp;amp;amp;quot;;
        }

        return null;
    }
</pre>
<p>Just some mild humor to lighten up the day is always nice :)</p>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=325</wfw:commentRss>
		</item>
		<item>
		<title>Adjacking&#8230; Where did my ad revenue go?</title>
		<link>http://strazzere.com/blog/?p=323</link>
		<comments>http://strazzere.com/blog/?p=323#comments</comments>
		<pubDate>Thu, 18 Mar 2010 02:28:53 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[other]]></category>

		<category><![CDATA[secure code]]></category>

		<category><![CDATA[adjacking]]></category>

		<category><![CDATA[admob]]></category>

		<category><![CDATA[adsense]]></category>

		<category><![CDATA[android]]></category>

		<category><![CDATA[android money]]></category>

		<category><![CDATA[mobile]]></category>

		<category><![CDATA[monetizing]]></category>

		<category><![CDATA[money]]></category>

		<category><![CDATA[reverse engineering]]></category>

		<guid isPermaLink="false">http://strazzere.com/blog/?p=323</guid>
		<description><![CDATA[
It&#8217;s been a while since I&#8217;ve posted any article, sadly between work, contracts after work, spam, having a life and volleyball I don&#8217;t have much time to spend on my blog. Research is still going strong - but very little has trickled out from me over the past few months.
Something I&#8217;d like to finally post [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_284" class="wp-caption alignleft" style="width: 160px"><a href="http://strazzere.com/blog/wp-content/uploads/2009/08/android-money.jpg"><img class="size-medium wp-image-284" title="Easy cash with no work!" src="http://strazzere.com/blog/wp-content/uploads/2009/08/android-money.jpg" alt="Make money, money..." width="150" height="179" /></a><p class="wp-caption-text">Make money, money...</p></div>
<p>It&#8217;s been a while since I&#8217;ve posted any article, sadly between work, contracts after work, spam, having a life and volleyball I don&#8217;t have much time to spend on my blog. Research is still going strong - but very little has trickled out from me over the past few months.</p>
<p>Something I&#8217;d like to finally post has come to my attention. Approximately a year ago when I first started looking into the mobile ad networks, I thought of something sinister. While I never intend to do anything evil, since I&#8217;m always looking for ways to protect myself, my first thoughts always seem to be, &#8220;how do I abuse this?&#8221; It all started when people started trying to think of ways to monetize their application. Do we charge up front, or do we try to make a few bucks off a huge user-base using ads?</p>
<p>My first question is, how are the ads secured? Much like other applications that are tracked by application, most use a &#8220;application id&#8221; or &#8220;publisher id&#8221;. This is a super-secret code that is used for identifying traffic from you, right? Alright, well unlike a website advertisement, which has a referrer - mobile ads have no actual way to differentiate traffic other than this &#8220;unique&#8221; id.</p>
<p>So what? Whats the issue with that? Well, there is a big issue with this. There is a coined term, &#8220;adjacking&#8221;, that essentially means &#8220;falsified&#8221; clicks. Originally this term meant you hijacked the javascript of google adsense, and made a click anywhere on your website appear to be a click on your adsense ad. Though, I&#8217;m &#8220;word-jacking&#8221; this term, because I feel my definition is a little more appropriate. Essentially, with the ability to easily decompile/modify an apk file - someone can quiet easily steal your ad traffic, this hi-jacking your ads… Adjacking.</p>
<p>Is this something new? No - but beware of it. I&#8217;ve had this article lying around for a bit, more uninterested in publishing for the idea that people would actually attempt to do this if I brought it up. Upon first writing this, I quickly made a program that attempted to make a database of signatures of programs. This program downloaded legit (free) applications and grabbed the signature from the META-INF folder of the apk. Then it attempted to find versions available for download on the internet…. For the most part, the version where always the same - with a rare instance of someone resigning it with little modification to the file, often to help localize it. Though now, I&#8217;ve seen and heard of an increase of people downloading their application, replacing the ID in the apk, and replacing it with their own.</p>
<div id="attachment_162" class="wp-caption alignright" style="width: 240px"><a href="http://strazzere.com/blog/wp-content/uploads/2009/01/strictly_confidential.jpg"><img class="size-medium wp-image-162" title="Keep your code secure!" src="http://strazzere.com/blog/wp-content/uploads/2009/01/strictly_confidential-230x300.jpg" alt="Keep your code secure!" width="230" height="300" /></a><p class="wp-caption-text">Protection from adjacking?</p></div>
<p>What to do about this? Well, hopefully the ad networks figure something out, though I&#8217;m not sure they honestly care much. I&#8217;ve sent emails to a few of the big providers with no responses and a few &#8220;we&#8217;ll look into it&#8221; replies. I don&#8217;t see a big downside for them - maybe if more people complain they&#8217;ll get the hint. I&#8217;m sure right now they&#8217;ll just get the traffic, for traffic&#8217;s sake. Most applications that have been modified probably don&#8217;t drive in much or take away much from other people. Though if they do, they could &#8220;act&#8221; upon these and actually shut people down… Will the correct developer ever see this money? Probably not… Though if your try hard enough you might see something.</p>
<p>The sad part is, most of the people modifying the applications are now no better than a scripting kiddie. There are enough tools available now to make this an easy job. Maybe if people start looking into this, these people will be rooted out - since they must fill in &#8220;legit&#8221; information to open an account.</p>
<p>Anyways, I&#8217;ve been looking at some protection schemes for this, hopefully I&#8217;ll have time to post some soon. I&#8217;ll post a little tutorial on obfuscating (manually) your adsense/admob/blah code to protect yourself :)</p>
]]></content:encoded>
			<wfw:commentRss>http://strazzere.com/blog/?feed=rss2&amp;p=323</wfw:commentRss>
		</item>
	</channel>
</rss>
