随笔分类 -  逆向分析

反VM虚拟机代码学习
摘要:在分析代码中遇到的反虚拟机代码,网上查了下资料顺便原帖在此:http://vrt-blog.snort.org/2009/10/how-does-malware-know-difference.html这里主要是反VM的代码,VMare里面按照帖子内容有个后门或者说彩蛋的东西,可以向I/O口发送特定的指令:mov EAX, 564D5868h ; VMXhxor EBX, EBX ; set EBX to anything but 0x564D5868 (in this case 0)mov CX, 0Ah ; Backdoor command. 10: Get VMware versi... 阅读全文

posted @ 2013-11-06 00:07 堕落华为人 阅读(884) 评论(0) 推荐(0)

基础脱壳学习笔记
摘要:参考资料主要来自网络和视频,理解和笔记自己想的脱壳的步骤有:分析壳类型 → 找到OEP→DUMP脱壳→ 修复EIP本文记录的是找到OEP方面一些理解后的技巧方法一:单步跟踪法1.用OD载入,点“不分析代码”2.单步向下跟踪F8,实现向下的跳。也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运行到某个C 阅读全文

posted @ 2013-10-30 02:53 堕落华为人 阅读(537) 评论(0) 推荐(0)

Android条件跳转指令总结
摘要:非虫总结的,值得记录一下,很实用:if-eq Va,Vb , +CCCC → if(Va==Vb) goto +CCCCif-ne Va,Vb , +CCCC → if(Va!=Vb) goto +CCCCif-lt Va,Vb , +CCCC → if(VaVb) goto +CCCCif-le Va,Vb , +CCCC → if(Va=Vb) goto +CCCCif-eqz Va, +CCCC → if(Va==0) goto +CCCCif-nez Va, +CCCC → if(Va!=0) goto +CCCCif-ltz Va, +CCCC → if(Va0) ... 阅读全文

posted @ 2013-09-16 17:32 堕落华为人 阅读(630) 评论(0) 推荐(0)

【随记】Smali注入中Sleep代码注入
摘要:有时候比如想调试一个加载SO之后的代码,苦于SO只会在初始化时候加载上一次,等你把IDA Attach上之后就没了。可以考虑一下插入一个SMALI延时的代码,仿照Windows的Sleep函数(时延20秒):android.os.SystemClock.sleep(20000);其对应的SMALI也相当简单,就一句话:const-wide/16 v0, 0x2710 invoke-static {v0, v1}, Landroid/os/SystemClock;->sleep(J)V这里的v1其实是相对.locals 2而言的,如果.locals 4,那么就是v3了 阅读全文

posted @ 2013-09-12 10:03 堕落华为人 阅读(1060) 评论(0) 推荐(0)

【随记】Smali注入中利用Toast查看String
摘要:Android下面的代码:Toast.makeText(this, "test", Toast.LENGTH_LONG).show();对应的SMALI CODE为: const-string v4, "test" const/4 v5, 0x1 invoke-static {p0, v4, v5}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; move-result-object 阅读全文

posted @ 2013-09-10 16:51 堕落华为人 阅读(1893) 评论(0) 推荐(0)

【随记】Smali注入中查看int和boolean的方法
摘要:查看int,将变量转为String查看,需要添加2个寄存器: #sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const-string v2, "testout" invoke-static {v0}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; move-result-object v3 invoke-static {v2, v3}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String; 阅读全文

posted @ 2013-09-06 16:46 堕落华为人 阅读(1615) 评论(0) 推荐(0)

SMALI注入中新增调试日志输出
摘要:针对Android中Smali代码逆向分析,由于现在调试技术有限,一种相对简单的办法是在Smali中加入Log输出: const-string v3, "a" invoke-static {v3, v2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I这里面有几个需要注意的问题:1、v3或者自定义的其它寄存器,有可能被用于它用了处理方法:(1)选用一个在后面会重新赋值的寄存器: .line 27 const-string v3, "a" invoke-static {v3, 阅读全文

posted @ 2013-09-03 14:50 堕落华为人 阅读(2554) 评论(0) 推荐(0)

逆向CodeInjectEx发现“直接代码注入”中未曾考虑过的“retn 4”
摘要:今天在看一个WG教程中,作者提到了两个工具:CE和CodeInjectEx。CE算是老朋友了,CodeInjectEx虽然我以前没有用过,不过其原理多少知道一些。下载CodeInjectEx(郁金香代码注入工具)后我简单想了一下:代码注入包括两类,DLL和ASM CODE直接代码注入。DLL注入的代码网上到处都是,一般常用办法是CreateRemoteThread,在远程进程中启动线程执行LoadLibrary加载dll。CreateRemoteThread函数原型如下:WINBASEAPIHANDLEWINAPICreateRemoteThread( HANDLE hProcess, ... 阅读全文

posted @ 2013-08-30 03:04 堕落华为人 阅读(925) 评论(0) 推荐(0)

导航