脱壳一个不知名文件

2022-04-05 0 114

检测一个软件话不多说,查看编程语言,C/C++

脱壳一个不知名文件脱壳一个不知名文件

查看区段,发现多了一个区段

脱壳一个不知名文件脱壳一个不知名文件

导入OD,MSG提示,有壳

脱壳一个不知名文件脱壳一个不知名文件

进入OEP,看到这个直接ESP定理

脱壳一个不知名文件脱壳一个不知名文件

我这里下了一个硬件断点

脱壳一个不知名文件脱壳一个不知名文件

结果发现什么都没发生直接跑飞

脱壳一个不知名文件脱壳一个不知名文件

估计有断点检测,查看日志

脱壳一个不知名文件脱壳一个不知名文件

用最后一次异常法, 0x0047108E, 成功到达OEP

脱壳一个不知名文件脱壳一个不知名文件

但是它是如何处理硬件断点的呢?若是我想用硬件断点呢?所以我决定查看它的反硬件断点的实现

一般反调试技术都是写在SEH,或者hook 系统API, 其中最常见的就是HOOK KiUserExceptionDispatcher 异常分发函数

对其下CC断点, 再对ESP定律下硬件访问断点

脱壳一个不知名文件脱壳一个不知名文件

脱壳一个不知名文件脱壳一个不知名文件

成功断下, 查看 [ESP + 0x4] 处, 其是储存硬件访问断点地址的结构体

脱壳一个不知名文件脱壳一个不知名文件

发现当其运行指定CALL后,硬件断点的地址被清空

脱壳一个不知名文件脱壳一个不知名文件

那么知道情况就好办了,我们可以编写OD脚本来实现越过检测

在这里需要知道, 在 KiUserExceptionDispatcher 函数入口处:

[ESP + 0x4] 地址内容开始后5个4字节是一个结构体, 其中后4个4字节存储的是硬件断点的地址

[ESP + 0x14] 存储的是当前异常的地址

[ESP + 0x4] + 0xB8 地址里存储的是异常处理完毕后要返回的用户空间代码地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 手动设置 KiUserExceptionDispatcher 入口点CC断点
// ntdll.ZwContinue 还有这个位置
// HengXi.org
var 返回地址
bphws 4271B5, "x"
开始:
eob 判断
run
判断:
cmp eip,7C92E47C
je 删除硬件断点
cmp eip,7C92E493
je 设置CC
cmp eip,返回地址
je 设置硬件断点
jmp 结果
删除硬件断点:
bphwc 4271B5
jmp 开始
设置CC:
mov 返回地址,[esp]
add 返回地址,0b8
mov 返回地址,[返回地址]
bp 返回地址
jmp  开始
设置硬件断点:
bphws 4271B5, "x"
jmp  开始
结果:
MSGYN "继续?"
cmp $RESULT,1
je 开始
ret

成功到达OEP

脱壳一个不知名文件脱壳一个不知名文件

然后, 其实仔细的看下就会发现存在OEP窃取的情况

脱壳一个不知名文件脱壳一个不知名文件

所以为了恢复OEP,我们需要寻找原始OEP的代码,在最后一次异常处对壳代码下内存访问断点

脱壳一个不知名文件脱壳一个不知名文件

成功断下

脱壳一个不知名文件脱壳一个不知名文件

在OEP处设置硬件执行断点

脱壳一个不知名文件脱壳一个不知名文件

接下来我们利用Run跟踪来记录到达OEP之前的代码

(1)添加记录文件

脱壳一个不知名文件脱壳一个不知名文件

(2)勾上所有异常忽略

脱壳一个不知名文件脱壳一个不知名文件

(3)打开Run跟踪

脱壳一个不知名文件脱壳一个不知名文件

(4)跟踪步入

脱壳一个不知名文件脱壳一个不知名文件

等待3~4分钟, 到达OEP,数了一下将近一万行代码,我们搜索关键OEP字段:push ebp

或者手动排查,去除pushad/popad无用的花指令代码段

找到原OEP代码

脱壳一个不知名文件脱壳一个不知名文件

获取硬编码, 将其粘贴到现OEP

脱壳一个不知名文件脱壳一个不知名文件

脱壳一个不知名文件

将其Dump下来, 然后我们直接运行是无法打开的,需要修复IAT表

查看目标IAT表发现存在IAT重定位

脱壳一个不知名文件脱壳一个不知名文件

我们先定位壳代码中重定位IAT表的代码

重新加载,在壳OEP处, 随便在IAT中找一个重定位地址, 这里是0x460974,利用之前的OD脚本下硬件写入断点

1
2
// 修改OD脚本
bphws 4271B5, "x" 改写为 bphws 460974, "w"

成功断下

脱壳一个不知名文件脱壳一个不知名文件

脱壳一个不知名文件

观察发现此时的EAX是重定位的地址, [ESP – 0C] 位置恰巧是重定位系统函数的真实地址

脱壳一个不知名文件脱壳一个不知名文件

于是利用OD的脚本修复IAT表的思路也就理清楚了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 手动设置 KiUserExceptionDispatcher 入口点CC断点
// ntdll.ZwContinue 还有这个位置
// HengXi.org
var 函数地址
var 返回地址
bphws 4743D5, "x"
bphws 4271B5, "x"
开始:
eob 判断
run
判断:
cmp eip,7C92E47C
je 删除硬件断点
cmp eip,7C92E493
je 设置CC
cmp eip,返回地址
je 设置硬件断点
cmp eip, 4743D5
je 修复IAT
jmp 结果
删除硬件断点:
bphwc 4743D5
bphwc 4271B5
jmp 开始
设置CC:
mov 返回地址,[esp]
add 返回地址,0b8
mov 返回地址,[返回地址]
bp 返回地址
jmp  开始
设置硬件断点:
bphws 4743D5, "x"
bphws 4271B5, "x"
jmp  开始
修复IAT:
cmp eax, 500000
jg 开始
mov 函数地址, [esp - 0C]
mov [edi], 函数地址
jmp 开始
结果:
MSGYN "继续?"
cmp $RESULT,1
je 开始
ret

修改成功, 重新Dump下来

脱壳一个不知名文件脱壳一个不知名文件

但是通过Import REC发现一个无效的地址

脱壳一个不知名文件脱壳一个不知名文件

脱壳一个不知名文件脱壳一个不知名文件

在OD中查看, 发现是一处奇怪的函数调用

脱壳一个不知名文件脱壳一个不知名文件

来到OEP处, 对46BD5B下CC断点

脱壳一个不知名文件

脱壳一个不知名文件

它迟早需要调用函数,进入到系统领空,所以设置Run跟踪条件

脱壳一个不知名文件脱壳一个不知名文件

脱壳一个不知名文件

成功断下,找到其调用的函数

脱壳一个不知名文件脱壳一个不知名文件

在Import REC中修改

脱壳一个不知名文件脱壳一个不知名文件

发现还是打不开软件,导入OD查看发现OEP不对, 默认为 4271B5

脱壳一个不知名文件脱壳一个不知名文件

修改OEP

脱壳一个不知名文件脱壳一个不知名文件

修改成功然而双击还是没用

脱壳一个不知名文件脱壳一个不知名文件

查看堆栈窗口

脱壳一个不知名文件脱壳一个不知名文件

第一行第三列就是最后调用的函数的地方,也就是异常的地址

跟进来看似乎又是一个类似IAT表的跳转

脱壳一个不知名文件脱壳一个不知名文件

然而现在 0x167054 内容为空, 所以触发了异常

脱壳一个不知名文件脱壳一个不知名文件

我们在原程序中查看这个地址,发现是类似函数调用的代码,格式一致均为6字节一段调用

脱壳一个不知名文件脱壳一个不知名文件

正巧这个跳转表代码也为6个字节

脱壳一个不知名文件脱壳一个不知名文件

那我们只需要将这个所有6字节调用的代码覆盖现在跳转表即可

脱壳一个不知名文件脱壳一个不知名文件

保存下来,成功运行

脱壳一个不知名文件脱壳一个不知名文件

最后还要感谢恒大老师的教导

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

注:在使用本系统时,使用方必须在国家相关法律法规范围内并经过国家相关部门的授权许可,禁止用于一切非法行为。使用用途仅限于测试、实验、研究为目的,禁止用于一切商业运营,本团队不承担使用者在使用过程中的任何违法行为负责。

83源码 技术教程 脱壳一个不知名文件 https://www.83ym.com/165.html

认准唯一TG:@ym830

常见问题
  • 站内所有资源,针对不同等级VIP会员可直接下载,特殊资源商品会注明是否免费,指会员所享有根据选择购买的会员选项所享有的特殊服务,具体以本站公布的服务内容为准。
查看详情
  • 按照我国的法律规定,运营网络棋牌首先需要成立一个注册正规备案的公司,然后申请网站备案、文网文、ICP等等,这些证件缺一不可。 一.注册公司 在当地工商进行注册,公司名称以“XX科技有限公司”为名,如:富裕棋牌经营范围填写“计算机软硬件、网络设备的设计开发与购销”。 二.域名及网站备案 在国内从事网站经营活动就必须经过相关部门的备案,因此棋牌运营商在购买了域名后,就要到当地网监局办理网站备案,或者请服务器提供商代为备案。 三.申请文网文 文网文全称为网络文化经营许可证,是从事经营性互联网文化活动所必需的资质。一般是需要到当地省一级(省、直辖市、自治区)的文化行政部门提出申请,并经由当地的文化行政部门合法批准。次资质要求申请公司注册资金必需达到1000万,并提供游戏版权证明文件。 四.申请ICP ICP又称为增值电信业务许可证,所有网络游戏运营商均需要办理ICP许可证,此证件要求公司注册资金1000万,需到当地市级通讯管理局办理。 五.申请文网游——游戏备案 根据《网络游戏管理暂行办法》(文化部第49号)的规定,国产网络游戏在上网运营之日起30日内应当按规定向国务院文化行政部门履行备案手续。 以上就是网络棋牌游戏正规运营所必需的资质证明。一般作为正规有实力的棋牌游戏开发公司,不光要具备所有的正规资质,而且会对投资者、代理商等合作伙伴给予相关指导和协助,与合作伙伴携手共赢!
查看详情

相关文章

猜你喜欢
官方客服团队

为您解决烦忧 - 24小时在线 专业服务