反沙箱初探-api模拟

文章描述了一种在沙箱环境中模拟API时遇到的问题,具体是FoldStringA函数未被正确模拟,导致字符串未映射,进而影响了解密和GetProcAddress的正常工作。通过手动映射字符串,程序执行恢复正常。解决方法是完善沙箱中对FoldStringA的模拟功能。
摘要由CSDN通过智能技术生成

沙箱在模拟库里面的api时,可能有遗漏或者模拟不位。执行某个api后,没有产生预期的行为,导致产生了异常。

图1 沙箱里面执行的FoldStringA

由于沙箱没有模拟此FoldStringA,执行完这个函数之后,并没有将字符串映射过去,如图二所示。函数执行完后,0x20fca0处的值还是为零。

图2 执行函数后

后续拿lpDestStr的值进行解密操作。解密出函数字符串后,再取得函数地址,最后调用。由于api没有模拟,lpDestStr的值不正确,解密字符串失败,无法获取函数地址,导致执行异常。

图3 解密并执行

解决方案:在沙箱里面模拟FoldStringA函数,将源字符串映射到目的字符串去。

过程:分析此样本时,发现GetProcAddress返回异常,第二个参数异常,导致返回值为零。往上追溯有解密字符串的地方,解密字符串的key来源于FoldStringA的lpDestStr。再次调试发现执行完FoldStringA后,字符串没有映射过去,手动映射过去后,执行正常。

hash:7000a39136f7603db9d7c37d6ac515b932086c0c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值