DGA优化算法
这节应用以前剖析中的輸出对DGA开展反向,实际能够参考Pitou的虚似DGA算法分析(一)。进行反向后,利用Python对DGA开展再次完成。该脚本 *** 能够对于一切给出日期形成相匹配的DGA域名。
DGA调用器
要了解DGA,务必更先查询调用VM的当地编码:
在图中的顶端,能够见到虚似DGA的调用与在调用全过程中传送的五个主要参数:
r8d:当今天(day),如2意味着本月的第二天;
edx:当今月份(month),如三月为3;
ecx:当今年代(year),如2019;
rsi:域名序号,从0开始;
r9:储存形成域名的内存地址。
在截屏的之一行中,域名总数rsi设定为r12d,而r12d为0。直至rsi做到20,该循环系统正好形成20个域名。
IDA Pro图形界面
方式2中的动态性二进制转换形成的汇编程序个数比虚似命令数小80%。殊不知,DGA依然较长,如下边的二张照片所显示。他们表明了DGA,及其其调用的一个涵数,该涵数获得根据日期的種子。
DGA主方式
DGA优化算法:
DGA種子
根据日期的種子:
根据IDA的反编译图能够非常容易地剖析该DGA,因为它展现了涵数的构造和操纵步骤。殊不知,这类状况下,IDA在的真实优点是Hex Rays反编译器。像前边提到的,DGA应用了很多提升的整数除法,即说白了的不会改变整数除法。这种测算在反编译中是很不便的,可是利用Hex Ray的反汇编软件能够非常好的解决。
IDA Pro Hex Rays
此次DGA的反向是彻底根据Hex Ray反编译器的。
更先剖析DGA调用的日期種子涵数。它接受到主要参数的根据下边的设置:
r8d:从1逐渐,因此 每月的之一天为1;
edx:从0开始,因此 一月为0,十二月为11;
ecx:四位数的年代。
月份从0开始的设置是不正确的。真正的月份应该是从1逐渐的,因此 一月应当为1。这节的之一部分在主要参数恰当的设置上剖析这一涵数。而第二一部分研究月份中有误的值对本方式的危害。
更先看一下Hex Rays详细輸出,在其中掩藏了变换和申明:
signed __int64 __usercall days_since_epoch@(int month@, int year@, int day@)
{
//[COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-" " TO EXPAND]
retaddr=v4;
month_o=month;
extra_years=month / 12;
year_f=extra_years year;
month_fixed=(-12 * extra_years month_o);
if ( month_fixed 0 )
{
month_fixed=(month_fixed 12);
--year_f;
}
month_fixed_2=month_fixed;
day_0_based=(day - 1);
if ( day - 1 0 )
{
year_plus_1900=year_f 1900;
do
{
month_fixed=(month_fixed - 1);
if ( --month_fixed_2 0 )
{
month_fixed=11LL;
--year_f;
--year_plus_1900;
month_fixed_2=11LL;
}
is_leap_year=!(year_plus_1900 % 4)
&& (year_plus_1900 !=100 * (year_plus_1900 / 100) || year_plus_1900==400 * (year_plus_1900 / 400));
*(&stack_ - 125)=a5;
a5=*(&stack_ - 125);
day_0_based=(month_lengths_common_year[month_fixed_2 12 * is_leap_year]day_0_based);
}
while ( day_0_based 0 );
}
month_f=month_fixed;
year_f_plus_1900=year_f 1900;
while ( 1 )
{
year_div4_=year_f_plus_1900 % 4;
leap_year=year_div4_
|| year_f_plus_1900==100 * (year_f_plus_1900 / 100) && year_f_plus_1900 !=400 * (year_f_plus_1900 / 400) ? 0LL : 1LL;
*(&stack_ - 125)=a5;
tmp=*(&stack_ - 125);
if ( day_0_based 12 * leap_year])
break;
leap_year_=!year_div4_
&& (year_f_plus_1900 !=100 * (year_f_plus_1900 / 100)
|| year_f_plus_1900==400 * (year_f_plus_1900 / 400));
对卡地亚这个品牌的手表,大家是褒贬不一,在某种程度上,甚至是贬大于褒,例如会有人问“卡地亚为什么能跻身于十大名表”,也有人说“卡地亚手表不保值,基础机芯,不值得买”等。不过不管你对卡地亚到底是褒还是贬...
脚趾甲往肉里长该怎么办(脚指甲长到肉里该怎么办)日常生活之中,脚指甲长到肉里,这类状况是十分普遍的 日常生活之中,脚指甲长到肉里,这类状况是十分普遍的,一旦脚指甲长到肉里以后,实际上针对病人的走动是...
玩具总动员1.2,海底总动员,超人总动员,僵尸新娘,鲨鱼黑帮,狮子王,泰山,恐龙,小美人鱼,风中奇缘,美女与野兽,阿拉丁。跑路小鸡,怪物史莱克1.2.3。小马。 《功夫熊猫》1.往往在逃避命运的路上,...
人民论坛漫评|光荣属于劳动者,幸福属于劳动者 在“五一”国际劳动节到来之际,习近平总书记向全国广大劳动群众致以节日的祝贺和诚挚的慰问,希望广大劳动群众大力弘扬劳模精神、劳动精神、工匠精神,勤于创造、...
一般情况下,大伙儿安装完yiqicms并且设置了伪静态之后,网页页面网页页面应该是那般的方法: 但是有时候大伙儿会发现联接居然是这种方法:上下左右两个url地址对比大伙儿会发现后面的 ur...
驴迹导游是一个微信民众号,现在正在举行“2020旅游心愿节”流动,通过微信介入,每个人都可以抽奖, 必中现金红包,一样平常都是0.31米,提现秒到微信零钱!约请密友也可以获得奖励,同样能直接提现。...