代价就是不能调试,其实也不算什么代价,这个程序脱壳之后,不用调试期,在虚拟机里面单独运行都崩溃。
但是看代码,看得好晕。。。
这里,第一个call先malloc了一块空间,然后把字符串memmove到了那块空间,扔到了一个全局指针上,然后返回了
第二个call给某个全局变量做了一个原子++操作,很恶心,
第三个函数是重点,
第一个 call ,给局部变量初始化,
第二个 call 就是激动人心的时刻,CreateFileW 了,方式是 OPEN_EXISTING 和 FILE_ATTRIBUTE_NORMAL 。在函数里面,CreateFileW之后,如果成功的话,这个函数返回1,不成功的话,这个函数返回0
下面的跳转就很诡异。
操了,如果上面CreateFileW成功就转入红色,否则就走绿色出去。
但是这里第三个 call ,直接就把CreateFileW的 HADNLE 关闭了,为什么要关闭呢,难道就是为了要弄出一个文件来么。
倒数第二个call ,根据前面得到的一个结果,给全局指针赋值。
最后一个call ,原子--
我就不明白,这破逼玩意,折腾个什么劲,打开了文件,又关闭文件。
然后上面的主函数直接进右边,一系列函数调用了。。。。
这些是否重要,都尚且未知,但是不一步一步走下去,真的不知道万一丢了哪个怎么办,而且还不能动态跟踪。。。
好累。。。静态分析汇编代码是最累的。。。。
没有源码,没有符号,毛提示都没有。。。。我继续。。。。
但是看代码,看得好晕。。。
这里,第一个call先malloc了一块空间,然后把字符串memmove到了那块空间,扔到了一个全局指针上,然后返回了
第二个call给某个全局变量做了一个原子++操作,很恶心,
第三个函数是重点,
第一个 call ,给局部变量初始化,
第二个 call 就是激动人心的时刻,CreateFileW 了,方式是 OPEN_EXISTING 和 FILE_ATTRIBUTE_NORMAL 。在函数里面,CreateFileW之后,如果成功的话,这个函数返回1,不成功的话,这个函数返回0
下面的跳转就很诡异。
操了,如果上面CreateFileW成功就转入红色,否则就走绿色出去。
但是这里第三个 call ,直接就把CreateFileW的 HADNLE 关闭了,为什么要关闭呢,难道就是为了要弄出一个文件来么。
倒数第二个call ,根据前面得到的一个结果,给全局指针赋值。
最后一个call ,原子--
我就不明白,这破逼玩意,折腾个什么劲,打开了文件,又关闭文件。
然后上面的主函数直接进右边,一系列函数调用了。。。。
这些是否重要,都尚且未知,但是不一步一步走下去,真的不知道万一丢了哪个怎么办,而且还不能动态跟踪。。。
好累。。。静态分析汇编代码是最累的。。。。
没有源码,没有符号,毛提示都没有。。。。我继续。。。。