Kido 发表于 2015-10-19 14:57

【交作业贴】吾爱破解培训第十课交作业专帖

前提介绍:
《吾爱破解培训第十课:探寻逆向新航标---x64平台脱壳与破解实战》 讲师:Kidohttp://www.52pojie.cn/thread-422192-1-1.html

请大家用课程学到的知识,对加壳的作业进行脱壳和编写脱壳脚本,并破解/逆出KEY,脱壳脚本可以直接上传,脱壳成品可以上传网盘贴地址,节省论坛空间就不要上传到论坛了。

作业截至到2015年10月25号00:00前提交算数,没有加报名群的同学也可以提交,后期会通过作业的提交情况,来淘汰没有交作业的,让交作业的新人加入。

对于作业的解答我已经更新到上面培训贴中,作业遇到问题的可以参考一下。

帖子我设置只有我可见,等一周后取消,切记不要回复和作业无关内容,否则会被扣分,前50个名交作业的同学有奖励。

太星 发表于 2015-10-20 11:10

脱壳很简单,和教程一样。
破解,运行下断点 bp MessgeBoxA,输入52PoJie.Cn,check
断在
00007FFD1C8236A0 | sub rsp,38                              |
00007FFD1C8236A4 | xor r11d,r11d                           |
00007FFD1C8236A7 | cmp dword ptr ds:,r11d    |
00007FFD1C8236AE | je user32.7FFD1C8236DE                  |
00007FFD1C8236B0 | mov rax,qword ptr gs:      

看堆栈返回到 00000001400010EB
00000001400010E6 | E8 15 FF FF FF         | call 140001000                        |
00000001400010EB | EB F1                  | jmp 1400010DE

重载,跟进call 140001000 ,找到key的计算

000000014000101B | call qword ptr ds:[<&GetDlgItemTextA>]|
0000000140001021 | cmp byte ptr ds:,0         | ;比较长度是否=0
0000000140001028 | je 140001060                            |
000000014000102A | lea rdx,qword ptr ds:      | ;140015820:"52KjEd`.>i"
0000000140001031 | mov cl,byte ptr ds:                | ;取一字节
0000000140001033 | lea eax,dword ptr ds:         |
0000000140001036 | cmp al,19                               | ;大于19则跳
0000000140001038 | ja 140001042                            |
000000014000103A | sub cl,5                              |
000000014000103D | cmp cl,7A                               |
0000000140001040 | jmp 14000104F                           |
0000000140001042 | lea eax,dword ptr ds:         |
0000000140001045 | cmp al,19                               | ;大于19跳
0000000140001047 | ja 140001058                            |
0000000140001049 | sub cl,5                              |
000000014000104C | cmp cl,5A                               |
000000014000104F | mov byte ptr ds:,cl                |
0000000140001051 | jle 140001058                           | ;小于等于7A跳
0000000140001053 | sub cl,1A                               |
0000000140001056 | mov byte ptr ds:,cl                |
0000000140001058 | inc rdx                                 |
000000014000105B | cmp byte ptr ds:,0               |
000000014000105E | jnz 140001031                           |

计算完,比较
0000000140001060 | lea rdx,qword ptr ds:      | ;140015820:"52KjEd`.>i"
0000000140001067 | lea rcx,qword ptr ds:      | ;1400112F0:"52PoJie.Cn"
000000014000106E | call 14000B900                        | ;与计算后的比较
0000000140001073 | mov rcx,rbx                           |
0000000140001076 | test eax,eax                            |
0000000140001078 | jnz 14000108D                           | ;不等跳走
000000014000107A | xor r9d,r9d                           |
000000014000107D | lea r8,qword ptr ds:         | ;1400112FC:"Boom!"
0000000140001084 | lea rdx,qword ptr ds:      | ;140011308:"Congratulations! You have successfully Registered"
000000014000108B | jmp 1400010A1                           |
000000014000108D | mov r9d,10                              |
0000000140001093 | lea r8,qword ptr ds:         | ;140011340:"Boomshakalaka"
000000014000109A | lea rdx,qword ptr ds:      | ;140011350:"You Failed!"

通过计算得出注册码:52UtOnj.Hs


附上易语言计算代码
.版本 2
.子程序 逆向key
.局部变量 i, 整数型
.局部变量 pass, 字节集
.局部变量 x, 整数型
.局部变量 al, 字节型
.局部变量 rcx, 整数型
.局部变量 cl, 字节型
.局部变量 key, 文本型
pass = 到字节集 (“52PoJie.Cn”)
.计次循环首 (10, i)
    .计次循环首 (255, x)
      rcx = 十六进制 (“FFFFFF00”) + x
      cl = rcx
      al = rcx - 十六进制 (“61”)
      .如果真 (al ≤ 十六进制 (“19”))
            cl = cl - 5
            .如果真 (al > 十六进制 (“7A”))
                al = al - 十六进制 (“1A”)
            .如果真结束
      .如果真结束
      al = rcx - 十六进制 (“41”)
      .如果真 (al ≤ 十六进制 (“19”))
            cl = cl - 5
            .如果真 (cl > 十六进制 (“5A”))
                cl = cl - 十六进制 (“1A”)
            .如果真结束
      .如果真结束
      .如果真 (pass = cl)
            pass = x
            跳出循环 ()
      .如果真结束
    .计次循环尾 ()
.计次循环尾 ()
key = 取字节集数据 (pass, #文本型, )
输入框 (“获取的注册码是:”, “提示”, key, key, , )


脱壳成品
链接:http://pan.baidu.com/s/1pJ5VFBl 密码:01yw

Roi 发表于 2015-10-24 16:44

x64位平台下的Mpress壳的脱壳破解笔记:
===========
1.指令起始部分:
000000014001B0C0 | 57                     | push rdi                              |
000000014001B0C1 | 56                     | push rsi                              |
000000014001B0C2 | 53                     | push rbx                              |
000000014001B0C3 | 51                     | push rcx                              |
000000014001B0C4 | 52                     | push rdx                              |
000000014001B0C5 | 41 50                  | push r8                                 |
-------------------------------------------------------------------------------
那么指令结束部分:
                                          | pop r8
                                          | pop rdx
                                          | pop rcx
                                          | pop rbx
                                          | pop rsi
                                          | pop rdi
-------------------------------------------------------
单步后发现指令结束部分与上面一毛一样:
0000000140011D12 | 41 58                  | pop r8                                  |
0000000140011D14 | 5A                     | pop rdx                                 |
0000000140011D15 | 59                     | pop rcx                                 |
0000000140011D16 | 5B                     | pop rbx                                 |
0000000140011D17 | 5E                     | pop rsi                                 |
0000000140011D18 | 5F                     | pop rdi                                 |

二进制:41585A595B5E5F
------------------------------------------------------------------------------
2.
000000014001BB9A | 41 5F                  | pop r15                                 |
000000014001BB9C | 41 5E                  | pop r14                                 |
000000014001BB9E | 41 5D                  | pop r13                                 |
000000014001BBA0 | 41 5C                  | pop r12                                 |
000000014001BBA2 | 5F                     | pop rdi                                 |
000000014001BBA3 | 5E                     | pop rsi                                 |
000000014001BBA4 | 5D                     | pop rbp                                 |
000000014001BBA5 | 5B                     | pop rbx                                 |
000000014001BBA6 | C3                     | ret                                     |
二进制:415F415E415D415C5F5E5D5BC3

OEP:0000000140001180 | 48 83 EC 28            | sub rsp,28                              |
search references:you failed
0000000140001078 | 75 13                  | jnz 14000108D                           | ------------->nop

脚本编写:
//Script to Unpack MPress On x64 dbg
//Author:Roi


find rip,"415F415E415D415C5F5E5D5BC3"
mov first_jmp,$result
add first_jmp,D
bp first_jmp
erun
bc
sti
find rip,"41585A595B5E5F"
mov second_jmp,$result
add second_jmp,7
bp second_jmp
erun
sti
msg "this is oep"
ret

链接: http://pan.baidu.com/s/1pJ1SkWj 密码: 9d93
eg:只爆破了,key应该是52PoJie.Cn

呲花哥c 发表于 2015-10-19 15:02

本帖最后由 呲花哥c 于 2015-10-19 15:03 编辑

虽然我看不懂作业 学的语言不通 但还是顶下楼主

1049556901 发表于 2015-10-19 15:06

胡99 发表于 2015-10-19 15:48

支持一下,正在做

蚯蚓翔龙 发表于 2015-10-19 17:06

64位的脚本母鸡怎么写呀,K洞大也没教我们。。。
Unpack:
http://yunpan.cn/cFrd6easxuV6S访问密码 1c66
只有一个虚拟机64位的所以也没测试跨平台了,感觉应该OK的才是
Key:Fuck L4   好像是这个

苏紫方璇 发表于 2015-10-19 18:37

交作业啦先上注册码
52UtOnj.Hs
算法,"52PoJie.Cn"每位ascii码+5

脚本,最后一点单步按说应该一个即可,但是我这里x64dbg可能存在一些问题,需要两个,为了通用,故加了个判断。
sti
bphws rsp,"r"
erun
bphwc rsp-8
mov old,rip
loop:
sti
cmp old,rip
jz loop
ret

niuniu919 发表于 2015-10-19 19:08

本帖最后由 niuniu919 于 2015-10-19 19:43 编辑

第八九课由于电脑原因没有仔细研究,所以写脚本还很吃力,先破解了再研究写脚本。使用爆破的方法。



爆破版成品:http://pan.baidu.com/s/1mgkxeHU




凌云9 发表于 2015-10-19 19:33

英文太差x64用着太坑了
链接:http://pan.baidu.com/s/1i3tW8Zz 密码:i8zc

蚯蚓翔龙 发表于 2015-10-19 19:52

{:301_1008:}看了下群里,才知道原来作业更新了。。。
不过脱法还是类似的没啥好说
Key:52UtOnj.Hs

黑的思想 发表于 2015-10-19 20:15

本帖最后由 黑的思想 于 2015-10-20 19:14 编辑

注册码:52UtOnj.Hs
爆破版(已经脱壳)作业地址:http://pan.baidu.com/s/1mgISZDQ
没有一份脚本命令的帮助文件,还真是难写

sti
BPHWS rsp,"r"
erun
bphwc
sti
sti
MSG "THIS IS OEP !"
RET




页: [1] 2 3 4
查看完整版本: 【交作业贴】吾爱破解培训第十课交作业专帖