dword

逆向破解之160个CrackMe —— 006-007

安稳与你 提交于 2019-11-27 01:05:35
CrackMe —— 006 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe :它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。 CrackMe简称CM。 程序下载地址: 点击我 来源 <-点击查看 编号 作者 保护方式 006 Andrénalin Serial 007 Andrénalin Name/Serial 工具 x32dbg KeyMake VB Decompiler Pro peid 开始破解之旅 ON.1 首先使用x32dbg打开程序搜索字符串 我们看到有一个 “ SuCCESFul ! " 的字符串,从字面上猜测应该是输入正确的Key之后所跳转的地方 我们点进进入来地址,向上翻看,来到该函数的起始点并 设置断点 00401CD0 | 55 | push ebp | 函数起始点 00401CD1 | 8BEC | mov ebp,esp | 00401CD3 | 83EC 0C | sub esp,0xC | 00401CD6 | 68 16104000 | push <JMP.&_

关于dword ptr 指令

筅森魡賤 提交于 2019-11-27 00:54:10
dword 双字 就是四个字节 ptr pointer缩写 即指针 []里的数据是一个地址值,这个地址指向一个双字型数据 比如mov eax, dword ptr [12345678] 把 内存地址 12345678中的双字型(32位)数据赋给eax 8086CPU的指令, 可以处理两种尺寸的数据 , byte和word 。 所以在机器指令中要指明,指令进行的是字操作还是字节操作 。对于这个问题,汇编语言中用一下方法处理。 (1)通过寄存器名指明要处理的数据的尺寸。 例如: 下面的指令中,寄存器指明了指令进行的是字操作: mov ax,1 mov bx,ds:[0] mov ds,ax mov ds:[0],ax inc ax add ax,1000 下面的指令中,寄存器指明了指令进行的是字节操作: mov al,1 mov al,bl mov al,ds:[0] mov ds:[0],al inc al add al,100 (2)在没有寄存器名存在的情况下, 用操作符 X ptr 指明内存单元的长度,X在汇编指令中可以为word或byte 。 例如: 下面的指令中,用word ptr 指明了指令访问的内存单元是一个字单元: mov word ptr ds:[0],1 inc word ptr [bx] inc word ptr ds:[0] add word ptr [bx]

VS2013中反汇编常用指令理解

*爱你&永不变心* 提交于 2019-11-26 23:17:56
  最近复习C语言,对反汇编感兴趣,就用下图举例解释一下我的理解,如有错还请大佬指教。   首先,认识两个常用指令 :    lea ---> 取地址赋值 mov ---> (同类型)赋值 其次理解 dword ptr [] :    dword(double word)即双字,也就是四字节    ptr(point)即指针    []放的是一个地址值,这个地址对应一个四字节数据 举个栗子, dword ptr [p1] 表示 : p1(地址值)对应的四字节数据(内容) 解释完了,现在把各部分汇编指令拿出来验证一下    来源: https://www.cnblogs.com/Duikerdd/p/11334962.html

逆向破解之160个CrackMe —— 004-005

三世轮回 提交于 2019-11-26 21:18:44
CrackMe —— 004 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe :它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。 CrackMe简称CM。 来源 编号 作者 保护方式 004 ajj Name/Serial(Delphi) 005 ajj Serial(Delphi) 工具 x32dbg DelphiDecompiler peid LordPE ImportREC 开始破解之旅 ON.1 使用x32dbg打开004号程序,和程序一起的还有一个帮助文件,从文件中我们得知程序是Delphi 打开程序,我们发现没有一个确认按钮,这下应该怎么来操作呢? 先搜索字符串 地址=004580A9 反汇编=mov edx,ckme.458114 字符串="恭喜恭喜!注册成功" 双击,在这个地址向上翻看 第二个跳转跳过了注册成功,该跳转为注册码判断跳转将其 NOP ,输入框被输入数据????怎么没有任何反应 我们使用 DelphiDecompiler 来打开004号程序,该程序是一个Delphi反编译程序,点击

SSDT笔记。(System Services Descriptor Table)

妖精的绣舞 提交于 2019-11-26 19:35:51
本人只是业余爱好,勿喷,有兴趣的看。懂的也就没必要看了。 希望能结交更多的朋友,不论技术如何,在下都愿意一起分享学习。 肯定有错的地方,希望大家指出,下面只是概念性东西。希望能给和我一样菜的朋友看下。看书上或者资料介绍的很繁琐感觉,我这算大白话吧。因为业余也没想系统学习,所以朋友给我科普了下,在这里谢谢下他。 说了这么多废话看笔记吧。 r0的inline hook 其实理论上和 r3的 我感觉差不多。(自己的看法) OpenProcess(kernel32.dll)->NtOpenProcess(ntdll.dll)->NtOpenProcess(ssdt kernel api address)->real NtOpenProcess Address 首先是SSDT的结构  typedef struct _SYSTEM_SERVICE_TABLE   {   PVOID ServiceTableBase; // 这个指向系统服务函数地址表   PULONG ServiceCounterTableBase;   ULONG NumberOfService; // 服务函数的个数   ULONG ParamTableBase; // 参数表   }SYSTEM_SERVICE_TABLE, *PSYSTEM_SERVICE_TABLE; 这里使用OpenProcess做例子。 OD调试

TP 笔记~

a 夏天 提交于 2019-11-26 19:35:44
、 安装与配置 windbg 的 symbol (符号) 本篇是新手自己写的一点心得.建议新手看看.同时希望前辈多多指教. 写这篇的动机:在网上找了一上午的 windbg 配置符号教程.楞是没找到详细的,都讲的太模糊而且互相抄袭.不适合新手看.终于靠自己的努力弄懂了一点,呵呵写出来新手们分享. 安装与配置 windbg 的 symbol (符号) 第一步 是从 http://www.microsoft.com/ddk/debugging 下载最新版本的 WinDBG,因为符号服务器二进制文件是由 WinDBG 小组开发的。 您将需要检查是否有 WinDBG 更新版本,因为该小组似乎具有相当紧凑的发布日程安排,并且每隔几个月就会发布更新版本。 第二步 双击下载的文件安装 windbg .安装时注意记住安装到那里了. 第三步 windbg 访问符号需要两个文件(SYMSRV.DLL 和 SYMSTORE.EXE)所以添加主 path 环境变量中它们的路径进去,即:你的 windbg 安装目录. 操作方法:在桌面我的电脑点右键--属性--高级--环境变量,在系统变量列表框中找到 path 双击,在变量值最后面加一个分号再把你的安装目录写上.点确定. 这一步是告诉 windbg 那两个文件放在什么地方. 第四步 新建一个环境变量_NT_SYMBOL_PATH 值为: SRV*c:

findhex

不羁的心 提交于 2019-11-26 19:35:42
FindPattern(hD3D, 0x128000 , (PBYTE) " \xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86 " , " xx????xx????xx " ); // 这种HOOK方式就是找到d3d9.dll的接口,搜索特征码,找到Vtable(虚函数表) DWORD FindPattern ( DWORD startAddres, DWORD fileSize, PBYTE pattern, char mask[] ) { DWORD pos = 0 ; int searchLen = strlen ( mask ) - 1 ; for ( DWORD retAddress = startAddres; retAddress < startAddres + fileSize; retAddress++ ) { if ( *(PBYTE) retAddress == pattern[ pos ] || mask[ pos ] == ' ? ' ) { if ( mask[ pos + 1 ] == ' \0 ' ) { return ( retAddress - searchLen ); } pos ++ ; } else { pos = 0 ; } } return NULL; } } by:

逆向破解之160个CrackMe —— 002-003

爱⌒轻易说出口 提交于 2019-11-26 18:13:42
CrackMe —— 002 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe :它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。 CrackMe简称CM。 来源 编号 作者 保护方式 002 Afkayas Name/Serial(VB5) 003 Afkayas Nag,Name/Serial(VB5) 工具 x32dbg KeyMake 开始破解之旅 ON.1 使用x32dbg打开002号程序,运行 在输入框输入任意数据,点击按钮 OK ,弹出窗口 爆破方式 搜索字符串 “ Try Again ”点进地址向上查看,在 0040258B 处下断点 ,这里是逻辑正确跳转处 0040258B | 74 58 | je afkayas.1.4025E5 | 0040258D | 68 801B4000 | push afkayas.1.401B80 | 401B80:L"You Get It" 00402592 | 68 9C1B4000 | push afkayas.1.401B9C | 401B9C:L"\r\n"

__stdcall 和 __cdecl 的区别

天涯浪子 提交于 2019-11-26 17:39:03
1. __cdecl __cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,由调用者负责把参数压入栈,最后也是由调用者负责清除栈的内容,一般来说,这是 C/C++ 的默认调用函数的规则,MS VC 编译器采用的规则则是这种规则 2. __stdcall _stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,由调用者负责把参数压入栈,最后由被调用者负责清除栈的内容,Windows API 所采用的函数调用规则则是这种规则 另外,采用 __cdecl 和 __stdcall 不同规则的函数所生成的修饰名也各为不同,相同点则是生成的函数修饰名前缀都带有下划线,不同的则是后缀部分,当然,这两者最大的不同点就在于恢复栈的方式不同,而且这点亦是最为重要的。 __cdecl 规则要求调用者本身负责栈的恢复工作,在汇编的角度上说,恢复堆栈的位置是在调用函数内,考虑这样一段 C++ 代码(在 VC 下 Debug) #include <cstdio> void __cdecl func( int param1, int param2, int param3) { int var1 = param1; int var2 = param2; int var3 =

How large is a DWORD with 32- and 64-bit code?

浪尽此生 提交于 2019-11-26 13:00:17
问题 In Visual C++ a DWORD is just an unsigned long that is machine, platform, and SDK dependent. However, since DWORD is a double word (that is 2 * 16), is a DWORD still 32-bit on 64-bit architectures? 回答1: Actually, on 32-bit computers a word is 32-bit, but the DWORD type is a leftover from the good old days of 16-bit. In order to make it easier to port programs to the newer system, Microsoft has decided all the old types will not change size. You can find the official list here: http://msdn