摘要: 从卡饭弄到一个样本,虚拟机中跑了下,发现是个消息溢出工具,能够使窗口程序进程莫名崩溃。想看下实现原理,一看是vb写的,想当初就最怕遇到vb的和易语言的程序了,相当蛋疼,汇编代码又臭又长,这几天研究了下VB的程序,发现也不是那么难。在FindWindow下断点,很快就找到了关键点。程序中用的是PostMessage,实际上经过我的测试SendMessage也是可以的,自己用vc6写了一个,成功实现。只是不知道程序为何崩溃,真正的原因是什么,有时间调试下。 阅读全文
posted @ 2012-07-13 14:28 shremie 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 1.VB的程序从入口点从进入了VBVM60.DLL中的ThunRtMain之后就不知道什么时候回到主模块中,让人很是费解,实际上在VBVM60.DLL中有段专门计算返回到主模块地址的代码。红色部分为HEX特征码。733BAE5A 8B7C81 0C mov edi, dword ptr [ecx+eax*4+C] ; 这里是计算地址的733BAE5E 57 push edi ; 对取得的地址检测所有要跳转到主模块的地址都会经过这里,其中的edi就是要跳转的地址,也就是自定义函数... 阅读全文
posted @ 2012-07-13 10:06 shremie 阅读(2130) 评论(0) 推荐(0) 编辑
摘要: 白加黑,所谓白加黑就是用第三方的软件的某个模块实现加载,而这个模块是完全没毒的,而且还有数字签名,该模块会加载dll文件,我们写一个恶意的dll,这个dll导出那个模块需要的函数。典型的,就是暴风影音的升级程序。BaofengUpdate.exe会加载目录下的Update.dll中的RunUpdate函数。所以我们自己写一个Update.dll并且导出RunUpdate函数即可。盗号的流行方法一个主EXE,另外一张XXX.JPG,这张jpg是特别处理过的,在图片的末尾追加了一些shellcode,或者追加一个加密过的PE文件,而你用图片查看软件查看的时候能却是能显示出来一张图片,主EXE负责把 阅读全文
posted @ 2012-07-12 22:58 shremie 阅读(620) 评论(0) 推荐(0) 编辑
摘要: 00402183 68 60214000 push 0040216000402188 B8 00124000 mov eax, <jmp.&MSVBVM60.DllFunctionCall>0040218D FFD0 call eax而00402160地址处的数据如下00402160 FC 20 40 00 50 21 40 00即004020FC 这是模块的名字,00402150 这是要调用的函数的名字。 阅读全文
posted @ 2012-07-12 14:12 shremie 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 分析某样本的时候我发现此样本中某函数是通过重定位表获取SSDT表RVA的,其中某段代码会检测ntkrnlpa.exe IMAGE_FILE_HEADER中的chracteristic是否有relocation stripped属性,如果有则直接返回。据此,我们是否可以把ntkrnlpa.exe添加上relocation stripped属性,添加上这个属性的话,该文件的checksum值肯定会变化,还得刷新下checksum值。然后注册一个关机回调,等到关机的时候再把ntkrnlpa.exe的relocation stripped属性去掉,把原来的checksum值写入。 阅读全文
posted @ 2012-07-12 10:31 shremie 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 先转载下某个博客园网友的文章,这里表示下感谢。http://www.cnblogs.com/hhuai/archive/2010/03/01/1675389.html////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////网上其实有很多介绍ssdt还原的文章,看起 阅读全文
posted @ 2012-07-12 09:50 shremie 阅读(953) 评论(0) 推荐(0) 编辑
摘要: 一个程序如果用普通的加壳程序处理之后,脱壳之后的程序应该和原来的程序是一模一样的,压缩壳普遍都是这种情况,但是对于某些加密壳来说有入口点保护的功能,会把你原本程序的入口点的代码改变,同时在其中加入一些垃圾代码,导致你脱壳后的入口点代码和未加壳程序入口点代码是不一样的,但是不影响程序的结果,相当于把你入口点的代码给变形了。某个vb程序用asprotect 加壳之后用脚本顺利到达入口点处,我们看下入口点的代码01140253 68 26AE4500 push 45AE26 ; OEP01140258 66:9C ... 阅读全文
posted @ 2012-07-12 01:08 shremie 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 一直以来用的最多的就是wikipedia了,今天在搜索的过程中发现还有个wikitionary,不错,有音标,有发音,解释也专业。 阅读全文
posted @ 2012-07-07 15:39 shremie 阅读(820) 评论(0) 推荐(0) 编辑
摘要: 驱动文件在编译时会按照某种算法把这个文件的checksum值写入到PE头中,在加载sys文件的时候,系统会按照这种算法计算一下这个sys文件的checksum值,把结果和PE头中的checksum比较,相等则加载成功,反之则加载失败。下面是我最近分析过的一个样本的某段代码:释放的sys文件末尾被追加了随机数据,如果加载的话,操作系统计算该sys文件的checksum值和该文件pe头中的checksum值肯定不一样,必然会导致加载失败,所以在释放了sys文件之后,自己计算checksum值,把这个值写入到PE头中,这样才能保证sys加载成功。我们自己可以测试一下,用FFI打开随便一个sys文件, 阅读全文
posted @ 2012-07-07 12:51 shremie 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 方法:先找函数的头文件,在头文件中找函数的声明。下面是摘自百度知道的回答http://zhidao.baidu.com/question/205546175.html1.打开窗口:view->relation windows2.鼠标移动到你需要的函数处,点击relation windows窗口的刷新按钮(你懂的).3.在relation windows下,鼠标移动到该函数,右击->view relation->references。4.再点击刷新.搞定... 阅读全文
posted @ 2012-06-29 02:37 shremie 阅读(4375) 评论(0) 推荐(0) 编辑