【文章标题】: 抛砖,求转正,无导入表程序的实现以及自我补丁
【文章作者】: 白吃
【作者QQ号】: 79313757
【作者声明】: 我很菜,但我很诚心的想交些朋友。
--------------------------------------------------------------------------------
【详细过程】
感谢看雪分享技术的前辈们的分享让我学习了不少,学习之路无尽头, 学习之中求朋友,我想以此抛个砖,望求一些志同道合的朋友
为什么选择写个远程序控制软件呢?
因为这涉及的知识面比较广(如果服务端很多,怎么去写一个能承受的服务器,或者说有什么办法可以通过web来管理这些机器),我想这应该可以成为一个项目,而且可以用来实践各种技术
我打算能认识几个朋友,把源码放到github或者oschina上,大家一起玩。
还有就是建个群,对于提交源码和对此感兴趣的朋友可在群里一起讨论。如觉得可行的可以加我。加我注明来自看雪。
简单说下源码:
1.无导入表
通过函数的Hash值来调用函数
2.采用了简单的补丁
就是将代码段设为可写,将原来通过函数Hash寻找函数地址来调用函数的方式,改变成直接调用函数地址的形式,当再次执行到这段代码的时候省去了重新寻找函数地址的麻烦
主要是通过代码里自己实现的_invoke函数来实现.具体见源码里的.imports.inc说明
;举个StdCall的例子,如果是C call处理办法类似(如ntdll.dll里的 memcpy等就是C call的调用方式)
push '23'
push '_2sw'
invoke _invoke, 1, __LoadLibraryA, esp
patch前:
Address Hex dump Command Comments
004019AA |. 68 33320000 PUSH 3233
004019AF |. 68 7773325F PUSH 5F327377
004019B4 |. 54 PUSH ESP
004019B5 |. 68 3274910C PUSH 0C917432 ; /nProcHash = 210859058.
004019BA |. 6A 01 PUSH 1 ; |argc = 1
004019BC |. E8 BE020000 CALL _invoke ; \_invoke
patch后
Address Hex dump Command Comments
004019AA |. 68 33320000 PUSH 3233
004019AF |. 68 7773325F PUSH 5F327377
004019B4 |. 54 PUSH ESP
004019B5 |. B8 7B1D807C MOV EAX,7C801D7B ; /nProcHash => 210859058.
004019BA |. FFD0 CALL EAX ; |argc => 1
004019BC |. 83EC 0C SUB ESP,0C ; \_invoke
004019BF |? 90 NOP
004019C0 |? 90 NOP
004019C1 |. 83C4 0C ADD ESP,0C
3.只实现了一个cmd shell的功能, 更多的请看源码吧。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2014年01月17日 13:37:17
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法