首页
社区
课程
招聘
[求助]代码变形乱序还原
发表于: 2012-9-27 20:21 5631

[求助]代码变形乱序还原

2012-9-27 20:21
5631
pop ecx
pop ecx
test esi,esi
jnz xxxxxxxx

加密后变成 call yyyyyyyy

有很多这样的普通代码被加密成 call yyyyyyyy这样的形式   现在想通过写代码将加密后的call还原回来 但一直没有思路 求指教

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 6
活跃值: (1498)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
搞颠倒了吧,上边的是变形后的
2012-9-27 22:26
0
雪    币: 264
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没颠倒call yyyyyyyy里面有几百行变形乱序的代码  这是TTP里面的乱序变形
2012-9-28 19:03
0
雪    币: 305
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
一般是在函数入口点处修改,用一个call调用 直接到自己的代码处 执行完自己的程序在回来执行原程序的代码。 感染型病毒一般这样干 也不排除别的

call调用里面主要是自己的代码,一般是加密的。但是他要执行自己的代码肯定得解密。所以你要分析call里面的循环部分(一般就是解密函数)。

Note:
直接用OD加载 进call里面,动态调试 或者IDA用idc脚本或者python都是可以的。
我一般是用OD解密完了再dump出来 用IDA加载分析。
2012-9-28 20:32
0
雪    币: 264
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
貌似没有理解我的意思(或者是我理解错了)

加密前(5个字节):
pop ecx
pop ecx
test esi,esi
jnz xxxxxxxx

加密后(5个字节):
call yyyyyyyy

现在的问题是在没有知道加密前的代码的前提下,通过写代码将加密前的代码:
pop ecx
pop ecx
test esi,esi
jnz xxxxxxxx
给识别出来
(注意:实际的运行中会根据esi的值 进过一系列的运算到不同的地址,然后通过retn跳出call yyyyyyyy,call的内部不会出现jnz xxxxxxxx这一句的 ,像这样的test jnz这样的指令识别比较麻烦的,call的内部影响标志寄存器的指令非常多)

像这样普通的代码被加密的有上百处,不可能每处都用IDA分析呀
2012-9-28 20:51
0
雪    币: 305
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是我理解错了, 貌似见过这个方法。
2012-9-28 21:23
0
游客
登录 | 注册 方可回帖
返回