{"id":10333,"date":"2026-02-21T20:23:40","date_gmt":"2026-02-21T20:23:40","guid":{"rendered":"https:\/\/www.hexacorn.com\/blog\/?p=10333"},"modified":"2026-02-21T20:23:40","modified_gmt":"2026-02-21T20:23:40","slug":"1-little-known-secret-of-sti_ci-dll","status":"publish","type":"post","link":"https:\/\/www.hexacorn.com\/blog\/2026\/02\/21\/1-little-known-secret-of-sti_ci-dll\/","title":{"rendered":"1 little known secret of sti_ci.dll"},"content":{"rendered":"\n<p>In 2017 I posted about sideloading of <a href=\"https:\/\/www.hexacorn.com\/blog\/2017\/10\/20\/imagingdevices-yet-another-os-native-side-loading-program\/\" data-type=\"post\" data-id=\"4355\">sti_ci.dll<\/a>. And it&#8217;s that DLL itself that executes the <em>InstallWiaDevice<\/em> installation command mentioned in that post&#8230;<\/p>\n\n\n\n<p>How?<\/p>\n\n\n\n<p>Via its export function called&#8230; InstallWiaDevice.<\/p>\n\n\n\n<p>It turns out that we can launch this API directly via <em>rundll32.exe<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rundll32.exe sti_ci.dll, InstallWiaService<\/pre>\n\n\n\n<p>When executed, the API runs a number of programs:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">regsvr32.exe \/s wiaservc.dll<br>regsvr32.exe \/s sti.dll<br>regsvr32 \/s C:\\WINDOWS\\syswow64\\sti.dll<br>regsvr32.exe \/s wiadefui.dll<br>wiaacmgr.exe \/RegServer<br>regsvr32.exe \/s wiashext.dll<br>regsvr32.exe \/s camocx.dll<br>regsvr32.exe \/s photowiz.dll<br>regsvr32.exe \/s wiavusd.dll<br>regsvr32.exe \/s wiasf.ax<\/pre>\n\n\n\n<p>Obviously, this creates a number of new possible lolbin opportunities. The only challenge is that since the <em>rundll32.exe<\/em> is executed from the system32 directory, the program will look for <em>regsvr32.exe<\/em>, <em>wiaacmgr.exe<\/em> there first, same as for the listed DLLs.<\/p>\n\n\n\n<p>To bypass it, one could copy <em>rundll32.exe<\/em> to a different directory, and launch it from there &#8212; not the most elegant solution, but it works.<\/p>\n\n\n\n<p>Bonus:<\/p>\n\n\n\n<p>The <em>sti_ci.dll<\/em> library logs executed commands in a <em>wiatrace.log<\/em> file. It may be located in various places on the system:<\/p>\n\n\n\n<ul>\n<li>%systemroot%\\Debug\\WIA\\wiatrace.log<\/li>\n\n\n\n<li>c:\\Users\\&lt;user>\\AppData\\Local\\VirtualStore\\Windows\\debug\\WIA\\wiatrace.log<\/li>\n<\/ul>\n\n\n\n<p>Example entries look like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.hexacorn.com\/blog\/wp-content\/uploads\/2026\/02\/sti_ci1.png\"><img decoding=\"async\" src=\"https:\/\/www.hexacorn.com\/blog\/wp-content\/uploads\/2026\/02\/sti_ci1.png\" alt=\"\" class=\"wp-image-10334\" width=\"512\" srcset=\"https:\/\/www.hexacorn.com\/blog\/wp-content\/uploads\/2026\/02\/sti_ci1.png 849w, https:\/\/www.hexacorn.com\/blog\/wp-content\/uploads\/2026\/02\/sti_ci1-300x122.png 300w, https:\/\/www.hexacorn.com\/blog\/wp-content\/uploads\/2026\/02\/sti_ci1-768x312.png 768w, https:\/\/www.hexacorn.com\/blog\/wp-content\/uploads\/2026\/02\/sti_ci1-500x203.png 500w\" sizes=\"(max-width: 849px) 100vw, 849px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>In 2017 I posted about sideloading of sti_ci.dll. And it&#8217;s that DLL itself that executes the InstallWiaDevice installation command mentioned in that post&#8230; How? Via its export function called&#8230; InstallWiaDevice. It turns out that we can launch this API directly &hellip; <a href=\"https:\/\/www.hexacorn.com\/blog\/2026\/02\/21\/1-little-known-secret-of-sti_ci-dll\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[126,56,64],"tags":[],"_links":{"self":[{"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/posts\/10333"}],"collection":[{"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/comments?post=10333"}],"version-history":[{"count":1,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/posts\/10333\/revisions"}],"predecessor-version":[{"id":10335,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/posts\/10333\/revisions\/10335"}],"wp:attachment":[{"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/media?parent=10333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/categories?post=10333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/tags?post=10333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}