随笔分类 -  汇编&逆向

摘要:开始 以前在逆向分析的时候,遇见VMP的代码就束手无策,只能跳过。最近在分析的时候又遇见vmp,准备研究一下。我这次遇见的VMP用查壳工具看是VMProtect(1.60-2.05)[-]。所以本次选用的壳版本是VMP1.8 VMP介绍 VMP全称VMProtect,号称目前软件保护最扣一道防线。为 阅读全文
posted @ 2021-11-07 21:46 瓜蛋 阅读(4030) 评论(2) 推荐(1) 编辑
摘要:程序通过调用GetSystemInfo得到CPU内核数目的目的,起初想在进程内Hook GetSystemInfo 这个API来达到效果,但是这样HOOK还得向进程注入一个DLL,比较麻烦。后来得知GetSystemInfo 这个函数内部调用内核NtQuerySystemInformation来达到 阅读全文
posted @ 2020-08-01 19:11 瓜蛋 阅读(1739) 评论(0) 推荐(0) 编辑
摘要:在IsDebuggerPresent下断,步入得到如下代码: 在fs:[18]下断点得出 其中fs:[18] =7EFDD000 eax+30就是这里 再来看看7EFDE000里的值 ds:[eax+2] = 1 .所以是调试状态 那么c++一行代码直接可以修改这个值,使IsDebuggerPres 阅读全文
posted @ 2018-10-08 21:27 瓜蛋 阅读(985) 评论(0) 推荐(0) 编辑
摘要:以下为了避免插件干扰,故采用x64dbg原版进行分析。 首先我通过检测到调试器的弹窗进行栈回溯,定位到该关键点:CALL eax 由于才接触Vmp,所以是把各个保护拆分开来进行的分析,会比较简单一些,不过全保护其实也就是凑在一起罢了,只要注意顺序就行啦。 本帖只是分析基础保护反调试反虚拟机等,不涉及 阅读全文
posted @ 2018-10-03 23:29 瓜蛋 阅读(1056) 评论(0) 推荐(0) 编辑
摘要:CE递归遍历主界面控件 结果: TMainForm:MainForm -TSplitter:Splitter1 -TPanel:Panel1 --TAddresslist: TTreeviewWithScroll: THeaderControl: -TPanel:Panel4 --TLabel:La 阅读全文
posted @ 2018-06-21 22:51 瓜蛋 阅读(4634) 评论(0) 推荐(0) 编辑
摘要:由于汇编代码中的不同位置 ESP+40所指的地址不像EBP+40的地址那个是一定的,ESP+40指向的地址由栈顶变化影响。也就是和操作栈指令 PUSH POP 等影响。 汇编栈是一个线性的地址区间,地址上面小大面大。如下图所示,ESP指向栈顶地址 、 PUSH 寄存器相当于 ESP减4。由此可推算 阅读全文
posted @ 2016-10-12 16:20 瓜蛋 阅读(1847) 评论(0) 推荐(0) 编辑
摘要:|63..32|31..16|15-8|7-0| |AH.|AL.| |AX.....| |EAX............||RAX...................| 阅读全文
posted @ 2013-05-01 01:36 瓜蛋 阅读(6440) 评论(0) 推荐(2) 编辑
摘要:inline hook 实际上就是指 通过改变目标函数头部的代码来使改变后的代码跳转到我们自己设置的一个函数里,产生hook。今天就拿MessageBoxA这个api函数来做实验。功能就是当程序调用MessageBoxA 时,我们打印出MessageBoxA的参数大概代码结构应该是这样typedef int (WINAPI *MessageBox_type) ( __in_opt HWND hWnd, __in_opt LPCSTR lpText, __in_opt LPCSTR lpCaption, __in UINT uType) ;MessageBox_ty... 阅读全文
posted @ 2013-04-08 12:04 瓜蛋 阅读(12473) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2013-03-21 22:06 瓜蛋 阅读(774) 评论(0) 推荐(0) 编辑
摘要:原方转自http://www.unpack.cn/thread-65647-1-1.html【文章标题】: 挣扎的菜鸟 - 当OD不能装载也不能附加程序时【文章作者】: justlovemm【作者邮箱】: 无【作者主页】: 无【作者QQ号】: 无【下载地址】: 自己搜索下载【保护方式】: VMP2.07【使用工具】: OD,LoadPE,CE,Exception Monitor【作者声明】: 只是感兴趣,没有其他目的。只是一个菜鸟对几年前大牛们就搞定的问题的一次练习,请大牛们无视本文。------------------------------------------------------- 阅读全文
posted @ 2013-03-21 14:45 瓜蛋 阅读(4152) 评论(0) 推荐(0) 编辑
摘要:英文原版一级基址:0x006A9EC0阳光: +768 +5560金币: +82c +28冒险: +82c +24其他模式: +7f8 //16起 70结尾花肥 +82c +1f8杀虫剂+82c +1fc巧克力+82c +228树肥 +82c +230智慧树 +82c +31*4+30=f4休闲花园花盆总数: +82c +350花盆种类: +82c +350+8+i*58 i=0到总数-1花盆种类: +8花盆位置: +c 0为温室 1为蘑菇园 2为在小车上 3在水族馆花盆横位置: +10 列花盆竖位置: +14 行花盆方向: +18 0为右向 1为左向花盆口渴: +24和+44和+4c和54 阅读全文
posted @ 2013-03-20 19:35 瓜蛋 阅读(3675) 评论(0) 推荐(0) 编辑
摘要:转自看雪原文连接:http://bbs.pediy.com/showthread.php?t=159883[KFC]fish’s CrackMe 破文用OD载入程序,按F9运行,程序显示了窗口就退出了,初步分析有anti代码.打开OD的插件IsDebuggerPresent plugin v1.4后再运行程序,这样就没问题了,说明此程序是用IsDebuggerPresent()这个函数来anti debugger的,但是用W32Dasm或C32ASM又找不出相应的字符串,说明了程序有可能是动态生成了字符串.大约的浏览一下程序的反汇编代码,发现有点地方是与平常不同的,如:00401670 |. 阅读全文
posted @ 2012-12-16 10:11 瓜蛋 阅读(863) 评论(0) 推荐(0) 编辑
摘要:看完郁金香第020课总结:同样的一句指令 JMP 88881234在不同位置有以下现象找规律:88881234 - 010073bb = 87879E7988881234 – 010073c0 = 87879E7488881234 – 010073c5 = 87879E6F因为机器码 如E9 749e8787 是按字节排列的所以87879E74显示出来是749e8787所以可得以下公式JMP的地址(88881234) – 代码地址(010073bb) – 5(字节) = 机器码跳转地址(E9 87879e74)typedef struct _JMPCODE{BYTE E9;ULONGJMPAD 阅读全文
posted @ 2012-12-06 00:20 瓜蛋 阅读(5879) 评论(0) 推荐(0) 编辑
摘要:1 Ssdt表的基本结构KeServiceDescriptorTable 首地址:8055D7000: kd> dd KeServiceDescriptorTable8055d700 80505460 00000000 0000011c 805058d48055d710 00000000 00000000 00000000 000000008055d720 00000000 00000000 00000000 000000008055d730 00000000 00000000 00000000 000000008055d740 00000002 00002710 bf80c349 00 阅读全文
posted @ 2012-12-06 00:15 瓜蛋 阅读(604) 评论(0) 推荐(0) 编辑
摘要:转自看雪:http://bbs.pediy.com/showthread.php?t=126802声明:本文只为研究技术,请所有童鞋切勿使用本文之方法做下那天理难容罪恶不舍之坏事。既是研究游戏保护,那么总要有一个研究对象。本文就以TMD_TP这款游戏保护为例进行分析讲解。请勿对号入座,如有雷同之处。纯属反汇编引擎之错误,不关我的事!转载请注明出处关键字:DNF驱动保护鉴于最近很多同学找上门来求解这那问题,反正这东西又不是绝密档案,放在我手里大半个月了,还不如放出来让大家一起进步算了。另外都是取之看雪还之看雪罢了。索性我也就公布一个全套的方案。绝无其他意思,所以还请同道中人嘴下留情。切勿背地使坏 阅读全文
posted @ 2012-11-29 22:58 瓜蛋 阅读(890) 评论(1) 推荐(0) 编辑
摘要:前言:最近在学外挂编程,基本都是利用CE,OD调试分析游戏数据,但现在游戏公司用各种保护手段防止我们调试游戏,虽然我们有CE,OD这样的利器但是仍然被游戏驱动保护挡在门外i,真可谓巧妇也难为无米之炊啊。不得已只好暂停学习各种找CALL技术,先了解下游戏驱动保护的门门道道。经过几天的学习,有所收获,特记录下来,以备日后查询。本贴为纯工具过掉保护,下面将用工具+自写驱动过掉它,算是最近学习驱动编程的一次实践吧,希望本文对跟同我一样刚入门的菜鸟有所帮助,欢迎菜鸟一起交流,与君共勉!这次用的游戏是日服目前仍然比较火爆的《巫术online》记得没学驱动保护之前也分析过这个游戏,但被这个游戏保护搞的蓝屏N 阅读全文
posted @ 2012-11-29 22:53 瓜蛋 阅读(3916) 评论(0) 推荐(0) 编辑
摘要:原文连接:http://bbs.pediy.com/showthread.php?t=138747&highlight=inline+hook转自看雪,写复制到自己博客上慢慢啃,呵呵#include <ntddk.h>//辛苦了几周的成果typedef struct ServiceDescriptorEntry { PVOID *ServiceTableBase; ULONG *ServiceCounterTableBase; //Used only in checked build ULONG NumberOfService; //Null PVOID *ParamTab 阅读全文
posted @ 2012-11-29 22:43 瓜蛋 阅读(2960) 评论(0) 推荐(1) 编辑
摘要:// 将本文完整拷贝, 然后在VC6 下建立控制台程序, 可直接运行~ 看到结果后再来阅读此文// 文章出处甚多, 已不能列出所有连接#include "stdafx.h"#include <stdio.h>/* >>>>>> _declspec(naked) 使用 <<<<<<<<最近学习驱动开发,在写绕过inline hook的代码时,有个问题困扰了我一天,最后发现原来是在内嵌汇编时,没有使用_declspec(naked)导致的,看来是偶的基础知识掌握的不牢固啊(得补一下了 阅读全文
posted @ 2012-11-29 20:06 瓜蛋 阅读(1857) 评论(0) 推荐(0) 编辑
摘要:读取当前地址代码(NtOpenProcess):LONG *SSDT_Adr,t_addr,adr;t_addr=(LONG)KeServiceDescriptorTable->ServiceTableBase;SSDT_Adr=(PLONG)(t_addr+0x7a*4);adr=*SSDT_Adr;读取起源地址(NtOpenProcess):UNICODE_STRING SysRoutineName;LONG orgadr;‍RtlInitUnicodeString(&SysRoutineName,L"NtOpenProcess");‍orgadr=(LO 阅读全文
posted @ 2012-11-29 16:53 瓜蛋 阅读(568) 评论(0) 推荐(0) 编辑
摘要:/*--------- 1.c -----------*/#include "1.h"//---------列举进程---------NTSTATUS EnumProcess(){int iCount = 1; //进程计数NTSTATUS status; //返回值PVOID pSi = NULL; /*指向SystemInformationClass的指针,此处为SystemProcessesAndThreadsInformation,即我们所要获取的信息*/PSYSTEM_PROCESS_INFORMATION pSpiNext = NULL; //同上ULONG u 阅读全文
posted @ 2012-11-29 00:32 瓜蛋 阅读(1137) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示