这是一道极其麻烦的题目吧,首先拿到文件,发现是个dll,depend一下没找到出口函数,直接拖od,loaddll后f9,发现在桌面上出现了个log文件,里面是键盘记录。
拖ida,发现函数很多,大多是处理各个字符的键盘记录的。
首先在od里找到while(1)的地方:
到ida里面,f5大法,看看长啥样:
这里看不太懂,一个一个sub看过去,发现sub_10009EB0是处理每个按键返回的函数:
这里有很多个case,随便打开进去看看,不外乎是直接返回。这里发现很多处理函数怪怪的,做了一些额外的事情:
举个例子:
这是按键u的处理函数,他判断了10019484这个位置是不是1,如果是1的话,将10019484置0,将100194881置1,简单来说就是将1从9484传递到了9488。
然后这里使用ctrl+f5大法将所有函数弄到c文件里,把所有这样子的函数找个表记录下来:
这样提供一个简便的方法整理一下:
直接找函数中这样子的语句就行了,大家明白:
整理出来一份表格:
然后里面有两个比较奇怪,一个是m,他没有传递,但是调用了一个函数,一个是l,他有一个初始地址是7000小得离谱。
这里猜测有一个按键的顺序,可能这个顺序就是邮箱,那么根据邮箱的com后缀,m可能是最后一个,那么l是第一个,并且是从7000开始,那么按照7000->9460:l,9460->9464:0,......以此类推,得到最后的字符串:
l0ggingdoturdot5tr0ke5atflaredashondotcom
dot,dash,at换掉:
l0gging.ur.5tr0ke5@flare-on.com