目录存档: 逆向破解

30

C++中自定义结构作为函数参数的内部实现

C++自定义结构可以作为函数参数或返回值,从高级语言的角度来看这是很自然的,不过从汇编的角度想我就有点想不明白,一个复杂的 自定义结构,在作为参数进行函数调用时,参数是怎么传递的呢?以前在用C的时候就考虑过这个问题,不过一直也没深究,现在把这个问题拿出来解决一下。

自定义结构体作为函数参数
传递较为复杂的参数,比较高效的方法是使用指针,但倘若我们的代码里并没有用指针来实现,硬是把结构体作为参数类型,那么C++编译器内部是怎么做的?难道也会隐式地使用指针吗?为了进行调试,我先用C++写了一个小程序,代码如下:
 

#include <iostream>
#include <string>

 

using namespace std;

struct Student {
    char Name[10];
    unsigned short Age;
    int Score;
};

void print_stu_info(Student stu)
{
    cout << "Student Card\n"
            "Name: &

[……]阅读全文

21

[迅雷XV转换器] XVE7s简单分析

等了很久的《轩辕剑》,近期终于开播了(有同追的大牛么= =)~在网上找了找,貌似只有迅雷那里有比较高清的版本(转录的TV版720P),但下载回来发现格式是.xv而非常见的视频格式,迅雷为了“垄断片 源”,自创.xv视频格式,只能由迅雷看看播放器播放,对于我这种伪完美主义者~当然不肯轻易就范了

 

于是在网上找迅雷XV格式转换器,搜了一下发现还真有这东西,很简单的一个小程序,目前的最新版叫XVE7s,作者是“伪红学家”,地址:http://tiancaihb.ixiezi.com/2012/06/19/xve7/

 

这个版本的XVE还新加了个“一秒转换”功能,听起来很强大,下载试了下,很有效,的确是秒速把.xv转换成了.flv。当然了,速度这么快是直接对原始xv文件覆盖写入的(不然光copy一份就要好久呢)。

 

感觉这个小程序很神奇,也很简洁,习惯性拖IDA看了下,没多少sub,刨去MFC框架估计核心代码不会很多(真的很少- -!!),于是就动手分析了一下~

 

暂时只逆了1秒转换部分,支持flv,普通模式还没看。

.text:004015A8                 mov     eax, [esp+11B8h+bIsFastConv]
.text:004015AF &

[……]阅读全文

21

[DLLHijack恶意程序] LPK.DLL完整逆向

最近闲得无聊,时间都是碎片化的,毫无心情Coding

逛了逛卡饭,到病毒样本区里随便找了个小玩意Lpk.dll!看名字就知道这货是DLLHijack,体积不大没壳,正适合我这种菜鸟-_-于是下载下来仍IDA里练手

虽然没几个sub,不过还是用了我很长时间才把完整代码逆出来,因为目的是练习所以没用F5,逆完后感觉还是学到了点东西,希望下一次能有进步!!最后除了除错可以编译通过并生成mylpk.dll,不过导出表貌似没处理好,函数转发体力活懒得详细搞了生成后还得再自己添加俩资源

这个玩意貌似没啥实际作用。。释放自身到temp目录。。然后再复制自身到所有含.EXE的目录确保持久感染。。弄了个Event做线程同步,还有几个变量来回用感觉像是全局共享的于是我就pragmadata_seg(shareddata)了一下= =

.IDB+PROJECT+.DLL下载地址:http://naylon.0ginr.com/download/lpk.dll

完整逆向代码(356 Lines):

#include <stdio.h>
#include <windows.h>
#include "Shlwapi.h"

#pragma data_seg("shareddata")    
HMODULE gshModule;
HANDLE gshThread;
HANDLE gshEvent;
#pragma data_

[……]阅读全文