能力值:
( LV2,RANK:10 )
|
-
-
2 楼
不错。
|
能力值:
( LV15,RANK:500 )
|
-
-
3 楼
最初由 nbw 发布
2、该软件中已经引入了User32.dll,那么无法利用PE工具(至少我见过的,例如PEdit,Stu_pe等)把Messageboxa函数的信息导入到软件中,如果强行按照上面的方法导入User32.dll和Messageboxa,那么新导入的信息可用,但是以前的User32.dll信息无法使用。就是说新添加的Messageboxa是可以用了,但是人家以前导入的Use32.dll中的函数都没办法使用了。导致软件运行不正常;
用LordPE可以.
其实我觉得完美的方法是在资源前面建一个段,将原有的导入表和IAT等都集中在这个段,修改的话先将导入表导出为IMPREC格式,加上需要项目,算好Thunk放置位置,再使用IMPREC重建到新建的段里面,比LordPE弄得好多了.
|
能力值:
(RANK:1060 )
|
-
-
4 楼
kernel32导出messageboxa?楼主睡晕呼了吧:D
|
能力值:
( LV7,RANK:100 )
|
-
-
5 楼
是笔误吧~!
|
能力值:
( LV13,RANK:970 )
|
-
-
6 楼
最初由 forgot 发布 kernel32导出messageboxa?楼主睡晕呼了吧:D 不好意思,确实导不出来。因为Kernel32中没有这个函数。不过凡是Kernel32中有的函数,都可以这么使用。这种方法是正确的。尤其是有些软件只可以在一种OS下面运行,用这方法很简单,也很有创意。
曾半仙大哥说的事情我回去再看看。我好像以前用过。不可以。我再看看。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
支持!
|
能力值:
(RANK:10 )
|
-
-
8 楼
支持!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
最初由 nbw 发布
5、直接利用Kernel32.dll中的函数,这种方法非常罕见........
如何才叫直接利用,能否举例说明一下,thx
|
能力值:
(RANK:300 )
|
-
-
10 楼
最初由 阵雨 发布
如何才叫直接利用,能否举例说明一下,thx
依我的了解
比如说,你看见自己程序的 IAT 里 MessageBox 一项的位置是 00123456h ,这代表当你的程序经由 IAT 呼叫这个 MessageBox API 时,最后会来到 00123456h 。你和别人的程序,也是会来到这里。因为那个是系统 dll,投影在内存里的位置是一致的。
你知道 00123456h 这个位置后,你便可以在别的程序里呼叫 00123456h 来使用 MessageBox
|
能力值:
( LV13,RANK:370 )
|
-
-
11 楼
最初由 nbw 发布 浅谈API函数调用的方法 5、直接利用Kernel32.dll中的函数,这种方法非常罕见。由于Kernel32.dll是系统核心,随时都在运行,可以利用他里面的函数地址。比如说需要用到Messageboxa函数,可以查出来Kernel32.dll中导出的Messageboxa的地址,然后call这个地址就可以了。但是这种方法存在明显缺陷:由于操作系统的不一样(比如XP中就不是Kernel32.dll库),会导致函数地址的不同。这一点需要注意。这种方法是我看Vbin写的病毒的时候发现的,感觉不错。不过我还没用过,要有不便我以后给大家再说。
这哪是什么非常罕见的方法啊?病毒中最基本的技术了,简单得不能再简单,而且一般来说病毒都不会用硬代码的,都是动态获得的。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
老罗 就是牛啊!一眼中的
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
|
能力值:
( LV13,RANK:970 )
|
-
-
14 楼
最初由 luocong 发布
这哪是什么非常罕见的方法啊?病毒中最基本的技术了,简单得不能再简单,而且一般来说病毒都不会用硬代码的,都是动态获得的。 多谢罗大哥指点。
不过这个事情我晓得哇。我是看Vbin写的病毒里面才直到的哇。你想,Vbin写那个病毒的时候都至少一年多了阿。我当时写的时候随便写了写了这个,因为我没看到谁搞DIY的时候用过。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
都说这么隐讳,哎~~~~
给点代码说明一下好不好罗
直接利用Kernel32.dll中的函数,这种方法非常罕见
到底怎么个利用法啊?
难道是
MOV EAX MessageBox
CALL EAX ??
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
最初由 luocong 发布
这哪是什么非常罕见的方法啊?病毒中最基本的技术了,简单得不能再简单,而且一般来说病毒都不会用硬代码的,都是动态获得的。
罗大哥,这个也是一般只找到LoadLibrary跟GetProcAddress这两个吧,其他的就都用这两个函数动态获得了
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
不错 。好贴!
|
能力值:
( LV13,RANK:970 )
|
-
-
18 楼
最初由 阵雨 发布 都说这么隐讳,哎~~~~ 给点代码说明一下好不好罗 直接利用Kernel32.dll中的函数,这种方法非常罕见 到底怎么个利用法啊? 难道是 ........ Kernel32.dll里面没有MessageBox,现在假设里面存在这个函数,你搜索或者查找一下这个函数的地址,假设是: 412345 H,那么,这个地址是不会发生变化的,所以,如果是 call 412345H , 就相当于 call MessageBox 。
但是,这种方法有2个大缺点,首先,受操作系统限制;其次,只能用Kernel32.dll里面的东西,因为这个函数是被操作系统加载的,其他库里面的函数就没这么“优厚待遇”的。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
最初由 nbw 发布
Kernel32.dll里面没有MessageBox,现在假设里面存在这个函数,你搜索或者查找一下这个函数的地址,假设是: 412345 H,那么,这个地址是不会发生变化的,所以,如果是 call 412345H , 就相当于 call MessageBox 。 但是,这种方法有2个大缺点,首先,受操作系统限制;其次,只能用Kernel32.dll里面的东西,因为这个函数是被操作系统加载的,其他库里面的函数就没这么“优厚待遇”的。
这个一般是获得LoadLibrary跟GetProcAddress这两个函数,其他的函数通过这两个函数就可以获得了,其实理论上,只要是这个程序中已经加载的dll中的函数,都可以用搜索内存的方法得到,而不仅是kernel32.dll,还有,这种方法应该是没有操作系统限制的
|
能力值:
(RANK:460 )
|
-
-
20 楼
最初由 nbw 发布 曾半仙大哥说的事情我回去再看看。我好像以前用过。不可以。我再看看。 ........
好久不见半仙的踪迹了,不知道又仙游何处去了。
|
能力值:
( LV13,RANK:970 )
|
-
-
21 楼
最初由 yafeng 发布
这个一般是获得LoadLibrary跟GetProcAddress这两个函数,其他的函数通过这两个函数就可以获得了,其实理论上,只要是这个程序中已经加载的dll中的函数,都可以用搜索内存的方法得到,而不仅是kernel32.dll,还有,这种方法应该是没有操作系统限制的
我头很大,请别在这个问题上争来争去了。大家觉得怎么好,就怎么用吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
最初由 monkeycz 发布
好久不见半仙的踪迹了,不知道又仙游何处去了。
半仙当然是在hanzify混,呵呵
|
能力值:
( LV13,RANK:970 )
|
-
-
23 楼
hanzify是不是商朝子那里?或者韩夫子?
|
能力值:
(RANK:10 )
|
-
-
24 楼
其实都是一个道理,取得实际代码的内存地址,然后jmp到那里执行~~~
不管什么搜索阿,call阿,~~~~嘿嘿
|
能力值:
(RANK:10 )
|
-
-
25 楼
还有,你上面说的那些调用办法,忽略了一种情况,就是API已经被hook了的情况下~
|
|
|