xctf(ddctf) Windows_Reverse2 脱壳

1.星期天闲着没事做做这个

od直接开trace

然后写个脚本化简下文件

import re
def isdigit(a):
	try:	
		int(a,10)
		return 1
	except Exception as e:
		try:	
			int(a,16)
			return 1
		except Exception as e1:
			return 0
f1=open("ddctf-1.txt","rb")
f2=open("ddctf-3.txt","a+")
line=f1.readline()
while line:
	line=f1.readline().replace('\r\n','\n')
	if isdigit(line[:5])!=0:
		if re.match( r'00AF(.*) main', line, re.M|re.I)==None:
			#print(line)
			a=1
		else:
			#print(list(line))
			f2.write(line)
	else:
		#print(list(line))
		f2.write(line)
f1.close()
f2.close()

直接翻了翻

看这地址跳这么远,就猜是oep了

od插件直接dump出来,

dump出来就像下面的鬼样子

用了下ImportRec 去修复IAT,并没有什么鸟用,看来还得手工修复

在od中main里面去找iat

就在0x2000这么个地方

结果dump出来不对就往后面翻了翻

结果0x2320那么个地方就是

所以直接把0x2320位置的数据copy过去

再选个位置建import表

最后NT结构里面去改下偏移和size

结果改完了,它还要给我日怪

发现运行不成功,还得把重定位去掉。

很明显base64的标志,只是变了下把输入的转成hex,然后在base64编了他么的一下

2.总结一下

import 表

指向的

这个地方是rva,在010中看得(rva-对应得offset+ 物理对应得offset)

OrginalFirstThunck和FirstThunk都可以指向同一个地方

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值