7832007jwb 发表于 2022-7-19 21:52

请教这种情况是没脱干净还是代码被混淆了





用脚本脱壳后



脱壳之后程序能正常运行
就是这个入口处多了个 call dword ptr ds:[<&kernel32.VirtualPro>; kernel32.VirtualProtect
下面的JMP跳过去就是OEP了,是delphi写的,JMP过去特征码也对的上.
IDA里 绝大部分代码都能正常识别,但有部分识别不了.




现在唯一的问题是我要逆向他的一个算法,这个算法进入一个函数后,函数内部各种无脑JMP
就像下面图这种,而且是从7XX地址到6XX地址之间来回不断的跳.
我用run trace看了下命令计次总共几十万次,最关键的一个地方也有将近2万次
我是想知道这个究竟是没脱干净,
还是混淆 或者 是加密后无法还原造成的又或是 作者自己写的保护之类?
有什么解决办法吗!
新手求各位大佬们指教,小弟跪谢了!!!!








cnct2021 发表于 2022-7-20 08:45

本人小白,坐等大佬指教

ZeNiX 发表于 2022-7-20 10:27

加密时可以设置针对选定的函数做混淆,(VM),被 VM 的函数,脱壳之后也还是被混淆的。

7832007jwb 发表于 2022-7-20 10:44

ZeNiX 发表于 2022-7-20 10:27
加密时可以设置针对选定的函数做混淆,(VM),被 VM 的函数,脱壳之后也还是被混淆的。

大佬,我这种是被TMD混淆的原因吗
有办法反混淆吗.
如果确实没办法,我写脚本记录函数里关键值的变化
最后再手写还原算法是否可行呢?
{:1_932:}

ZeNiX 发表于 2022-7-21 11:48

7832007jwb 发表于 2022-7-20 10:44
大佬,我这种是被TMD混淆的原因吗
有办法反混淆吗.
如果确实没办法,我写脚本记录函数里关键值的变化


你可以用 Themida 或 WinLicense 加密个小程序,然后自己选几个函数加 VM。
再进去观察,就可以了解它的方式。

我不知道有什么现成的工具或脚本可以反混淆。
但是,只要肯花时间,反混淆是可能的。
问题在于值不值得。

除非算法很简单,或是很经典,能被你依照关键值变化看出来,要不然你说的方法不可行。

7832007jwb 发表于 2022-7-21 11:54

ZeNiX 发表于 2022-7-21 11:48
你可以用 Themida 或 WinLicense 加密个小程序,然后自己选几个函数加 VM。
再进去观察,就可以了解它的 ...

谢谢大佬.
我昨天仔细看了下,算法应该很简单,就是被混淆了执行的次数有点多
混淆后执行的函数也只有十几个,
我准备把这些函数模拟出来再慢慢手动剔除混淆的无用代码

ZeNiX 发表于 2022-7-22 08:30

7832007jwb 发表于 2022-7-21 11:54
谢谢大佬.
我昨天仔细看了下,算法应该很简单,就是被混淆了执行的次数有点多
混淆后执行的函数也只有十 ...

好,
加油,
祝好运。
页: [1]
查看完整版本: 请教这种情况是没脱干净还是代码被混淆了