Finddll.c - searches are running processes For module occurrency

/*



DLL OCCURENCY FINDER UTILITY

it simply searches in all running process for <DLL_NAME> occurency.



Very useful with malware detecting/removing. Imagine you

find a dll which you can't delete and you need to know

which process is running it...



coded by Piotr Bania <bania.piotr@gmail.com>



Sample usage:



  E:/projekty/finddll/Debug>finddll jar50.dll



....

[+] Searching in ping.exe (PID=0x564) for module occurency.

[+] Searching in firefox.exe (PID=0xFC4) for module occurency.





--- MODULE OCCURENCY FOUND ---

[+] jar50.dll found in firefox.exe (PID=0xFC4)

[+] jar50.dll base located at: 0x023c0000

[+] jar50.dll handle in process: 0x23C0000

[+] jar50.dll size of module: 0xD000 bytes

[+] jar50.dll path: C:/Program Files/Mozilla Firefox/components/jar50.dll



--- PRESS ANY KEY TO CONTINUE ---

....



*/



#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <windows.h>

#include <Tlhelp32.h>



int find_dll(char *filename);

void display_info(PROCESSENTRY32 pe32,MODULEENTRY32 me32);



int c=0;



int main(int argc, char *argv[]) {





printf("[$] dll occurency finder utility /n");

printf("[$] coded by Piotr Bania <bania.piotr@gmail.com/n/n");

if (argc!=2) {

printf("[!] Usage: %s <dll_name>/n",argv[0]);

printf("[!] For example: %s KERNEL32.DLL/n",argv[0]);

return 0;

}



find_dll(argv[1]);



printf("/n[+] Scaning ended, found %d occurences./n",c);

printf("Bye :)/n");

getch();



return 0;

}





void display_info(char *filename,PROCESSENTRY32 pe32,MODULEENTRY32 me32) {





printf("/n 

--- MODULE OCCURENCY FOUND ---/n");

printf("[+] %s found in %s (PID=0x%X)/n",filename,pe32.szExeFile,pe32.th32ProcessID);

printf("[+] %s base located at: 0x%08x/n",filename,me32.modBaseAddr);

printf("[+] %s handle in process: 0x%X/n",filename,me32.hModule);

printf("[+] %s size of module: 0x%X bytes/n",filename,me32.modBaseSize);

printf("[+] %s path: %s/n",filename,me32.szExePath);

printf(" 

--- PRESS ANY KEY TO CONTINUE ---/n/n");

c++;



// super pseudo randomization fatal exit *:)*

if (getch()==27) exit(GetTickCount());

}





int find_dll(char *filename) {

HANDLE hSnap,hMSnap;

PROCESSENTRY32 pe32;

MODULEENTRY32 me32;



hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);



if (hSnap==INVALID_HANDLE_VALUE) {

printf("[!] Error: Cannot create snapshot for processes, error=%d/n",GetLastError());

return FALSE;

} 



printf("[+] Snapshot for processes created, handle=0x%X/n",hSnap);



if (Process32First(hSnap,&pe32)==FALSE) {

   printf("[!] Error: Process32First() failed, error=%d/n",GetLastError());

return FALSE;

}



hMSnap=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pe32.th32ProcessID);

if (hMSnap==INVALID_HANDLE_VALUE) {

printf("[!] Error: Cannot create snapshot for modules, error=%d/n",GetLastError());

return FALSE;

}



printf("[+] Searching in %s (PID=0x%X) for module occurency./n",pe32.szExeFile,pe32.th32ProcessID);

if (Module32First(hMSnap,&me32)==NULL) {

printf("[!] Error: Module32First() failed, error=%d/n",GetLastError());

return FALSE;

}





if (!strcmpi(filename,me32.szModule)) display_info(filename,pe32,me32);

while(Module32Next(hMSnap,&me32)!=FALSE) {

if (!strcmpi(filename,me32.szModule)) display_info(filename,pe32,me32);

}

CloseHandle(hMSnap);

//printf("/nNext process/n");



while(Process32Next(hSnap,&pe32)!=NULL) {

hMSnap=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pe32.th32ProcessID);

if (hMSnap==INVALID_HANDLE_VALUE) {

  printf("[!] Error: Cannot create modules snapshot for %s (PID=0x%X), error=%d/n",pe32.szExeFile,pe32.th32ProcessID,GetLastError());

  goto next_process;

}

  

printf("[+] Searching in %s (PID=0x%X) for module occurency./n",pe32.szExeFile,pe32.th32ProcessID);

if (Module32First(hMSnap,&me32)!=NULL) {

  if (!strcmpi(filename,me32.szModule)) display_info(filename,pe32,me32);

  while(Module32Next(hMSnap,&me32)!=FALSE) {

   if (!strcmpi(filename,me32.szModule)) display_info(filename,pe32,me32);

  }

  next_process:

  CloseHandle(hMSnap);

  }

else {

  printf("[!] Error: Cannot creat snapshot for modules, error=%d/n",GetLastError());

  return FALSE; 

}

}   



CloseHandle(hMSnap);

CloseHandle(hSnap);

}

本项目采用C++编程语言结合ROS框架构建了完整的双机械臂控制系统,实现了Gazebo仿真环境下的协同运动模拟,并完成了两台实体UR10工业机器人的联动控制。该毕业设计在答辩环节获得98分的优异成绩,所有程序代码均通过系统性调试验证,保证可直接部署运行。 系统架构包含三个核心模块:基于ROS通信架构的双臂协调控制器、Gazebo物理引擎下的动力学仿真环境、以及真实UR10机器人的硬件接口层。在仿真验证阶段,开发了双臂碰撞检测算法和轨迹规划模块,通过ROS控制包实现了末端执行器的同步轨迹跟踪。硬件集成方面,建立了基于TCP/IP协议的实时通信链路,解决了双机数据同步和运动指令分发等关键技术问题。 本资源适用于自动化、机械电子、人工智能等专业方向的课程实践,可作为高年级课程设计、毕业课题的重要参考案例。系统采用模块化设计理念,控制核心与硬件接口分离架构便于功能扩展,具备工程实践能力的学习者可在现有框架基础上进行二次开发,例如集成视觉感知模块或优化运动规划算法。 项目文档详细记录了环境配置流程、参数调试方法和实验验证数据,特别说明了双机协同作业时的时序同步解决方案。所有功能模块均提供完整的API接口说明,便于使用者快速理解系统架构并进行定制化修改。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值