跳至主要内容

160个CrackMe之001 Acid burn

http://ift.tt/2i73gJv

[TOC]

前期准备工作

熟悉软件流程

首先打开软件,熟悉一遍软件的流程,以便了解基本导入口点

可以看到,界面的主要交互有2个,以一个是serial/name

还有一个就是serial

查看PE信息

首先用PEID扫一下,看看是什么语言编写的,连接器版本,有没有壳,TLS回调函数等

查看了这写信息之后,主要想做的事情就是点击check 的时候正确就好了(其实应该是逆出算法更好的,但是真心不想动)

开干

下断分析

根据点击发现,输入错误的时候,会填出一个框用来提示,那么猜一下这个框是什么东西,是MessageBox 还是Dialog 或者其他的,不妨挨个下断点试试
就还有一个点就是弹出的框中有字符串提示,其实可以搜一下字符串,直接找到这个定位(鉴于这样做的成本最小,所有先从搜索字符串开始吧)
###第一步
- 破解serial/name

果然,一搜就搜到了,果然难度为1的就是简单的

直接定位过去

0042FB03     /75 1A         JNZ SHORT Acid_bur.0042FB1F
0042FB05  |. |6A 00         PUSH 0x0
0042FB07  |. |B9 CCFB4200   MOV ECX,Acid_bur.0042FBCC                ;  Congratz !!
0042FB0C  |. |BA D8FB4200   MOV EDX,Acid_bur.0042FBD8                ;  Good job dude =)
0042FB11  |. |A1 480A4300   MOV EAX,DWORD PTR DS:[0x430A48]
0042FB16  |. |8B00          MOV EAX,DWORD PTR DS:[EAX]
0042FB18  |. |E8 53A6FFFF   CALL Acid_bur.0042A170
0042FB1D  |. |EB 18         JMP SHORT Acid_bur.0042FB37
0042FB1F  |> \6A 00         PUSH 0x0
0042FB21  |.  B9 74FB4200   MOV ECX,Acid_bur.0042FB74                ;  Try Again!
0042FB26  |.  BA 80FB4200   MOV EDX,Acid_bur.0042FB80                ;  Sorry , The serial is incorect !
0042FB2B  |.  A1 480A4300   MOV EAX,DWORD PTR DS:[0x430A48]
0042FB30  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]


可以看到怎么会这么简单,正好有个JNZ跳转,爆破嘛,当然是直接NOP掉喽

0042FB03      90            NOP
0042FB04      90            NOP
0042FB05  |.  6A 00         PUSH 0x0
0042FB07  |.  B9 CCFB4200   MOV ECX,Acid_bur.0042FBCC                ;  Congratz !!
0042FB0C  |.  BA D8FB4200   MOV EDX,Acid_bur.0042FBD8                ;  Good job dude =)
0042FB11  |.  A1 480A4300   MOV EAX,DWORD PTR DS:[0x430A48]
0042FB16  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
0042FB18  |.  E8 53A6FFFF   CALL Acid_bur.0042A170
0042FB1D  |.  EB 18         JMP SHORT Acid_bur.0042FB37
0042FB1F  |>  6A 00         PUSH 0x0
0042FB21  |.  B9 74FB4200   MOV ECX,Acid_bur.0042FB74                ;  Try Again!
0042FB26  |.  BA 80FB4200   MOV EDX,Acid_bur.0042FB80                ;  Sorry , The serial is incorect !
0042FB2B  |.  A1 480A4300   MOV EAX,DWORD PTR DS:[0x430A48]
0042FB30  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]


然后第一个步就搞定了

第二步

  • 破解serial

同样的搜索字符串,找到如下代码:

0042F4D5     /75 1A         JNZ SHORT Acid_bur.0042F4F1
0042F4D7  |. |6A 00         PUSH 0x0
0042F4D9  |. |B9 64F54200   MOV ECX,Acid_bur.0042F564                ;  Congratz!
0042F4DE  |. |BA 70F54200   MOV EDX,Acid_bur.0042F570                ;  God Job dude !! =)
0042F4E3  |. |A1 480A4300   MOV EAX,DWORD PTR DS:[0x430A48]
0042F4E8  |. |8B00          MOV EAX,DWORD PTR DS:[EAX]
0042F4EA  |. |E8 81ACFFFF   CALL Acid_bur.0042A170
0042F4EF  |. |EB 18         JMP SHORT Acid_bur.0042F509
0042F4F1  |> \6A 00         PUSH 0x0
0042F4F3  |.  B9 84F54200   MOV ECX,Acid_bur.0042F584                ;  Failed!
0042F4F8  |.  BA 8CF54200   MOV EDX,Acid_bur.0042F58C                ;  Try Again!!
0042F4FD  |.  A1 480A4300   MOV EAX,DWORD PTR DS:[0x430A48]
0042F502  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]


NOP 掉JNZ跳转

0042F4D5      90            NOP
0042F4D6      90            NOP
0042F4D7  |.  6A 00         PUSH 0x0
0042F4D9  |.  B9 64F54200   MOV ECX,Acid_bur.0042F564                ;  Congratz!
0042F4DE  |.  BA 70F54200   MOV EDX,Acid_bur.0042F570                ;  God Job dude !! =)
0042F4E3  |.  A1 480A4300   MOV EAX,DWORD PTR DS:[0x430A48]
0042F4E8  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
0042F4EA  |.  E8 81ACFFFF   CALL Acid_bur.0042A170
0042F4EF  |.  EB 18         JMP SHORT Acid_bur.0042F509
0042F4F1  |>  6A 00         PUSH 0x0
0042F4F3  |.  B9 84F54200   MOV ECX,Acid_bur.0042F584                ;  Failed!
0042F4F8  |.  BA 8CF54200   MOV EDX,Acid_bur.0042F58C                ;  Try Again!!
0042F4FD  |.  A1 480A4300   MOV EAX,DWORD PTR DS:[0x430A48]
0042F502  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]

然后就结束了QAQ

The post 160个CrackMe之001 Acid burn appeared first on cole.

http://ift.tt/2jCxxAb reverse engineering, reverse December 01, 2017 at 07:44PM

评论

此博客中的热门博文

RS232 学习笔记

https://ift.tt/2zh0MU7 什么是RS232 RS232的传输方式 RS232的分类 数据终端设备:DTE(Data Terminal Equipment) 数据通信设备:DCE:Data Communication Equipment 常见的管脚接口和脚位的意义 发展 RJ-45接口和DB-9 Console 及DB-9 Modem接口的对应关系 9针串口 各脚位的意义 常见的串口设置 波特率(Bps) 数据位(Data Bits) 奇偶校验(Parity) 停止位(Stop Bits) 流量控制 什么是RS232 RS232 是 美国电子工业联盟 指定的串行通信的接口标准。 原始编号全称是EIA-RS-232(简称232,RS232)。他被广泛用于计算机串行接口外设连接。 RS232 标准的全称是EIA-RS-232C标准,其中EIA代表美国电子工业联盟,RS(Rrcommand Standard)代表推荐标准,232是标识号,C代表232的第三次修改。 RS232的传输方式 在rs232标准中,字符是以一串行的比特串来一个接一个断点以串列(serial)的方式传输的(所以又叫串口)。 优点 传输线少,配线简单,发送距离可以较远 最常见的编码格式是异步起停( Asynchronous Start-stop )格式,它使用一个起始比特后面紧跟7个或8个数据比特(bit),然后是奇偶校验比特,最后是一个或两个停止比特。所以发送一个字符至少需要10比特,带来的效果是使全部的传输速率,发送信号的速率以10划分。 一个最平常的代替异步起停的方式是使用高级数据链路控制协议(HDLC)。 RS232在设计之初就是用来连接调制解调器做传输之用的,也因此它的脚位意义通常和调制解调器传输有关。 RS232的分类 根据不同的线路用来发送和接受信号的不同,妇女为 数据终端设备:DTE(Data Terminal Equipment) 计算和终端设备有DTE连接器 数据通信设备:DCE:Data Communication Equipment 调制解调器和打印机有DCE连接器 不是很准确, 但是可以大概分为这两类 常见的管脚接口和脚位的意义 发展 RS232...

32位ARM汇编语言(四)数据处理指令

http://ift.tt/2Gwa4v5 基本指令介绍 数据传送指令 比较指令 cmp{条件}操作数1,操作数2 CMN{条件}操作数1,操作数2 TST{条件},操作数1,操作数2 TEQ{条件} 操作数1,操作数2 算数逻辑运算指令 ADD{条件}{S}目的寄存器,操作数1,操作数2 ADC{条件}{S}目的寄存器,操作数1,操作数2 RSB{条件}{S}目的寄存器,操作数1,操作数2 RSC{条件}{S}目的寄存器,操作数1,操作数2 AND{条件}{S}目的寄存器,操作数1,操作数2 EOR{条件}{S}目的寄存器,操作数1,操作数2 BIC{条件}{S}目的寄存器,操作数1,操作数2 基本指令介绍 数据传送指令 数据传送指令用于在寄存器和储存器中之间进行数据的双向传输 比如:MOV ,MVN 算数逻辑运算指令 完成常用的算术与逻辑运算,该类指令不但将运算结果保存在目的寄存器中,同时更新CPSR中相应条件表示位 比如:ADD,ADC,SUB,SBC,RSB,RSC,AND,ORR,EOR,BIC 比较指令 不保存运算结果,只更新CPSR中相应的条件标志位 比如:CMP,CMN,TST,TEQ 数据传送指令 指令 描述 MOV{条件}{S}目的寄存器,操作数 数据传送指令 MVN{条件}{S}目的寄存器,操作数 数据取反传送指令 {S}选项决定指令的操作是否影响CPSR中条件标志位的值 MVN与MOV不同之处是在传送之前按位被取反 __asm__ ("mov ri,r0“); //将寄存器R0的值传送到寄存器R1 __asm__(”mov r1,r0,lsl#3"); //将寄存器R0的值左移3位后传到R1 __asm__(“mov pc,lr"); //将寄存器lr的值传送到pc,常用于子程序返回 __asm__("mvn r0,#0”); // 将立即数0 取反传送到寄存器R0中,完成后R0=-1 比较指令 指令 描述 CMP{条件}操作数1,操作数2 比较指令 CMN{条件}操作数1,操作数2 比较反值指令 TST{条件...

32位ARM汇编语言(二)ARM 汇编语言特点

http://ift.tt/2FpIH4w 两种不同风格的ARM指令 特点1:LDR/STR结构 特点2:8中寻址方式 特点3:指令后缀 特点4:条件执行后缀 特点5:多级指令流水线 两种不同风格的ARM指令 ARM 官方的ARM汇编指令:指令一般用大写,Windows中IDE开发环境常用,如 LDR RO,[R1] GNU风格的ARM汇编:指令一般用小写字母,linux中常用,如: ldr r0,[r1] 特点1:LDR/STR结构 ARM 采用RISC(Reduced Instruction Set Computer 中文:精简指令计算机)结构,cpu本身不能直接读取内存,需要先将内存中的内容加载到cpu中的通用寄存器中,而后才能被cpu处理 ldr(load register)指令将内存内容加载入通用寄存器 str(store register)指令将寄存器内容存入内存空间中 ldr/str组合用来实现ARM cpu和内存的数据交互 特点2:8中寻址方式 寻址方式 示例 寄存器寻址 mov r1,r2 立即寻址 mov r0,#0xff00 寄存器移位寻址 mov r0,r1,lsl#3 寄存器间接寻址 ldr r1,[r2] 基址变址寻址 ldr r1,[r2,#4] 多寄存器寻址 ldmia r1!,{r2-r7,r12} 堆栈寻址 stmfd sp!,{r2-r7,lr} 相对寻址 beq sign 特点3:指令后缀 虽然ARM的汇编指令不是很多,但是通常可以在指令后面跟上后缀,变成不同的指令,常用的指令有: 常用指令后缀 解释 B(byte) 功能不变,操作长度变为8位 H(half word) 功能不变,长度变为16位 S(signed) 功能不变,操作数变为有符号(如ldrsh,ldrsb) S(S标志) 功能不练,影响CPSR标志位,如(mov 和movs,movs r0,#0) 特点4:条件执行后缀 条件码 助记符 助记符全拼 说明 检测条件 0000 EQ equal 等于0 Z=1 0001 NE not equal...