首页
社区
课程
招聘
[求助]一个用来学习的DLL,附带调用示例,求高手破出内部逻辑
发表于: 2013-3-16 19:02 7386

[求助]一个用来学习的DLL,附带调用示例,求高手破出内部逻辑

2013-3-16 19:02
7386
百思而无法搞定,只好求救高手们,既可以静态也可以动态,其实或许不算太复杂。

dll不大,只有58K,中有两个函数(其实,不止2个,只是需要破这两个)

致谢imyang补充说明:这个就是一个大概vc开发的nomfc纯算法的dll。动态调试的话,可以在任何一个开发环境下,加载dll,然后用我在帖子中的调用方式,就可以观察。最后返回结果匹配就是正确的。有个奇怪的就是,调用的只有14个参数,imyang这个朋友给出了17个,这个很奇怪。不过,确实有几个参数是不用的,只是形参,但是现在17个参数,得出的结果不太对。恳请各位高手搞定这个奇怪的问题。

函数名与参数:

double Proc3(double a0, double a1, int a2, int a3, double a4, int a5, int a6, int a7, int a8, int a9, double a10, double a11, double a12, double a13);

double Proc4(double a0, double a1, int a2, int a3, double a4, int a5, int a6, int a7, int a8, int a9, double a10, double a11, double a12, double a13);

调用方法:

   double a=Proc3(1,10,8,2,2,-1,10000,3,7,37,13,-23,-90,67);
   double b=Proc4(1,10,8,2,2,-1,10000,3,7,37,13,-23,-90,67);
  
返回结果:
  a -70
  b -6

函数内部,只有加减乘除,以及比较大小,只有if  else,没有更复杂的语句了。

谢谢各位高手。如果有破解好,可否附带上过程,正好用于学习。

附件为一个dll,解压缩就是。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 6003
活跃值: (3490)
能力值: ( LV6,RANK:96 )
在线值:
发帖
回帖
粉丝
2
double __stdcall Proc1(int a1, int a2, double a3, double a4, int a5, int a6, double a7, int a8, int a9, int a10, int a11, int a12, int a13)
{
  double result; // st7@2
  int v14; // [sp+0h] [bp-8h]@1

  sub_10001090(&v14);
  if ( a1 )
  {
    result = (double)(a6 + a5) * a7 + a4;
  }
  else
  {
    v14 = a6 + a5;
    result = (double)(a6 + a5) * a7 + a3;
  }
  return result;
}

double __stdcall Proc2(int a1, int a2, int a3, int a4, int a5, int a6, int a7, signed int a8, double a9, int a10, int a11, double a12, double a13)
{
  double v13; // st7@1
  double result; // st7@2
  int v15; // [sp+0h] [bp-8h]@1

  sub_10001090(&v15);
  v13 = (double)a8 * a9;
  if ( a2 )
    result = a13 - v13;
  else
    result = a12 - v13;
  return result;
}

double __stdcall Proc3(double a1, int a2, int a3, int a4, int a5, double a6, int a7, int a8, int a9, int a10, int a11, double a12, int a13, int a14, double a15, int a16, int a17)
{
  double v17; // st7@1
  double result; // st7@4
  int v19; // [sp+0h] [bp-8h]@1

  sub_10001090(&v19);
  v19 = a5 + a4;
  v17 = (double)(a5 + a4) * a6;
  if ( a7 && a1 <= a12 && a8 > a10 )
    result = v17 + a15;
  else
    result = v17 + a1;
  return result;
}
double __stdcall Proc4(int a1, int a2, double a3, signed int a4, int a5, double a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, double a14, int a15, int a16, double a17)
{
  double v17; // st7@1
  double v18; // st5@1
  double result; // st7@4
  int v20; // [sp+0h] [bp-8h]@1

  sub_10001090(&v20);
  v17 = (double)a4 * a6;
  v18 = a3 - v17;
  if ( a7 )
  {
    if ( a3 < a14 || a9 <= a11 )
      result = v18;
    else
      result = a17 - v17;
  }
  else
  {
    result = v18;
  }
  return result;
}

2013-3-16 19:45
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
高手,不至于这么快吧!跪谢了。
2013-3-16 19:56
0
雪    币: 114
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这是F5吧
2013-3-16 21:07
0
雪    币: 496
活跃值: (286)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
5

F5已烂
2013-3-16 21:13
0
雪    币: 6003
活跃值: (3490)
能力值: ( LV6,RANK:96 )
在线值:
发帖
回帖
粉丝
6
楼上2位说得对,这就是F5
2013-3-16 22:45
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
非常感谢你。

我仔细对比了,可是发现一个问题,或许值得研究一下,为什么参数不一样,另外,程序运行结果也不同。是不是dll中设置了奇怪的东西。主要就是proc4,proc3有出入。

恳请继续看看,好么?
2013-3-17 06:47
0
雪    币: 20907
活跃值: (4100)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
这个dll是做什么的?
Metatrader?
需要注册吗?
demo有什么限制?

看了一下,里面有InitDll(HWND hWnd),你用了吗?
2013-3-17 09:17
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
对,看来也是高人啊。

init那个不需要用。这是看到一个ea里的dll,想了解其算法。

现在确实有点问题过不去,就是把dll直接运行,运行结果帖子中有,与汇编出来的代码有出入。
2013-3-17 09:33
0
雪    币: 20907
活跃值: (4100)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
InitDll里面会设定很多global variables 可能会影响proc3 proc4的运算结果。你可以调试,看看initdll有没有被调用。
只是建议。可以说说是什么软件吗?谢谢。
2013-3-17 10:32
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢啊,就是metatrader软件啊。这个dll主要是学习阶段一个练手,结果第一个就遇到障碍了,郁闷。好像初始化函数确实没用过,而且我也不太会啊,可否请你也reverse一下?或者悄悄话。
2013-3-17 10:47
0
雪    币: 6003
活跃值: (3490)
能力值: ( LV6,RANK:96 )
在线值:
发帖
回帖
粉丝
12
我错了, 我发现IDA直接F5的C源码把有些double类型的参数,转成两个int类型了.
2013-3-17 16:28
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不错,学习了,期待贴出最终结果。
2013-3-17 16:46
0
游客
登录 | 注册 方可回帖
返回
//